ChatGPT 如何自建代理

经过一段时间的摸爬滚打,慢慢摸索出一套比较好的解决方案(就目前来说)

只能个人自用,多人公用会出现各种奇怪的问题,并且程序里加了锁只能一个接一个对话

(已找到方法解决这个问题,目前支持多人用不同的 accessToken 共用一个代理,但是如果是相同 accessToken 的话,还是会提示 Only one message at a time. Please allow any other responses to complete before sending another message, or wait one minute.,更新了视频在最下方)


java-chatgpt-api 这边换成了 Playwright,开发测试会方便点,当然也是第一次用,好多 API 还用不明白,总之感觉挺强大的,如果前端玩得好,使用起来能更加得心应手

Java 版本的话,又 JVM、又 Spring、又 Playwright,跑起来非常占用内存,跑着跑着内存就占用 1G+ (可能泄漏了),适合本地部署

go-chatgpt-api 的话则还是依赖外置代理 chatgpt-proxy-server,因为测试过 playwright-go,Firefox 版本太低跑不起来,而 Chromium 能跑,但是过不了验证

Go 版本内存占用仅需十几兆,外置代理几百兆,加起来比 Java 能少一半,适合最低配 1 核 1G 服务器(当然也适合本地)


其中官网里的一旦对话超过 max_tokens,就会自动截断,需要发继续才能回复,这里被我魔改成了后台自动发继续请求,前端只需回车,全部内容一次性返回(可能有 bug)

Java 那边依赖 Playwright 特性做了个处理验证码失败自动截图的功能方便排查,Go 这边则没有

其他的功能差不多相同,核心处理基本一样,具体实现方式可能有点差别


闭源代理见仁见智,涉及到 apiKey 或者 accessToken 安全

我这边的实现还是一种不是非常稳定的方式,不一定能完美解决验证码问题,也不一定正常使用无 bug

但是勉强能用,如果不行了,重启一下服务,大概率又复活,有问题我也会尝试修复


说句题外话,我说全部代码开源,有人质疑我提供的 docker 镜像把自己的闭源的二进制 go-chatgpt-api 文件打了进去,害怕有后门

我想说,其实你可以自己打包

我这个是代码提交后 github actions 自动打包推送到 docker 仓库的

换句话说,开源的代理关心 token 安全,反手把自己的 token 往其他人搭建好的闭源代理里送。我不理解

饭圈文化渗透到技术圈


如何使用、调试,全在视频里了

视频

多人共用一个代理