自定义ChatGPT代理接口
本文最后更新于 2025-06-01,文章内容可能已经过时。
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 写的插件调用的接口。

