中文 | English
OpenAI API 接口转发服务
The fastest way to deploy openai api forwarding
本项目用于解决一些地区无法直接访问OpenAI的问题,将该服务部署在可以正常访问openai
api的服务器上,通过该服务转发OpenAI的请求。即搭建反向代理服务
测试访问:https://caloi.top/openai/v1/chat/completions 将等价于 https://api.openai.com/v1/chat/completions
或者说 https://caloi.top/openai 等价于 https://api.openai.com
- 支持转发OpenAI所有接口
- 支持流式响应
- 实时记录聊天记录(包括流式响应的聊天内容)
- 支持默认api key(多api key 循环调用)
- pip安装部署
- docker部署
- 支持多进程转发
- 支持指定转发路由前缀
- 支持请求IP验证
这里以个人使用该项目搭建好的代理服务 https://caloi.top/openai 为例
基于开源项目ChatGPT-Next-Web搭建自己的chatgpt服务
替换docker启动命令中的 BASE_URL
为我们自己搭建的代理服务地址
docker run -d -p 3000:3000 -e OPENAI_API_KEY="sk-xxx" -e CODE="<your password>" -e BASE_URL="caloi.top/openai" yidadaa/chatgpt-next-web
访问 https://caloi.top 。访问密码为 beidongjiedeguang
JS/TS
import { Configuration } from "openai";
const configuration = new Configuration({
+ basePath: "https://caloi.top/openai/v1",
apiKey: "sk-******",
});
Python
import openai
+ openai.api_base = "https://caloi.top/openai/v1"
openai.api_key = "sk-******"
curl --location 'https://caloi.top/openai/v1/images/generations' \
--header 'Authorization: Bearer sk-******' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "A photo of a cat",
"n": 1,
"size": "512x512"
}'
提供两种服务部署方式,选择一种即可
安装
pip install openai-forward
运行转发服务
可通过--port
指定端口号,默认为8000
,可通过--workers
指定工作进程数,默认为1
openai_forward run --port=9999 --workers=1
服务就搭建完成了,使用方式只需将https://api.openai.com
替换为服务所在端口http://{ip}:{port}
即可。
当然也可以将 OPENAI_API_KEY 作为环境变量传入作为默认api key, 这样客户端在请求相关路由时可以无需在Header中传入Authorization。 带默认api key的启动方式:
OPENAI_API_KEY="sk-xxx" openai_forward run --port=9999 --workers=1
注: 如果既存在默认api key又在请求头中传入了api key,则以请求头中的api key会覆盖默认api key.
docker run --name="openai-forward" -d -p 9999:8000 beidongjiedeguang/openai-forward:latest
将映射宿主机的9999端口,通过http://{ip}:9999
访问服务。
注:同样可以在启动命令中通过-e传入环境变量OPENAI_API_KEY=sk-xxx作为默认api key
替换openai的api地址为该服务的地址即可,如:
https://api.openai.com/v1/chat/completions
替换为
http://{ip}:{port}/v1/chat/completions
openai-forward run
参数配置项
配置项 | 说明 | 默认值 |
---|---|---|
--port | 服务端口号 | 8000 |
--workers | 工作进程数 | 1 |
环境变量配置项
参考项目根目录下.env
文件
环境变量 | 说明 | 默认值 |
---|---|---|
OPENAI_API_KEY | 默认api key,支持多个默认api key, 以空格分割 | 无 |
OPENAI_BASE_URL | 转发base url | https://api.openai.com |
LOG_CHAT | 是否记录聊天内容 | true |
ROUTE_PREFIX | 路由前缀 | 无 |
IP_WHITELIST | ip白名单, 空格分开 | 无 |
IP_BLACKLIST | ip黑名单, 空格分开 | 无 |
保存路径在当前目录下的Log/
路径中。
聊天日志以 chat_
开头, 默认每5轮对话写入一次文件
记录格式为
{'host': xxx, 'model': xxx, 'message': [{'user': xxx}, {'assistant': xxx}]}
{'assistant': xxx}
{'host': ...}
{'assistant': ...}
...