Skip to main content

🚀 OpenAI API Reverse Proxy · ChatGPT API Proxy

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 docker image size tests pypi downloads codecov

本项目是大模型与用户层之间的一道转发服务,可用于搭建反向代理,自定义API KEY,请求速率限制,token速率限制等.

由本项目搭建的长期代理地址:

https://api.openai-forward.com
https://render.openai-forward.com
https://cloudflare.page.openai-forward.com
https://vercel.openai-forward.com

特色

  • 万能转发: 支持转发OpenAI所有接口以及SSE流式响应
  • 支持指定转发路由前缀
  • 自定义转发api key
  • 流式响应对话日志
  • 多接口转发
  • 请求速率限制(RPM)
  • 流式返回的token速率限制(TPM)

部署指南

👉 部署文档

提供以下几种部署方式
有海外vps方案

  1. pip 安装部署
  2. Docker部署

无vps免费部署方案

  1. Railway部署
  2. Render一键部署

下面的部署仅提供单一转发功能

  1. 一键Vercel部署
  2. cloudflare部署

应用

聊天应用

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

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

在代码中使用

Python

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

JS/TS

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

gpt-3.5-turbo

curl https://api.openai-forward.com/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.com/v1/images/generations' \
--header 'Authorization: Bearer sk-******' \
--header 'Content-Type: application/json' \
--data '{
    "prompt": "A photo of a cat",
    "n": 1,
    "size": "512x512"
}'

配置

配置的设置方式支持两种
一种为在命令行中执行aifd run 的运行参数(如--port=8000)中指定;
另一种为读取环境变量的方式指定。

命令行参数

可通过 aifd run --help 查看

Click for more details

aifd run参数配置项

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

环境变量配置项

支持从运行目录下的.env文件中读取
配置示例见根目录下的.env.example

环境变量 说明 默认值
OPENAI_BASE_URL 默认 openai官方 api 地址 https://api.openai.com
OPENAI_ROUTE_PREFIX openai(接口格式)路由前缀 /
OPENAI_API_KEY 默认openai api key,支持多个默认api key, 以 sk- 开头, 以逗号分隔
FORWARD_KEY 允许调用方使用该key代替openai api key,支持多个forward key, 以逗号分隔; 如果设置了OPENAI_API_KEY,而没有设置FORWARD_KEY, 则客户端调用时无需提供密钥, 此时出于安全考虑不建议FORWARD_KEY置空
EXTRA_BASE_URL 额外转发服务地址
EXTRA_ROUTE_PREFIX 额外转发服务路由前缀
LOG_CHAT 是否记录聊天内容 false

设置openai api_key为自定义的forward key

Click for more details

需要配置 OPENAI_API_KEY 和 FORWARD_KEY, 如

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

用例:

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

多路由转发

支持转发不同地址的服务至同一端口的不同路由下,基本可以转发任何服务。
用例见 .env.example

对话日志

默认不记录对话日志,若要开启需设置环境变量LOG_CHAT=true

Click for more details

保存路径在当前目录下的Log/chat路径中。
记录格式为

{'messages': [{'user': 'hi'}], 'model': 'gpt-3.5-turbo', 'forwarded-for': '', 'uid': '467a17ec-bf39-4b65-9ebd-e722b3bdd5c3', 'datetime': '2023-07-18 14:01:21'}
{'assistant': 'Hello there! How can I assist you today?', 'uid': '467a17ec-bf39-4b65-9ebd-e722b3bdd5c3'}
{'messages': [{'user': 'Hello!'}], 'model': 'gpt-3.5-turbo', 'forwarded-for': '', 'uid': 'f844d156-e747-4887-aef8-e40d977b5ee7', 'datetime': '2023-07-18 14:01:23'}
{'assistant': 'Hi there! How can I assist you today?', 'uid': 'f844d156-e747-4887-aef8-e40d977b5ee7'}

转换为json格式:

aifd convert

得到chat.json

[
    {
        "datetime": "2023-07-18 14:01:21",
        "forwarded-for": "",
        "model": "gpt-3.5-turbo",
        "messages": [
            {
                "user": "hi"
            }
        ],
        "assistant": "Hello there! How can I assist you today?"
    },
    {
        "datetime": "2023-07-18 14:01:23",
        "forwarded-for": "",
        "model": "gpt-3.5-turbo",
        "messages": [
            {
                "user": "Hello!"
            }
        ],
        "assistant": "Hi there! How can I assist you today?"
    }
]

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

Uploaded Source

Built Distribution

openai_forward-0.5.0-py3-none-any.whl (20.1 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