Closed MrThanlon closed 1 year ago
是由于nodejs不支持http_proxy导致的,https://github.com/Yidadaa/ChatGPT-Next-Web/issues/166
已被 BASE_URL 替代。 #172
已被 BASE_URL 替代。 #172
不冲突,两者都可以有,BASE_URL仍然需要配置反向代理
@Yidadaa 请求重新打开
是的, 代理跟BASE_URL不冲突, 可以参考另一项目的做法: https://github.com/ddiu8081/chatgpt-demo
考虑使用 undici 的 fetch api:
https://github.com/nodejs/undici#undicifetchinput-init-promise
需要考虑的因素:
@Yidadaa 可以 Docker 镜像使用 node-fetch,加代理检测,用 node 16
这个有个本地开发的方案可以参考下。 本地的科学上网客户端一般都会有本地http代理端口和地址, 那么node-fetch的参数 agent 就可以设置代理服务器。 Openai那的接口我科学服务器上做了反代处理所以我只需要处理抓取提示词这边就行(不代理有时候会报请求被重置的错误)。具体代码可以参考https://github.com/gaogao1030/ChatGPT-Next-Web/commit/bdfddb85617ba33d84d723a184f7ef5d7a585029
希望这个能加入到Roadmap里
这个有个本地开发的方案可以参考下。 本地的科学上网客户端一般都会有本地http代理端口和地址, 那么node-fetch的参数 agent 就可以设置代理服务器。 Openai那的接口我科学服务器上做了反代处理所以我只需要处理抓取提示词这边就行(不代理有时候会报请求被重置的错误)。具体代码可以参考gaogao1030@bdfddb8
我试过了,但是会报错 [Fetch] failed to fetch cn prompts FetchError: request to https://cdn.jsdelivr.net/gh/PlexPt/awesome-chatgpt-prompts-zh@main/prompts-zh.json failed, reason: Client network socket disconnected before secure TLS connection was established
目前问题比较复杂,貌似 nextjs 无法通过环境变量来指定 runtime,导致无法同时兼容 edge function 部署与本地部署。
如果你有 Linux 可以试试看 proxychains,理论上可以让动态链接到 libc 的程序(包括 node)强行使用代理。
作者是 部署到国内还是国外了, 你的demo 国内访问很快,需要在服务器端配置代理吗,我新手,代码看的比较慢哦~
如果你有 Linux 可以试试看 proxychains,理论上可以让动态链接到 libc 的程序(包括 node)强行使用代理。
有类似的需求,用作者的 docker image 重新 build 试了下是可以的
FROM yidadaa/chatgpt-next-web:latest
WORKDIR /app
RUN apk add --no-cache proxychains-ng
ENV OPENAI_API_KEY=""
ENV CODE=""
EXPOSE 3000
CMD ["proxychains", "node","server.js"]
pr #295 镜像 wener/chatgpt-next-web:latest
打算维护一个 standalone 的 fork
我这里维护了一份基于 proxychains 重新打包 作者的 docker image的分支,只需要自己build后启动,可以在启动时指定代理参数了(我自己已经在使用中,暂时没发现啥问题),具体看文档:https://github.com/yoko-murasame/ChatGPT-Next-Web/blob/main/DockerfileForProxy/readme.md
这个有个本地开发的方案可以参考下。 本地的科学上网客户端一般都会有本地http代理端口和地址, 那么node-fetch的参数 agent 就可以设置代理服务器。 Openai那的接口我科学服务器上做了反代处理所以我只需要处理抓取提示词这边就行(不代理有时候会报请求被重置的错误)。具体代码可以参考gaogao1030@bdfddb8
我试过了,但是会报错 [Fetch] failed to fetch cn prompts FetchError: request to https://cdn.jsdelivr.net/gh/PlexPt/awesome-chatgpt-prompts-zh@main/prompts-zh.json failed, reason: Client network socket disconnected before secure TLS connection was established
检查一下是不是用错端口了,注意要用科学上网工具上的本机 http 监听端口不是sock端口。因为node-fetch的请求走的是http(注意agent模块是https-proxy-agent不是http-proxy-agent,因为目标地址是https)。还有就是确保下科学上网工具是通的。(建议在全局模式下测试)。 补充一下我的信息:我这里使用的是v2ray,本机监听http端口是1087,所以这里我配置的就是1087端口。(截止回复这条消息前跑了下没有问题)(我之前一直用proxychinas也算是个解决方案,只不过跑npm run dev的时候有点问题。得改下package.json 把 npm run fetch 和 next dev 拆开来跑,前者加前缀后者不加。) 对了,你可以尝试问下chat-gpt:nodejs fetch 如何使用本地代理。你可以看下gpt的回答作为参考。
@yoko-murasame 这个方案看起来是唯一可行的方案,稍后我会更新到主线
@Yidadaa @yoko-murasame
我的容器已经用上了最新的代码,效果很好。我用到的环境变量是这样的:
OPENAI_API_KEY: "xxx"
CODE: "user1,user2"
PROXY_URL: "socks5://172.33.33.33:9088"
如果要用http/https代理,改成这样就可以了
PROXY_URL: "http://172.33.33.33:9088"
PROXY_URL: "https://172.33.33.33:9088"
已经合入主线。
WIP