Skip to main content

🚀 Openai api forward · OpenAI 接口转发服务 · stream forwarding

Project description

中文 | English


OpenAI Forward

OpenAI API 接口转发服务
The fastest way to deploy openai api forwarding

PyPI version License Release (latest by date) GitHub repo size docer image size tests pypi downloads codecov

本项目用于解决一些地区无法直接访问OpenAI的问题,将该服务部署在可以正常访问openai api的服务器上,通过该服务转发OpenAI的请求。即搭建反向代理服务


测试访问:https://caloi.top/openai/v1/chat/completions
或者说 https://caloi.top/openai 等价于 https://api.openai.com


目录

功能

基础功能

  • 支持转发OpenAI所有接口
  • 支持流式响应
  • 支持指定转发路由前缀
  • docker部署
  • pip 安装部署

高级功能

  • 实时记录聊天记录(包括流式响应的聊天内容)
  • 支持默认openai api key(多api key 循环调用)
  • 自定义forward api key 代替 openai api key (见高级配置)
  • 支持请求IP验证(IP白名单与黑名单)

应用

这里以个人使用该项目搭建好的代理服务 https://caloi.top/openai 为例

caloi.top

基于开源项目ChatGPT-Next-Web搭建自己的chatgpt服务
替换docker启动命令中的 BASE_URL为我们自己搭建的代理服务地址

docker run -d \
    -p 3000:3000 \
    -e OPENAI_API_KEY="sk-******" \
    -e BASE_URL="caloi.top/openai" \
    -e CODE="<your password>" \
    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-******"

Image Generation (DALL-E):

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

安装

pip install openai-forward

运行转发服务
可通过--port指定端口号,默认为8000

openai_forward run --port=9999 

服务就搭建完成了,使用方式只需将https://api.openai.com 替换为服务所在端口http://{ip}:{port} 即可。

当然也可以将 OPENAI_API_KEY 作为环境变量或--api_key参数传入作为默认api key, 这样客户端在请求相关路由时可以无需在Header中传入Authorization。 带默认api key的启动方式:

openai_forward run --port=9999 --api_key="sk-******"

注: 如果既存在默认api key又在请求头中传入了api key,则以请求头中的api key会覆盖默认api key.

Docker (推荐)

docker run -d -p 9999:8000 beidongjiedeguang/openai-forward:latest 

将映射宿主机的9999端口,通过http://{ip}:9999访问服务。
注:同样可以在启动命令中通过-e传入环境变量OPENAI_API_KEY=sk-xxx作为默认api key

源码部署

git clone https://github.com/beidongjiedeguang/openai-forward.git --depth=1
cd openai-forward

Docker

docker-compose up

pip

pip install -e .
openai-forward run 

服务调用

替换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 默认openai api key,支持多个默认api key, 以 sk- 开头, 以空格分割
FORWARD_KEY 允许调用方使用该key代替openai api key,支持多个forward key, 以fk- 开头, 以空格分割
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': ...}

...

高级配置

设置api_key为自己设置的forward key
需要配置 OPENAI_API_KEY 和 FORWARD_KEY, 例如

OPENAI_API_KEY=sk-*******
FORWARD_KEY=fk-****** # 这里fk-token由我们自己定义

这里我们配置了FORWARD_KEY为fk-******, 那么后面客户端在调用时只需设置OPENAI_API_KEY为我们自定义的fk-****** 即可。
这样的好处是在使用一些需要输入OPENAI_API_KEY的第三方应用时,我们可以使用fk-******搭配proxy使用(如下面的例子) 而无需担心OPENAI_API_KEY被泄露。

用例:

curl https://caloi.top/openai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fk-mytoken-abcd" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Python

  import openai
+ openai.api_base = "https://caloi.top/openai/v1"
- openai.api_key = "sk-******"
+ openai.api_key = "fk-******"

Web application

docker run -d \
    -p 3000:3000 \
    -e OPENAI_API_KEY="fk-******" \
    -e BASE_URL="caloi.top/openai" \
    -e CODE="<your password>" \
    yidadaa/chatgpt-next-web 

Backer and Sponsor

License

Openai-forward is licensed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openai_forward-0.1.9.tar.gz (12.4 kB view hashes)

Uploaded Source

Built Distribution

openai_forward-0.1.9-py3-none-any.whl (14.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page