SoraRoseous / ChatSydney-react

帮黑暗大佬暂时维护下,已支持图像生成(需cookie)和图像识别,不过图像识别结果仅在当次对话有效。可以进下面的链接体验一下(建议使用自己的cookie,不填默认是用我的,容易上限),这个地址可能会变动。
https://80c9-38-207-143-112.ngrok-free.app
The Unlicense
81 stars 34 forks source link

输入内容时,提示在使用 ChatGPT 的 Python API 时遇到了问题 #6

Open G-LJDS2022 opened 1 year ago

G-LJDS2022 commented 1 year ago

1689676877103 "Traceback (most recent call last):\n File \"D:\AI\ChatSydney-react\main.py\", line 29, in sydney_processmessage\n async for , response in chatbot.ask_stream(prompt=user_message, conversation_style=\"creative\", raw=True,\n File \"D:\AI\ChatSydney-react\SydneyGPT\SydneyGPT.py\", line 30, in ask_stream\n async for key, value in super().ask_stream(*args, *kwargs):\n File \"D:\AI\ChatSydney-react\EdgeGPT\EdgeGPT.py\", line 186, in ask_stream\n async for response in self.chat_hub.ask_stream(\n File \"D:\AI\ChatSydney-react\SydneyGPT\SydneyGPT.py\", line 55, in ask_stream\n async for key, value in super().ask_stream(args, **kwargs):\n File \"D:\AI\ChatSydney-react\EdgeGPT\chathub.py\", line 114, in ask_stream\n async with connect(\n File \"C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\site-packages\websockets\legacy\client.py\", line 637, in aenter\n return await self\n ^^^^^^^^^^\n File \"C:\

SoraRoseous commented 1 year ago

你去后台复制一下报错呢,这里面的都不完整,我没看到Exception在哪

G-LJDS2022 commented 1 year ago

你去后台复制一下报错呢,这里面的都不完整,我没看到Exception在哪

"Traceback (most recent call last):\n File \"D:\AI\ChatSydney-react\main.py\", line 29, in sydney_processmessage\n async for , response in chatbot.ask_stream(prompt=user_message, conversation_style=\"creative\", raw=True,\n File \"D:\AI\ChatSydney-react\SydneyGPT\SydneyGPT.py\", line 30, in ask_stream\n async for key, value in super().ask_stream(*args, *kwargs):\n File \"D:\AI\ChatSydney-react\EdgeGPT\EdgeGPT.py\", line 186, in ask_stream\n async for response in self.chat_hub.ask_stream(\n File \"D:\AI\ChatSydney-react\SydneyGPT\SydneyGPT.py\", line 55, in ask_stream\n async for key, value in super().ask_stream(args, **kwargs):\n File \"D:\AI\ChatSydney-react\EdgeGPT\chathub.py\", line 114, in ask_stream\n async with connect(\n File \"C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\site-packages\websockets\legacy\client.py\", line 637, in aenter\n return await self\n ^^^^^^^^^^\n File \"C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\site-packages\websockets\legacy\client.py\", line 655, in await_impl_timeout\n return await self.await_impl()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\site-packages\websockets\legacy\client.py\", line 662, in await_impl\n await protocol.handshake(\n File \"C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\site-packages\websockets\legacy\client.py\", line 329, in handshake\n raise InvalidStatusCode(status_code, response_headers)\nwebsockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 200\n"

SoraRoseous commented 1 year ago

检查一下代理是不是接管了全部的系统流量,或者尝试在ChatSydney的目录里面放上cookies.json文件

G-LJDS2022 commented 1 year ago

代理开了全局,cookies.json也放了。运行环境时,出了个小问题。

G-LJDS2022 commented 1 year ago

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. opengpt4 0.1.1 requires requests==2.29.0, but you have requests 2.31.0 which is incompatible.

G-LJDS2022 commented 1 year ago

检查一下代理是不是接管了全部的系统流量,或者尝试在ChatSydney的目录里面放上cookies.json文件

是opengpt的版本太新了的原因吗?

SoraRoseous commented 1 year ago

我没看到依赖里面有opengpt啊?哪里有用到这个库的?

G-LJDS2022 commented 1 year ago

把错误信息放到Claude中,出现了这么段提示:

InvalidStatusCode: server rejected WebSocket connection: HTTP 200 这表示服务器返回了一个 HTTP 200 响应,但是并没有完成 WebSocket 握手。

可能的原因:

API endpoint 不正确,应该是 wss://api.chatgpt.com 而不是 HTTPS。 Authorization header 没有设置或设置错误。 服务器不支持 WebSocket 协议。 Firewall/代理阻止了 WebSocket 协议。 代码中的 WebSocket 客户端实现有 bug。

G-LJDS2022 commented 1 year ago

我没看到依赖里面有opengpt啊?哪里有用到这个库的?

我大概猜到了是什么问题,应该是Wss Domain有问题,是新必应收紧了IP检测机制。IP变动频繁就容易产生这个问题。

SoraRoseous commented 1 year ago

你是用的什么代理软件呢

SoraRoseous commented 1 year ago

我用clash开启tun模式代理所有流量之后是可以正常用的

G-LJDS2022 commented 1 year ago

