搭建可直连的ChatGPT镜像站
写在前面
此教程旨在搭建一个可直连的chatgpt
网页站点,只使用免费的ChatGPT额度,而无需使用付费的API key,支持上下文。同样这种方式带来的风险需要自己承担,如使用IP被封锁的原因导致账号被block
,请仔细考虑后决定是否使用本套搭建方案。
准备
- 服务器 (需要安装
python 3.10+
) - 域名(非必需, 如果想要直连则为必需)
- Open AI 账号
- GitHub 账号
以上的准备工作不在本次教程的范围内,如需帮助请左转Google
或者直接请求帮助
获取Open AI Account AccessToken
你可以通过登录官方网站,然后从浏览器存储的cookie中提取出access token
。不过,这种方法存在一定的风险,而且可能会比较繁琐。
为了方便起见,以下链接提供了一种获取token的方法,来自Pandora作者:获取Token链接。在输入你的账号凭证并点击获取按钮后,你将会得到一个以以下内容开头的token:
eyJhbGciOiJSUzI15cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkJodHInwsadgwzsf...
这个token就是open ai accout的access_token
。请注意,该token的有效期为 expires_in
: 1209600 秒,意味着在此时间过后需要重新获取,以确保持续使用。
同样在此页面上会同时获得一个 refresh_token
保存这个token就可以自动刷新获取最新的access token
, 而无需手动更新配置文件
后端(ChatGPT-Engine)
下载代码&安装依赖
git clone https://github.com/peanut996/chatgpt-engine.git
cd chatgpt-engine/
# 安装依赖
pip install -r requirements.txt
在某些版本的linux发行版上已经不允许直接使用系统的python进行安装依赖,可以使用虚拟环境:
# 创建名为venv虚拟环境
python -m venv venv
# 激活虚拟环境
source venv/bin/activate
编写配置
首先需要准备好配置文件,如下所示:
engine:
port: 5000
debug: false
host: 127.0.0.1
chatgpt:
tokens:
- "账号:密码:<access token>:<refresh_token>" #这里是以冒号分隔
配置文件详解:
port
:指定服务要监听的端口号。debug
:设置是否启用调试模式。host
:指定服务绑定的主机地址。chatgpt
:这似乎是一个命名空间,可能包含与ChatGPT集成相关的设置。tokens
:这是一个列表,包含用于身份验证的令牌(tokens)。由三部分组成,用冒号分隔:账号、密码、AccessToken
和RefreshToken
将上面的配置写入config.yaml
即可
运行
配置文件编写完成后直接使用以下命令即可运行后端:
python main.py
# 也可以使用 '-c' 指定配置文件目录
python main.py -c ./config.yaml
可以如下请求来验证服务是否正确启动:
curl http://localhost:5000/ping
如果响应为pong
则说明服务器启动完毕
nohup
可以将服务运行在后台,以便session关闭后仍然能继续访问:
nohup python main.py &
设置代理
因为Open AI对于IP的限制比较严重,所以在无法直接使用的场景下需要设置中转代理
这里推荐使用潘多拉作者的代理:https://ai.fakeopen.com/api/
# 设置环境变量
export CHATGPT_BASE_URL="https://ai.fakeopen.com/api/"
# 启动服务
python main.py
# 或者
CHATGPT_BASE_URL="https://ai.fakeopen.com/api/" python main.py
前端
Vercel托管
首先需要注册Vercel账户并把它链接到自己的Github账户
点击🔗 部署链接 进入vercel的部署界面, 点击Create
按钮会自动进行仓库fork
配置环境变量
在仓库fork完毕后,需要填写SERVER_URL
即你自己的后端请求地址
地址格式是 http://$ip:$port
``$ip`是服务器公网地址``$port`即为服务的端口号默认5000
Eg:一个可能的服务器地址http://47.223.18.9:8000
经验证vercel的edge function 无法直接访问http
服务,需要配置上域名启用https
, 也可以部署到自己的服务器上
可以使用 https://youdomain/ping
来验证服务器是否能通过公网访问,如果不能正常访问,那么则需要排查服务器的端口是否正确打开,或者云服务商的ACL规则限制,此处不再详细说明
填入服务器地址后点击Deploy
按钮后即可自动部署,等待3分钟后,看到如下界面即部署完毕
点击 Continue to Dashboard,能够看到domains下面有一个格式为chatgpt-web-*.vercel.app
的链接,点击后能够访问页面,则说明部署成功! 🎊
配置自定义域名(可选)
vercel自动分配的域名是无法大陆直接使用的,如果想让网页大陆直连,还需要配置自定义的域名
点击Setting - Domains
输入提前准备好的域名, 推荐使用子域名如chat.yourdomain.com
输入完毕后 点击Add
Vercel 需要验证域名的所有权以及配置DNS解析,这里需要前往域名服务商添加TXT/CNAME
记录
请自行搜索对应域名服务商的记录添加教程
在验证域名所有权并且CNAME
记录正确添加后,稍等片刻刷新页面看到如下的状态,表示域名绑定完成,此时已经可以使用个人域名访问,且可以关闭所有代理直接访问!
🎉 恭喜,一个可直连的ChatGPT镜像站就部署完成了!