本文最后更新于 2024-07-06,文章内容可能已经过时。

PandoraNext 项目已经停止更新了,新教程是使用 ninja 项目。

bncr 插件的 ChatGPT 使用的公开的 fakeopen api 代理是 zhile 大佬很久之前的,而且新项目里面已经说了, fakeopen api 已经是历史了,现在需要我们自己搭建他的项目搞一个代理接口。

1702192917817.png

搭建PandoraNext项目(已失效,向下看Ninja教程)

方便点,直接使用 Dokcer 进行搭建了;项目地址:https://github.com/pandora-next/deploy

  1. 创建项目文件存储地址,可自行更换。
mkdir -p /data/docker/PandoraNext && cd /data/docker/PandoraNext
  1. 启动 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
  1. 配置相关文件
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_idhttps://dash.pandoranext.com

1702193617515.png

主要是将网页获取的 license_id 填入 config.json 中,并且配置 proxy_api_prefix,我随便设置了一个 v1conversation

tokens.json 文件不用管。

  1. 重启一下项目
docker restart PandoraNext

搭建 Ninja

安装教程在项目的 wiki 中,教程给了 Docker 命令和 compose 两种方式,两种方式稍微有一点区别。

1708163341539.png

我是在 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 聊天,其他的例如 loginGPT4 需要验证码,可以阅读项目文档完成。

配置网络

这里把 PandorNext 换成 ninja 就好了,操作逻辑是一样的,就是打通两个容器的网络。

如果你已将 PandoraNext 配置到公网,可以忽略此步骤,如果未将 PandoraNext 配置到公网,需要将 pandoraNextbncr 放入同一个 docker network 中,让 bncr 可以访问 PandoraNext

通过 默认的 bridge 网络也可以连通,但是机器重启后 IP 会发生变动

  1. 创建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

请注意,这里的 容器名称 需要根据自己真实的容器名称去更改。

1702194518319.png

查看网络详情

docker network inspect docker_network

image-20231210154914874.png

IP 和教程有点不一样,无伤大雅。

修改 ChatGPT 插件

插件在这里:https://github.com/RedLightsDistrict/Bncr_plugins/blob/main/Bncr_ChatGPT.js

修改一下:apiReverseProxyUrl

image-20231210155134092.png

这里配置是 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 固定。

测试

1702195036607.png

写在后面

Ninja 项目提供了 Session TokenRefresh Token 获取 Access Token 的方法,可以将插件进行修改完成自动更新 Token。下面是我在 Koishi 写的插件调用的接口。

1708164005173.png