失败的GPT之旅
被FakeGPT折磨的一天
前情提要:博主朋友k少苦于没有梯子,访问不了GPT,博主刚好想做一个自己的GPT,于是开始了折磨的一天
从0开始的API尝试
openAI主要就开放了node.js和python的相关API,所以博主兴致冲冲地跟随网上各路大佬的步伐,开始从0搭建本地chatGPT API接口
(不出意外都失败了 T T)
node.js
掘金教程,博主一步一步跟着操作,失败。。
中间还遇到了很恶心的操作:chagpt的npm包不可以使用华为的镜像仓库去下载,必须得用原生的才行。
下完由于国外CDN的原因,又得切回华为镜像...
还有关于我express中的模块语法问题(第一次遇到,长知识了)
- 之前博主用的全是CommonJS模块系统,使用‘ require() ’和 ‘module.exports’ 来导入和导出模块。
- 而 ES6 模块是一种更新的、在 ECMAScript 6 规范中定义的模块化系统,使用 import 和 export 关键字来导入和导出模块。
GPT给出了以下不少优点,有兴趣的可以自行询问
- 模块化导入和导出:ES6 模块使用 import 关键字来导入其他模块,使用 export 关键字来导出当前模块的成员(变量、函数、类等)。例如:
- 静态导入:ES6 模块的导入是静态的,这意味着在模块加载时就确定了导入的模块和成员。这使得编译器可以在构建时进行静态分析,优化代码和减少运行时的不确定性。
- 无污染的全局命名空间:ES6 模块在加载时会创建一个独立的作用域,模块的成员不会污染全局命名空间,因此不会出现命名冲突。
- ......
同时,使用ES6模块系统时,需要将后缀js改为mjs(crazy)或者在package.json中声明
然后运行之后,测试API报错...
Error.captureStackTrace(err, this);
^
TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11576:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
难受(,,•́ . •̀,,)
GPT给的回复也无从下手
这个错误信息表明在您的 Node.js 应用程序中,有一个与 "undici" 模块相关的问题,导致发生了 "TypeError: fetch failed" 错误。
- undici 模块问题:Node.js 内部使用 "undici" 模块来处理底层的 HTTP 请求。这个模块负责执行 HTTP 请求,包括向服务器发起请求并获取响应。发生 "fetch failed" 错误,可能是由于 "undici" 模块在执行 HTTP 请求时出现问题。
- fetch 失败:错误消息中指出了 "fetch failed",这可能是由于无法从指定的 URL 获取数据,即 HTTP 请求失败。
python
无所谓,我用python! (。→‿←。)
Traceback (most recent call last):
File "C:\Users\paul zrx\PycharmProjects\pythonProject7\venv\lib\site-packages\urllib3\connection.py", line 203, in _new_conn
sock = connection.create_connection(
File "C:\Users\paul zrx\PycharmProjects\pythonProject7\venv\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
raise err
File "C:\Users\paul zrx\PycharmProjects\pythonProject7\venv\lib\site-packages\urllib3\util\connection.py", line 73, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
The above exception was the direct cause of the following exception:
好好好,我挂梯子,你说我代理服务器出错,我不挂梯子你说我连接超时(╯ ̄Д ̄)╯╘═╛
由于这个方法要切换代理问GPT导致博主要反复上下梯子(痛苦
所以我选择直接去GitHub上尝试找个现成的先玩玩,然后挂载到域名的路由下面
(python和nodejs对应的chatGPTAPI应该是可以的,有空继续更新)
GitHub寻找解决办法
很快啊,博主就找到了超多star的仓库Pandora! 然后开始尝试,很快就见效了
不管是终端的还是web端的chatGPT都挺不错,其实就是套个壳子,用的全是原账号密码。
这何尝不是一种NTR (๑乛◡乛๑)
-
终端
(终端的这个风格还是很酷的,就是要改一下GPT回答字体颜色)
-
web端
可以解决一些IP或者代理节点被封的问题,还是有帮助的,而且回答速度确实快一点,至少不是断断续续的
尝试挂载GPT
还是和博客的方式一样,尝试用Nginx_Proxy_Manager (学习链接)
让域名子路径代理IP的某个端口
404,g
(其实这里就应该意识到问题的,毕竟404都是halo给的)
首先开始怀疑自己,是不是有地方弄错了,是不是docker-compose.yml的原因,是不是nginx本身的原因。
博主甚至开始尝试再次用拉起nginx服务(错误示范,请勿尝试,因为同个域名最好只用一个nginx服务器进行代理)
反复折腾后,最终GPT给出了答案
感谢提供更多信息。你所说的是正确的,pandora-cloud 是用于启动 Serverless 服务的命令,而不是传统 Web 应用程序。因此,在这种情况下,Nginx 代理可能无法找到对应的静态资源文件,因为 Serverless 服务的运行方式与传统 Web 应用程序有所不同。
对于 Serverless 服务,通常不需要使用 Nginx 来进行代理。Serverless 框架会自动处理请求的路由和处理,不需要显式地指定静态资源文件的路径。因此,Nginx 代理并不适用于 Serverless 服务的场景。
好好好 整这出是吧
(╯#-_-)╯~~~~~~~~~~~~~~~~~╧═╧
长记性了,下次接着自己写
(菜单栏里有梯子版的chatGPT,直连版还没写好)
(IP端口上的直连版有需要的可以联系博主)