搭建OpenAI的API代理服务

本文最后更新于 2024年3月26日 下午

简介

项目地址:https://github.com/easychen/openai-api-proxy

可以部署到docker和云函数的OpenAI API代理

Simple proxy for OpenAi api via a one-line docker command

特色功能

  1. 支持SSE流式输出
  2. 内置文本安全审核(需要配置腾讯云KEY)

NodeJS部署

你可以把 ./app.js 部署到所有支持 nodejs 14+ 的环境,比如云函数和边缘计算平台。

  1. 复制 app.js 和 package.json 到目录
  2. yarn install 安装依赖
  3. node app.js 启动服务

Docker 部署

1
2
docker run -p 9000:9000 easychen/ai.level06.com:latest

Docker 可用环境变量

1
2
3
4
5
6
7
8
PORT: 内部服务端口
PROXY_KEY: 代理访问KEY,用于限制访问. (例如 ss111adad)
TIMEOUT:请求超时时间,默认30000毫秒。(建议配置为 300000)

TENCENT_CLOUD_SID:腾讯云secret_id (不在腾讯云不需要)
TENCENT_CLOUD_SKEY:腾讯云secret_key (不在腾讯云不需要)
TENCENT_CLOUD_AP:腾讯云区域(如:ap-singapore 新加坡) (不在腾讯云不需要)

接口使用方法

  1. 将原来项目中 openai 的请求地址( 比如 https://api.openai.com )中的域名变更为本 proxy 的域名/IP(注意带上端口号)
  2. 如果设置了PROXY_KEY,在 openai 的 key 后加上 :<PROXY_KEY>,如果没有设置,则不需修改。(以冒号凭借)
  3. moderation:true 开启审核,false 关闭审核
  4. moderation_level:high 中断所有审核结果不为 Pass 的句子,low 只中断审核结果为 Block 的句子

说明

  1. 只支持 GET 和 POST 方法的接口,不支持文件相关接口
  2. 当前不支持SSE,因此需要关掉 stream 相关的选项 已支持

客户端使用实例

https://www.npmjs.com/package/chatgpt 为例

1
2
3
4
5
chatApi= new gpt.ChatGPTAPI({
apiKey: 'sk.....:<proxy_key写这里>',
apiBaseUrl: "http://localhost:9001/v1", // 替换代理域名/IP
});

curl 示例

1
2
3
4
5
6
7
8
9

curl https://openai.example.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-key21312:aXmTOTELm0TnWPxdO7g" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'

sk-key21312 为Open AI的密钥

aXmTOTELm0TnWPxdO7g 为你自己部署代理的密钥

HTTPS

可以考虑使用Caddy 套SSL 加密访问。


搭建OpenAI的API代理服务
https://songxwn.com/openai-proxy/
作者
Song
发布于
2023年8月25日
更新于
2024年3月26日
许可协议