我的clash无法开启tun模式,一开启马上掉线,我一直用的系统代理。

SoraRoseous commented 1 year ago

不开启tun模式的话是没办法在网络层代理全部流量的。因为EdgeGPT在10点几的版本之后改了代码,导致建立ws连接的时候是不会走你在main.py里面设定的代理地址的,所以必须要开tun保证电脑上所有流量都走代理才行。看后面edgeGPT会不会修吧

twsec-pro commented 1 year ago

在replit里面部署也有这个报错,有办法解决吗?

SoraRoseous commented 1 year ago

@renqabs 你那个replit部署的是怎么弄的呢

istudylove commented 1 year ago

@SoraRoseous 你那个replit部署的是怎么弄的呢

可以写shell脚本,自动部署,自动更新,目前用的大佬你的仓库

G-LJDS2022 commented 1 year ago

其实有办法,具体参考https://github.com/juzeon/SydneyQt。 登录或注册Cloudflare帐户。 在边栏中,选择 。Workers & Pages 在打开的页面上,单击 。Create application 选择。Create Worker 为您的工作人员命名,然后单击 。Deploy 在工作人员详细信息页面上,单击 。Quick edit 从此处复制所有代码,并将其粘贴到中的现有代码上。然后单击 。worker.jsSave and deploy 复制看起来像的worker域(不是像,请删除前缀和后缀)并将其粘贴到SydneyQt。

twsec-pro commented 1 year ago

@SoraRoseous 你那个replit部署的是怎么弄的呢

可以写shell脚本,自动部署,自动更新,目前用的大佬你的仓库

现在可以正常使用吗?

xuebiya commented 1 year ago

一样的问题,如果在linux上呢怎么办,clash是在dokcer运行的。已经开了全局了 clash日志显示有代理上。因为是自己搭建的线路,在线路机子上搭建无问题,在国内机器上用代理参数就不许

SoraRoseous commented 1 year ago

一样的问题,如果在linux上呢怎么办,clash是在dokcer运行的。已经开了全局了 clash日志显示有代理上。因为是自己搭建的线路,在线路机子上搭建无问题,在国内机器上用代理参数就不许

你的clash是premium版的吗,如果是的话可以检查一下日志,在发送消息之后一定要看到有下面两条记录才是成功的 image 如果不是的话一定要更到premium版本开启tun模式才行。 如果是windows系统的clash也可以根据是否有这两条代理的日志来判断请求是否正常走了代理,只不过windows上第二条日志可能是一个ip地址而不是sydney.bing.com

xuebiya commented 1 year ago

一样的问题,如果在linux上呢怎么办,clash是在dokcer运行的。已经开了全局了 clash日志显示有代理上。因为是自己搭建的线路,在线路机子上搭建无问题,在国内机器上用代理参数就不许

你的clash是premium版的吗,如果是的话可以检查一下日志,在发送消息之后一定要看到有下面两条记录才是成功的 image 如果不是的话一定要更到premium版本开启tun模式才行。 如果是windows系统的clash也可以根据是否有这两条代理的日志来判断请求是否正常走了代理,只不过windows上第二条日志可能是一个ip地址而不是sydney.bing.com

也就是说我不能在docker里运行,只能在真实环境里运行咯。主要是比较怕这样会被封服务器,之前就试过被腾讯云封了 所以才一直在docker里运行

SoraRoseous commented 1 year ago

也就是说我不能在docker里运行,只能在真实环境里运行咯。主要是比较怕这样会被封服务器,之前就试过被腾讯云封了 所以才一直在docker里运行

意思就是你的服务器是在国内的嘛,那你在服务器上用clash不就行了哇,这样会被封吗?什么理由封的呢

xuebiya commented 1 year ago

也就是说我不能在docker里运行,只能在真实环境里运行咯。主要是比较怕这样会被封服务器,之前就试过被腾讯云封了 所以才一直在docker里运行

意思就是你的服务器是在国内的嘛,那你在服务器上用clash不就行了哇,这样会被封吗?什么理由封的呢

对的,腾讯云的机子,当时好像发邮件说转发境外流量。其实我当时只是想挂代理给rss订阅推特消息的。然后被封了 要让我签一份协议按手印手持sfz拍照解封

SoraRoseous commented 1 year ago

对的,腾讯云的机子,当时好像发邮件说转发境外流量。其实我当时只是想挂代理给rss订阅推特消息的。然后被封了 要让我签一份协议按手印手持sfz拍照解封

不应该呀,你的机场不会是直连的吧,用中转的话流量不应该是发到另外一台国内的服务器上吗

xuebiya commented 1 year ago

对的,腾讯云的机子,当时好像发邮件说转发境外流量。其实我当时只是想挂代理给rss订阅推特消息的。然后被封了 要让我签一份协议按手印手持sfz拍照解封

不应该呀,你的机场不会是直连的吧,用中转的话流量不应该是发到另外一台国内的服务器上吗

不是直连,但是他就是检测出来,邮件特意注明7890端口

SoraRoseous commented 11 months ago

#627 EdgeGPT修复了这个问题

lioensky commented 11 months ago

修复了啥?clash tpu代理问题?