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://api.openai-forward.top

目录

功能

基础功能

  • 支持转发OpenAI所有接口
  • 支持流式响应
  • 支持指定转发路由前缀
  • docker部署
  • pip 安装部署
  • vercel 一键个人免费部署 Deploy with Vercel
  • cloudflare 部署

高级功能

  • 实时记录聊天记录(包括流式响应的聊天内容)
  • 允许输入多个openai api key 组成轮询池
  • 自定义 api key (见高级配置)
  • 支持请求IP验证(IP白名单与黑名单)

部署指南

提供四种部署方式

  1. vps + pip 安装部署 (推荐)
  2. vps + Docker (推荐)

    https://api.openai-forward.top

  3. 一键Vercel部署 (目前不推荐)

    https://vercel.openai-forward.top

  4. cloudflare部署 (推荐)

    https://cloudflare.openai-forward.top

应用

聊天应用

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

docker run -d \
    -p 3000:3000 \
    -e OPENAI_API_KEY="sk-******" \
    -e BASE_URL="https://api.openai-forward.top" \
    -e CODE="kunyuan" \
    yidadaa/chatgpt-next-web 

这里部署了一个,供大家轻度使用:
https://chat.beidongjiedeguang.top , 访问密码: kunyuan

在代码中使用

JS/TS

  import { Configuration } from "openai";
  
  const configuration = new Configuration({
+ basePath: "https://api.openai-forward.top/v1",
  apiKey: "sk-******",
  });

Python

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

gpt-3.5-turbo

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

Image Generation (DALL-E)

curl --location 'https://api.openai-forward.top/v1/images/generations' \
--header 'Authorization: Bearer sk-******' \
--header 'Content-Type: application/json' \
--data '{
    "prompt": "A photo of a cat",
    "n": 1,
    "size": "512x512"
}'

配置选项

openai-forward run参数配置项

配置项 说明 默认值
--port 服务端口号 8000
--workers 工作进程数 1

更多参数 openai-forward run --help 查看

环境变量配置项
支持从运行目录下的.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黑名单, 空格分开

高级配置

设置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://api.openai-forward.top/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fk-******" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Python

  import openai
+ openai.api_base = "https://api.openai-forward.top/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="https://api.openai-forward.top" \
    -e CODE="<your password>" \
    yidadaa/chatgpt-next-web 

聊天日志

保存路径在当前目录下的Log/路径中。
聊天日志以 chat_开头, 默认每5轮对话写入一次文件
记录格式为

{'host': xxx, 'model': xxx, 'message': [{'user': xxx}, {'assistant': xxx}]}
{'assistant': xxx}

{'host': ...}
{'assistant': ...}

...

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.2.1.tar.gz (12.2 kB view hashes)

Uploaded Source

Built Distribution

openai_forward-0.2.1-py3-none-any.whl (14.7 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