自定义ChatGPT代理接口
本文最后更新于 2024-07-06,文章内容可能已经过时。
PandoraNext 项目已经停止更新了,新教程是使用 ninja 项目。
bncr
插件的 ChatGPT
使用的公开的 fakeopen api
代理是 zhile 大佬很久之前的,而且新项目里面已经说了, fakeopen api
已经是历史了,现在需要我们自己搭建他的项目搞一个代理接口。
搭建PandoraNext项目(已失效,向下看Ninja教程)
方便点,直接使用 Dokcer 进行搭建了;项目地址:https://github.com/pandora-next/deploy
创建项目文件存储地址,可自行更换。
mkdir -p /data/docker/PandoraNext && cd /data/docker/PandoraNext
启动PandoraNext
docker pull pengzhile/pandora-next
docker run -d --restart always --name PandoraNext --net=bridge \
-p 8181:8181 \
-v $(pwd)/data:/data \
-v $(pwd)/sessions:/root/.cache/PandoraNext \
pengzhile/pandora-next
配置相关文件
cd data
wget https://ghproxy.com/https://raw.githubusercontent.com/pandora-next/deploy/master/data/config.json
wget https://ghproxy.com/https://raw.githubusercontent.com/pandora-next/deploy/master/data/tokens.json
tokens.json
可以不用管,主要配置一下 config.json
登录 Github账号,获取 license_id
, https://dash.pandoranext.com
主要是将网页获取的 license_id
填入 config.json
中,并且配置 proxy_api_prefix
,我随便设置了一个 v1conversation
。
tokens.json
文件不用管。
重启一下项目
docker restart PandoraNext
搭建 Ninja
安装教程在项目的 wiki 中,教程给了 Docker 命令和 compose 两种方式,两种方式稍微有一点区别。
我是在 OpenWrt
中开启了全局代理,所以直接使用第一个命令就可以了。
docker run --rm -it -p 7999:7999 --name=ninja \
-e LOG=info \
-v ~/.ninja:/root/.ninja \
ghcr.io/gngpp/ninja:latest run
这里目前只能完成 Access Token
获取和 GPT3.5
聊天,其他的例如 login
、GPT4
需要验证码,可以阅读项目文档完成。
配置网络
这里把
PandorNext
换成ninja
就好了,操作逻辑是一样的,就是打通两个容器的网络。
如果你已将 PandoraNext
配置到公网,可以忽略此步骤,如果未将 PandoraNext
配置到公网,需要将 pandoraNext
和 bncr
放入同一个 docker network
中,让 bncr
可以访问 PandoraNext
。
通过 默认的
bridge
网络也可以连通,但是机器重启后IP
会发生变动
- 创建
docker network
默认的
bridge
网络应该是172.17.0.0/16
,继续向下创建应该不会重复,重复自己调整一下。
docker network create docker_network --subnet 172.18.0.0/24 --gateway 172.18.0.1
docker network connect docker_network bncr --ip 172.18.0.2
docker network connect docker_network PandoraNext --ip 172.18.0.3
上面的命令意思是:
- 创建一个名字叫做
docker_network
的网络,子网是172.18.0.0/24
,网关是172.18.0.1
- 将
bncr
容器加入到docker_network
网络,并且分配一个固定ip是172.18.0.2
- 将
PandoraNext
容器加入到docker_network
网络,并且分配一个固定ip是172.18.0.3
请注意,这里的 容器名称 需要根据自己真实的容器名称去更改。
查看网络详情
docker network inspect docker_network
IP 和教程有点不一样,无伤大雅。
修改 ChatGPT 插件
插件在这里:https://github.com/RedLightsDistrict/Bncr_plugins/blob/main/Bncr_ChatGPT.js
修改一下:apiReverseProxyUrl
这里配置是 Ninja
的访问地址 + 代理地址,图中多了一份 /v1conversation
, Ninja
项目无需理会,去掉就好了。
${Ninja_URL}/backend-api/conversation
// for example: http://192.168.100.1:7999/backend-api/conversation
-
Ninja_URL
就是在bncr
中能访问到Ninja
的地址,可以是公网,也可以是上一步配置的docker network
中分配的地址。 -
7999端口分情况配置,如果是公网,请使用创建是映射后的端口,如果是分配的网络,请固定7999。
不知道就还是7999
-
/backend-api/conversation
固定。
测试
写在后面
Ninja
项目提供了 Session Token
和 Refresh Token
获取 Access Token
的方法,可以将插件进行修改完成自动更新 Token
。下面是我在 Koishi
写的插件调用的接口。