Catalog PyPI
PACKAGE EXPLORERView in registry

ai-forward

PyPI

🚀 OpenAI API Reverse Proxy · ChatGPT API Proxy

apichatgptfastapiforwardingopenaiopenai-apiopenai-proxypythonstreaming-api
Versions collected1
Direct dependencies12From release 0.0.1
Last observed21 Oct, 10:44 UTC

README

Version 0.0.1 documentation

中文 | 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

本项目用于解决一些地区无法直接访问OpenAI的问题,将该服务部署在可以正常访问OpenAI API的(云)服务器上, 通过该服务转发OpenAI的请求。即搭建反向代理服务; 允许输入多个OpenAI API-KEY 组成轮询池; 可自定义二次分发api key.


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

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

功能

基础功能

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

高级功能

  • 允许输入多个openai api key 组成轮询池
  • 自定义 转发api key (见高级配置)
  • 流式响应对话日志
  • 多接口转发

部署指南

👉 部署文档

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

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

    https://api.openai-forward.com

无vps免费部署方案

  1. Railway部署

    https://railway.openai-forward.com

  2. Render一键部署

    https://render.openai-forward.com


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

  1. 一键Vercel部署

    https://vercel.openai-forward.com

  2. cloudflare部署

    https://cloudflare.page.openai-forward.com

应用

聊天应用

基于开源项目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
--openai_base_url同 OPENAI_BASE_URLhttps://api.openai.com
--openai_route_prefix同 OPENAI_ROUTE_PREFIXNone
--api_key同 OPENAI_API_KEYNone
--forward_key同 FORWARD_KEYNone
--extra_base_url同 EXTRA_BASE_URLNone
--extra_route_prefix同 EXTRA_ROUTE_PREFIXNone
--log_chat同 LOG_CHATFalse

环境变量配置项

支持从运行目录下的.env文件中读取

环境变量说明默认值
OPENAI_BASE_URL默认 openai官方 api 地址https://api.openai.com
OPENAI_ROUTE_PREFIXopenai(接口格式)路由前缀/
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由我们自己定义

这里我们配置了FORWARD_KEY为fk-******, 那么后面客户端在调用时只需设置OPENAI_API_KEY为我们自定义的fk-****** 即可。
这样的好处是在使用一些需要输入OPENAI_API_KEY的第三方应用时,我们可以使用自定义的api-keyfk-******, 无需担心真正的OPENAI_API_KEY被泄露。并且可以对外分发fk-******。

用例:

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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.0.113 Aug 202312

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
beidongjiedeguang/openai-forward

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:44 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:fabe42b31183f1435f7d57049a4f1243bc557f3aa9dc33d73b5aa0e2911e3a39