可以将网络上的 ChatGPT 转换为 OpenAI API 格式的服务。
Go to file
LanQian a63a90cec9
Some checks failed
Build Docker Image / main (push) Has been cancelled
Merge pull request #247 from lanqian528/dev
v1.8.8-beta2 image 2api
2025-03-28 15:56:55 +08:00
.github/workflows v1.5.11 latest 2024-10-27 21:16:07 +08:00
api v1.7.9-beta3 update o3-mini 2025-02-01 10:31:53 +08:00
chatgpt v1.8.8-beta2 image 2api 2025-03-28 15:36:21 +08:00
docs v1.5.11 Update README.md 2024-10-27 21:55:57 +08:00
gateway v1.8.7-beta3 update UI 2025-03-26 20:14:27 +08:00
templates v1.8.7-beta3 update UI 2025-03-26 20:14:27 +08:00
utils v1.8.2 update UI & fix bugs 2025-03-05 11:34:12 +08:00
.dockerignore feat:随机生成新ua,与tokens对应 2024-10-24 20:11:40 +08:00
.env.example v1.6.6-beta3 fix bugs 2024-11-02 12:52:15 +08:00
.gitignore feat:随机生成新ua,与tokens对应 2024-10-24 20:11:40 +08:00
app.py v1.7.0-beta1 2024-11-06 03:03:58 +08:00
docker-compose-warp.yml Update docker-compose-warp.yml 2024-12-09 09:43:11 +08:00
docker-compose.yml v1.5.9 merge pr 2024-10-27 09:41:31 +08:00
Dockerfile fix tls 2024-04-18 03:03:42 +08:00
LICENSE upload README 2024-04-05 05:11:25 +08:00
README.md v1.8.3-beta1 fix language setup 2025-03-05 15:12:13 +08:00
requirements.txt v1.8.6-beta1 2025-03-23 22:30:49 +08:00
version.txt v1.8.8-beta2 image 2api 2025-03-28 15:36:21 +08:00

CHAT2API

🤖 一个简单的 ChatGPT TO API 代理

🌟 无需账号即可使用免费、无限的 GPT-3.5

💥 支持 AccessToken 使用账号,支持 O3-mini/highO1/mini/ProGPT-4/4o/miniGPTs

🔍 回复格式与真实 API 完全一致,适配几乎所有客户端

👮 配套用户管理端Chat-Share使用前需提前配置好环境变量ENABLE_GATEWAY设置为TrueAUTO_SEED设置为False

交流群

https://t.me/chat2api

要提问请先阅读完仓库文档,尤其是常见问题部分。

提问时请提供:

  1. 启动日志截图(敏感信息打码,包括环境变量和版本号)
  2. 报错的日志信息(敏感信息打码)
  3. 接口返回的状态码和响应体

功能

最新版本号存于 version.txt

