专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
四川日报  ·  京东再官宣:全部承担! ·  7 小时前  
四川日报  ·  痛心!电梯突然冲顶,业主当场身亡 ·  2 天前  
四川日报  ·  杨幂,申请强制执行! ·  3 天前  
自贡网  ·  “蓉瘾”犯了怎么办?凤凰山见! ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

Chat2API:将网页版ChatGPT转换为OpenAI API格式的服务!持多账号轮询和多种GPT模型对话!

GitHubStore  · 公众号  ·  · 2024-05-30 10:05

正文

项目简介

🤖 一个简单的 ChatGPT TO API 代理

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

💥 支持 AccessToken 使用账号,支持 GPT-4 GPT-4o GPTs

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

功能

最新版 v1.1.13

已完成

  • 流式、非流式传输

  • 免登录 GPT-3.5 对话

  • GPT-3.5 对话(传入模型名不包含 gpt-4,则默认使用 gpt-3.5,也就是 text-davinci-002-render-sha)

  • GPT-4 对话(传入模型名包含: gpt-4,gpt-4o,gpt-4-moblie 即可使用对应模型,需传入 AccessToken)

  • GPT-4 画图、代码、联网

  • 支持 GPTs(传入模型名:gpt-4-gizmo-g-*)

  • 支持 Team Plus 账号(需传入 team account id)

  • 上传图片、文件(格式为 API 对应格式,支持 URL 和 base64)

  • WebUI(http://127.0.0.1:5005,不支持登录使用)

  • 可作为网关使用,可多机分布部署

  • 多账号轮询,同时支持 AccessToken 和 RefreshToken

  • 请求失败重试,自动轮询下一个 Token

  • Tokens 管理,支持上传、清除

TODO

  • 暂无,欢迎提 issue


Tokens 管理

首先配置环境变量 AUTHORIZATION,然后运行程序。

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

请求时传入 AUTHORIZATION 中你配置的值即可多账号轮询, AUTHORIZATION 可以配置多个值,用英文逗号分隔。


环境变量

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


分类 变量名 示例值 默认值 描述
安全相关 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,多个代理用逗号分隔

ARKOSE_TOKEN_URL https://example.com/token [] 获取 Arkose token 的地址
功能相关 HISTORY_DISABLED true true 是否不保存聊天记录并返回 conversation_id

POW_DIFFICULTY 00003a 00003a 要解决的工作量证明难度,不懂别设置

RETRY_TIMES 3 3 出错重试次数,使用 AUTHORIZATION 会自动轮询下一个账号

ENABLE_GATEWAY true true 是否启用网关模式(WEBUI)

CONVERSATION_ONLY false false 是否直接使用对话接口,如果你用的网关支持自动解决pow和arkose才启用

ENABLE_LIMIT true true 开启后不尝试突破官方次数限制,尽可能防止封号

UPLOAD_BY_URL false false 开启后按照 URL+空格+正文 进行对话,自动解析 URL 内容并上传,多个 URL 用空格分隔

CHECK_MODEL false false 检查账号是否支持传入模型,开启后可以稍微避免4o返回3.5内容,但是会增加请求时延,且并不能解决降智问题


部署

直接部署

git clone https://github.com/LanQian528/chat2apicd chat2apipip install -r requirements.txtpython app.py


Docker 部署

您需要安装 Docker 和 Docker Compose。

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

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

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

mkdir chat2apicd chat2api

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

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

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

docker-compose up -d


使用

  1. 在网页使用,直接访问以下地址,仅支持使用免登 GPT-3.5:

http://127.0.0.1:5005
  1. 使用 API ,支持传入 AccessToken 或 RefreshToken,可用 GPT-4, GPT-4o, GPTs:


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

将你账号的 AccessToken 或 RefreshToken 当作 OpenAI APIKEY 传入。

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

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

  • 传入方式二:Authorization: Bearer ,

如果设置了 AUTHORIZATION 环境变量,可以将设置的值当作 OpenAI APIKEY 传入进行多 Tokens 轮询。

  • AccessToken 获取: chatgpt官网登录后,再打开 https://chatgpt.com/api/auth/session 获取 accessToken 这个值。

  • RefreshToken 获取: 此处不提供获取方法。

  • 免登录 gpt-3.5 无需传入 Token。


ArkoseToken

目前支持外部服务提供 ArkoseToken

推荐使用 docker-compose 方式部署,已内置 Arkose 服务

  1. 设置环境变量 ARKOSE_TOKEN_URL

  2. 在需要 ArkoseToken 的时候,chat2api 会向 ARKOSE_TOKEN_URL 发送 POST 请求







请到「今天看啥」查看全文