免费部署自己的ChatGPT API
Last updated on July 1, 2023 am
知周所众,ChatGPT有两种用法:
- 网页版: 频率限制宽,免费,但是有 Cloudflare 检测,不稳定
- API:兼容各种服务,稳定,但免费版频率限制严,不适合像我这样的穷逼使用
然而,例如 Openai Translator 这样的服务,需要使用 API ,所以我一直在等待一个能把网页版转换成 API 的项目。之前一段时间我终于等到了这个项目 ChatGPT to API。
但是实践之后发现这个项目的文档不是十分完整,对于小白来说还是有一定的难度,所以我写了一个脚本来帮助大家快速部署。这个脚本可以帮你部署在 Docker 上,也可以帮你部署在宿主机上,同时我还通过一些方法绕过了 Cloudflare,所以不必担心出现 Access Denied 的情况。
特性
原项目功能:
- 基于网页版的逆向工程实现了一个本地的 Fake API
- 支持调用网页版支持的所有模型(当然 GPT-4 需要你是 Plus)
- 支持多用户,从而防止触发频率限制
我增加的功能:
- 实现了账号密码自动获取 access_token,并在到期后自动刷新新的 access_token(仅限账号密码登录,谷歌和微软登录只能手动填写 access_token,同时原项目只支持单账号一键登录,本项目支持了多账户一键获取 access_token)
- 实现了鉴权。原项目是基于对网页版的逆向工程,所以不需要验证 API key。但是,为了安全起见,我添加了一个验证功能,你可以设置想要的 API key 来验证请求。如果不需要,可以留空。
步骤
安装依赖
- git
- Python3
- Docker (如果你想部署在 Docker 上)
- golang (如果你想部署在宿主机上)
- 至少一个 ChatGPT 账号 (多个账号可以提高频率限制)
克隆项目
你需要先把本项目克隆到你的电脑上,然后进入项目目录。假设目录是 ~/ChatGPT-to-API
修改配置
打开 run.py
,修改如下变量:
proxy
:你的代理地址 (只写ip或域名及端口),如果不需要代理,改为空字符串""
proxy_type
:你的代理类型,socks5
或http
accounts
:这是一个包含账号信息的字典,你可以在这里添加账号,支持一个或多个账号 (不支持谷歌或微软登录),格式如下:
1 |
|
access_tokens
:如果你一定要使用谷歌或微软账号登录,这可能是目前唯一的办法,获得的办法可以网上查,注意,这是不推荐的办法,因为通过这种方法access token到期之后无法自动刷新。server_host
:监听的地址,如果你想部署在 Docker 上,改为0.0.0.0
。如果你想部署在宿主机上且只想让本机访问,改为127.0.0.1
或localhost
server_port
:监听的端口,如果你想部署在 Docker 上,改为8080
custom_API_key
: 理论上,由于原项目是基于对网页版的逆向工程,所以不需要验证 API key。但是,为了安全起见,我添加了一个验证功能,你可以设置想要的 API key 来验证请求。如果不需要,可以留空。
安装 Python 依赖
- 如果部署在 Docker 中,忽略这一步
- 如果部署在宿主机上,运行
pip3 install -r requirements.txt
构建
用 python 运行 build.py
,并按照提示操作。请注意,无论是否成功构建,最后都会输出Build finished. Press enter to exit...
,所以请自行观察这句话前面的输出,如果有错误,大概率是代理设置有问题,可以尝试把socks5
改为http
。
运行
- 如果部署在 Docker 中,运行
docker compose up -d
,若要查看是否成功,可查看chatgpttoapi
容器的日志 - 如果部署在宿主机上,Windows 用户运行
python run.py
,Linux 用户运行python3 run.py
,查看输出即可判断是否成功
使用
这个项目实现了 /v1/chat/completions 接口,其余接口未实现,所以语音识别等功能无法使用
调用方法和官方 API 一致,所以请查阅 OpenAI API 的文档
FAQ
如何更新
更新脚本:git pull
更新 ChatGPT to API:重新运行build.py
构建 (会自动拉取 ChatGPT to API),然后运行