逆向API 功能

  • 流式、非流式传输
  • 免登录 GPT-3.5 对话
  • GPT-3.5 模型对话(传入模型名不包含 gpt-4则默认使用 gpt-3.5,也就是 text-davinci-002-render-sha
  • GPT-4 系列模型对话(传入模型名包含: gpt-4gpt-4ogpt-4o-minigpt-4-moblie 即可使用对应模型,需传入 AccessToken
  • O1 系列模型对话(传入模型名包含 o1-previewo1-mini 即可使用对应模型,需传入 AccessToken
  • GPT-4 模型画图、代码、联网
  • 支持 GPTs传入模型名gpt-4-gizmo-g-*
  • 支持 Team Plus 账号(需传入 team account id
  • 上传图片、文件(格式为 API 对应格式,支持 URL 和 base64
  • 可作为网关使用,可多机分布部署
  • 多账号轮询,同时支持 AccessTokenRefreshToken
  • 请求失败重试,自动轮询下一个 Token
  • Tokens 管理,支持上传、清除
  • 定时使用 RefreshToken 刷新 AccessToken / 每次启动将会全部非强制刷新一次每4天晚上3点全部强制刷新一次。
  • 支持文件下载,需要开启历史记录
  • 支持 O3-mini/highO1/mini/Pro 等模型推理过程输出

官网镜像 功能

  • 支持官网原生镜像
  • 后台账号池随机抽取,Seed 设置随机账号
  • 输入 RefreshTokenAccessToken 直接登录使用
  • 支持 O3-mini/highO1/mini/ProGPT-4/4o/mini
  • 敏感信息接口禁用、部分设置接口禁用
  • /login 登录页面,注销后自动跳转到登录页面
  • /?token=xxx 直接登录, xxx 为 RefreshTokenAccessTokenSeedToken (随机种子)
  • 支持不同 SeedToken 会话隔离
  • 支持 GPTs 商店
  • 支持 DeepReaserchCanvas 等官网独有功能
  • 支持切换各国语言

TODO

  • 暂无,欢迎提 issue

逆向API

完全 OpenAI 格式的 API ,支持传入 AccessTokenRefreshToken,可用 GPT-4, GPT-4o, GPT-4o-Mini, GPTs, O1-Pro, O1, O1-Mini, O3-Mini, O3-Mini-High

curl --location 'http://127.0.0.1:5005/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{Token}}' \
--data '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "stream": true
   }'

将你账号的 AccessTokenRefreshToken 作为 {{ Token }} 传入。 也可填写你设置的环境变量 Authorization 的值, 将会随机选择后台账号

如果有team账号可以传入 ChatGPT-Account-ID,使用 Team 工作区:

  • 传入方式一: headers 中传入 ChatGPT-Account-ID

  • 传入方式二: Authorization: Bearer <AccessToken 或 RefreshToken>,<ChatGPT-Account-ID>

如果设置了 AUTHORIZATION 环境变量,可以将设置的值作为 {{ Token }} 传入进行多 Tokens 轮询。

  • AccessToken 获取: chatgpt官网登录后再打开 https://chatgpt.com/api/auth/session 获取 accessToken 这个值。
  • RefreshToken 获取: 此处不提供获取方法。
  • 免登录 gpt-3.5 无需传入 Token。

Tokens 管理

  1. 配置环境变量 AUTHORIZATION 作为 授权码 ,然后运行程序。

  2. 访问 /tokens 或者 /{api_prefix}/tokens 可以查看现有 Tokens 数量,也可以上传新的 Tokens ,或者清空 Tokens。

  3. 请求时传入 AUTHORIZATION 中配置的 授权码 即可使用轮询的Tokens进行对话

tokens.png

官网原生镜像

  1. 配置环境变量 ENABLE_GATEWAYtrue,然后运行程序, 注意开启后别人也可以直接通过域名访问你的网关。

  2. 在 Tokens 管理页面上传 RefreshTokenAccessToken

  3. 访问 /login 到登录页面

login.png

  1. 进入官网原生镜像页面使用

chatgpt.png

环境变量

每个环境变量都有默认值,如果不懂环境变量的含义,请不要设置,更不要传空值,字符串无需引号。

分类 变量名 示例值 默认值 描述
安全相关 API_PREFIX your_prefix None API 前缀密码,不设置容易被人访问,设置后需请求 /your_prefix/v1/chat/completions
AUTHORIZATION your_first_authorization,
your_second_authorization
[] 你自己为使用多账号轮询 Tokens 设置的授权码,英文逗号分隔
AUTH_KEY your_auth_key None 私人网关需要加auth_key请求头才设置该项
请求相关 CHATGPT_BASE_URL https://chatgpt.com https://chatgpt.com ChatGPT 网关地址,设置后会改变请求的网站,多个网关用逗号分隔
PROXY_URL http://ip:port,
http://username:password@ip:port
[] 全局代理 URL出 403 时启用,多个代理用逗号分隔
EXPORT_PROXY_URL http://ip:port
http://username:password@ip:port
None 出口代理 URL防止请求图片和文件时泄漏源站 ip
功能相关 HISTORY_DISABLED true true 是否不保存聊天记录并返回 conversation_id
POW_DIFFICULTY 00003a 00003a 要解决的工作量证明难度,不懂别设置
RETRY_TIMES 3 3 出错重试次数,使用 AUTHORIZATION 会自动随机/轮询下一个账号
CONVERSATION_ONLY false false 是否直接使用对话接口,如果你用的网关支持自动解决 POW 才启用
ENABLE_LIMIT true true 开启后不尝试突破官方次数限制,尽可能防止封号
UPLOAD_BY_URL false false 开启后按照 URL+空格+正文 进行对话,自动解析 URL 内容并上传,多个 URL 用空格分隔
SCHEDULED_REFRESH false false 是否定时刷新 AccessToken 开启后每次启动程序将会全部非强制刷新一次每4天晚上3点全部强制刷新一次。
RANDOM_TOKEN true true 是否随机选取后台 Token ,开启后随机后台账号,关闭后为顺序轮询
网关功能 ENABLE_GATEWAY false false 是否启用网关模式,开启后可以使用镜像站,但也将会不设防
AUTO_SEED false true 是否启用随机账号模式,默认启用,输入seed后随机匹配后台Token。关闭之后需要手动对接接口,来进行Token管控。

部署

Zeabur 部署

Deploy on Zeabur

直接部署

git clone https://github.com/LanQian528/chat2api
cd chat2api
pip install -r requirements.txt
python app.py

Docker 部署

您需要安装 Docker 和 Docker Compose。

docker run -d \
  --name chat2api \
  -p 5005:5005 \
  lanqian528/chat2api:latest

(推荐,可用 PLUS 账号) Docker Compose 部署

创建一个新的目录,例如 chat2api并进入该目录

mkdir chat2api
cd chat2api

在此目录中下载库中的 docker-compose.yml 文件:

wget https://raw.githubusercontent.com/LanQian528/chat2api/main/docker-compose-warp.yml

修改 docker-compose-warp.yml 文件中的环境变量,保存后:

docker-compose up -d

常见问题

  • 错误代码:
    • 401:当前 IP 不支持免登录,请尝试更换 IP 地址,或者在环境变量 PROXY_URL 中设置代理,或者你的身份验证失败。
    • 403:请在日志中查看具体报错信息。
    • 429:当前 IP 请求1小时内请求超过限制请稍后再试或更换 IP。
    • 500:服务器内部错误,请求失败。
    • 502:服务器网关错误,或网络不可用,请尝试更换网络环境。
  • 已知情况:
    • 日本 IP 很多不支持免登,免登 GPT-3.5 建议使用美国 IP。
    • 99%的账号都支持免费 GPT-4o ,但根据 IP 地区开启,目前日本和新加坡 IP 已知开启概率较大。
  • 环境变量 AUTHORIZATION 是什么?
    • 是一个自己给 chat2api 设置的一个身份验证,设置后才可使用已保存的 Tokens 轮询,请求时当作 APIKEY 传入。
  • AccessToken 如何获取?

License

MIT License