Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Openai接口网络不通的解决方案 (已支持 Railway 一键部署) #351

Open
zhayujie opened this issue Mar 4, 2023 · 87 comments
Open
Labels
tutorial Tutorial provided by maintainer, may be outdated

Comments

@zhayujie
Copy link
Owner

zhayujie commented Mar 4, 2023

目前的几种方案:

1.直接部署在外网的服务器: 比如 xx云的香港服务器

2.国内环境开代理: 需要 代理软件 及 代理账号

3.托管到容器平台: 如Railway等平台。

背景及讨论过程参考:#310

@zhayujie
Copy link
Owner Author

zhayujie commented Mar 4, 2023

方案一:这个方案优点是比较简单,缺点是依赖能访问外网的服务器,成本较高。唯一需要注意的是,服务器最好选择openai支持的地区,且需要访问wechat的后台。

相关issue:#344

更新 03.11: 目前使用方案一被openai限制风险小

@zhayujie
Copy link
Owner Author

zhayujie commented Mar 4, 2023

方案二

原理是通过本地安装的 代理客户端 把 请求转发到 代理服务器,再由能访问外网的代理服务器完成请求。 现在常用的代理协议有 Shadowsocks、V2Ray、Trojan等,这些协议一般会有自己特定的客户端。 而 clash 是一个能同时兼容这些协议的客户端, 所以下面以 clash 为例介绍下如何使用。

1.代理客户端启动

vpn账号的获取就不赘述了,因为获取openai的API_KEY时就是需要代理的。 在本地开发环境启动代理客户端比较简单,一般都有图形界面,打开后就会把所有流量都转发到代理客户端,此时注意要开启分流模式 (PAC, 即访问国内域名不转发),不然可能访问不了wx。

如果是在服务器命令行环境,需要找一个能在linux运行的代理客户端。以clash为例,下载 clash-linux-amd64-v1.13.0.gz, 在服务器上解压并运行 sudo ./clash-linux-amd64-v1.13.0 即可。 同时需要一个 ~/.config/clash/config.yml 配置文件,一般你获取账号的地方 (机场) 都会提供的。

启动后 clash 会监听本地的 7890 端口,所有往这个端口发送的请求都会按照一定规则 转发到 代理服务器 完成访问。

2.程序启动

启动前要在config.json 中加一个proxy配置:

{
  "open_ai_api_key": "YOUR API KEY",
  "proxy": "http://127.0.0.1:7890",
  "single_chat_prefix": ["bot", "@bot"],
  #... 省略 ...
}

这个配置的含义是,所有向openai发送的请求都会发送到 http://127.0.0.1:7890, 这正是clash监听的端口。 如果你用的是别的代理客户端,就改成对应的端口,比如使用 trojan-qt5 会配成 http://127.0.0.1:1080。 这样的好处是只有访问openai时会走到代理,不会影响和wx的交互。

配置添加完后,正常启动程序就可以访问 chatgpt 接口了。

@zhayujie
Copy link
Owner Author

zhayujie commented Mar 4, 2023

方案三:RailWay 一键部署 (推荐)

Railway 每月提供5刀和最多500小时的免费额度。

  1. 进入 Railway
  2. 点击 Deploy Now 按钮
  3. 设置环境变量来重载程序运行的参数,例如open_ai_api_key, character_desc
  4. 等待运行,扫码登录即可享用

@sw0210
Copy link

sw0210 commented Mar 4, 2023

python3.9版本在开了代理的情况下会运行报错,请降低urllib3模块的版本即可,pip install urllib3==1.25.11

@sunzhuo
Copy link

sunzhuo commented Mar 5, 2023

期待方案三

@yz5love
Copy link

yz5love commented Mar 5, 2023

方案二

原理是通过本地安装的 代理客户端 把 请求转发到 代理服务器,再由能访问外网的代理服务器完成请求。 现在常用的代理协议有 Shadowsocks、V2Ray、Trojan等,这些协议一般会有自己特定的客户端。 而 clash 是一个能同时兼容这些协议的客户端, 所以下面以 clash 为例介绍下如何使用。

1.代理客户端启动

vpn账号的获取就不赘述了,因为获取openai的API_KEY时就是需要代理的。 在本地开发环境启动代理客户端比较简单,一般都有图形界面,打开后就会把所有流量都转发到代理客户端,此时注意要开启分流模式 (PAC, 即访问国内域名不转发),不然可能访问不了wx。

如果是在服务器命令行环境,需要找一个能在linux运行的代理客户端。以clash为例,下载 clash-linux-amd64-v1.13.0.gz, 在服务器上解压并运行 sudo ./clash-linux-amd64-v1.13.0 即可。 同时需要一个 ~/.config/clash/config.yml 配置文件,一般你获取账号的地方 (机场) 都会提供的。

启动后 clash 会监听本地的 7890 端口,所有往这个端口发送的请求都会按照一定规则 转发到 代理服务器 完成访问。

2.程序启动

启动前要在config.json 中加一个proxy配置:

{
  "open_ai_api_key": "YOUR API KEY",
  "proxy": "http://127.0.0.1:7890",
  "single_chat_prefix": ["bot", "@bot"],
  #... 省略 ...
}

这个配置的含义是,所有向openai发送的请求都会发送到 http://127.0.0.1:7890, 这正是clash监听的端口。 如果你用的是别的代理客户端,就改成对应的端口,比如使用 trojan-qt5 会配成 http://127.0.0.1:1080。 这样的好处是只有访问openai时会走到代理,不会影响和wx的交互。

配置添加完后,正常启动程序就可以访问 chatgpt 接口了。

[ERROR][2023-03-05 12:47:28][log.py:50] - Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/completions (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))

@xionghaizhi
Copy link

方案二

原理是通过本地安装的 代理客户端 把 请求转发到 代理服务器,再由能访问外网的代理服务器完成请求。 现在常用的代理协议有 Shadowsocks、V2Ray、Trojan等,这些协议一般会有自己特定的客户端。 而 clash 是一个能同时兼容这些协议的客户端, 所以下面以 clash 为例介绍下如何使用。

1.代理客户端启动

vpn账号的获取就不赘述了,因为获取openai的API_KEY时就是需要代理的。 在本地开发环境启动代理客户端比较简单,一般都有图形界面,打开后就会把所有流量都转发到代理客户端,此时注意要开启分流模式 (PAC, 即访问国内域名不转发),不然可能访问不了wx。

如果是在服务器命令行环境,需要找一个能在linux运行的代理客户端。以clash为例,下载 clash-linux-amd64-v1.13.0.gz, 在服务器上解压并运行 sudo ./clash-linux-amd64-v1.13.0 即可。 同时需要一个 ~/.config/clash/config.yml 配置文件,一般你获取账号的地方 (机场) 都会提供的。

启动后 clash 会监听本地的 7890 端口,所有往这个端口发送的请求都会按照一定规则 转发到 代理服务器 完成访问。

2.程序启动

启动前要在config.json 中加一个proxy配置:

{
  "open_ai_api_key": "YOUR API KEY",
  "proxy": "http://127.0.0.1:7890",
  "single_chat_prefix": ["bot", "@bot"],
  #... 省略 ...
}

这个配置的含义是,所有向openai发送的请求都会发送到 http://127.0.0.1:7890, 这正是clash监听的端口。 如果你用的是别的代理客户端,就改成对应的端口,比如使用 trojan-qt5 会配成 http://127.0.0.1:1080。 这样的好处是只有访问openai时会走到代理,不会影响和wx的交互。

配置添加完后,正常启动程序就可以访问 chatgpt 接口了。

配置了,重启后没有走代理?但是微信那个都走了。
image

@zhayujie
Copy link
Owner Author

zhayujie commented Mar 5, 2023

@xionghaizhi 日志显示对的吧,访问微信走直连 (不走代理)

@GengCen-Qin
Copy link

javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

Caused by: java.io.EOFException: SSL peer shut down incorrectly

使用代理后显示这两个问题, 是需要设置证书吗

@zhayujie
Copy link
Owner Author

zhayujie commented Mar 5, 2023

javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

Caused by: java.io.EOFException: SSL peer shut down incorrectly

使用代理后显示这两个问题, 是需要设置证书吗

这个应该是代理客户端报的错, 找下对应项目的解决吧

@GengCen-Qin
Copy link

javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
Caused by: java.io.EOFException: SSL peer shut down incorrectly
使用代理后显示这两个问题, 是需要设置证书吗

这个应该是代理客户端报的错, 找下对应项目的解决吧

能再具体些吗,我就是下载代理后,正常从网页上访问Chatgpt没问题,但接口访问一直报上面的错误

@xionghaizhi
Copy link

@xionghaizhi 日志显示对的吧,访问微信走直连 (不走代理)

ok 谢谢

@liuao5201314
Copy link

liuao5201314 commented Mar 6, 2023

我这边用的是shellclash,支持订阅模式,SSR订阅节点也支持,傻瓜式操作,还可以配置可视化面板,代理不熟悉的可以参考这个方案

@yujiaYY
Copy link

yujiaYY commented May 5, 2023

[INFO][2023-05-05 19:10:34][config.py:166] - 配置文件不存在,将使用config-template.json模板 [INFO][2023-05-05 19:10:34][config.py:195] - [INIT] load config: {'open_ai_api_key': 'sk-', 'model': 'gpt-3.5-turbo', 'open_ai_api_base': '', 'proxy': 'http://127.0.0.1:10086', 'request_timeout': 600, 'timeout': 300, 'single_chat_prefix': ['bot', '@bot'], 'single_chat_reply_prefix': '[bot] ', 'group_chat_prefix': ['@bot'], 'group_name_white_list': ['ChatGPT测试群', 'ChatGPT测试群2'], 'group_chat_in_one_session': ['ChatGPT测试群'], 'image_create_prefix': ['画', '看', '找'], 'speech_recognition': False, 'group_speech_recognition': False, 'voice_reply_voice': False, 'conversation_max_tokens': 1000, 'expires_in_seconds': 3600, 'character_desc': '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。', 'subscribe_msg': '感谢您的关注!\n这里是ChatGPT,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。'} [INFO][2023-05-05 19:10:34][config.py:143] - [Config] User datas loaded. C:\ProgramData\anaconda3\envs\chatgpt\lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning) [INFO][2023-05-05 19:10:34][plugin_manager.py:50] - Loading plugins config... [INFO][2023-05-05 19:10:34][plugin_manager.py:66] - Scaning plugins ... [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Banwords_v1.0 registered, path=./plugins\banwords [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin BDunit_v0.1 registered, path=./plugins\bdunit [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Dungeon_v1.0 registered, path=./plugins\dungeon [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Finish_v1.0 registered, path=./plugins\finish [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Godcmd_v1.0 registered, path=./plugins\godcmd [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Hello_v0.1 registered, path=./plugins\hello [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Keyword_v0.1 registered, path=./plugins\keyword [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Role_v1.0 registered, path=./plugins\role chatgpt-tool-hub version: 0.4.3 [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin tool_v0.4 registered, path=./plugins\tool [INFO][2023-05-05 19:10:34][godcmd.py:181] - [Godcmd] 因未设置口令,本次的临时口令为6512。 [INFO][2023-05-05 19:10:34][godcmd.py:196] - [Godcmd] inited [INFO][2023-05-05 19:10:34][keyword.py:40] - [keyword] {} [INFO][2023-05-05 19:10:34][keyword.py:42] - [keyword] inited. [INFO][2023-05-05 19:10:34][init.py:29] - [visual_dl] init failed, error_info: ModuleNotFoundError("No module named 'torch'") [INFO][2023-05-05 19:10:34][init.py:29] - [visual_dl] init failed, error_info: ModuleNotFoundError("No module named 'torch'") [INFO][2023-05-05 19:10:35][chatgpt.py:169] - success use proxy: http://127.0.0.1:10086 [INFO][2023-05-05 19:10:35][victorinox.py:86] - use_tools=['terminal', 'python', 'url-get', 'meteo-weather'], params: {'debug': False, 'openai_api_key': 'sk-', 'open_ai_api_base': '', 'proxy': 'http://127.0.0.1:10086', 'request_timeout': 600, 'model_name': 'gpt-3.5-turbo', 'no_default': False, 'top_k_results': 3, 'news_api_key': '', 'bing_subscription_key': '', 'google_api_key': '', 'google_cse_id': '', 'searx_search_host': '', 'wolfram_alpha_appid': '', 'morning_news_api_key': '', 'cuda_device': 'cpu', 'think_depth': 3, 'arxiv_summary': True, 'morning_news_use_llm': False} [INFO][2023-05-05 19:10:35][tool.py:32] - [tool] inited [INFO][2023-05-05 19:10:35][role.py:69] - [Role] inited [INFO][2023-05-05 19:10:35][dungeon.py:56] - [Dungeon] inited [INFO][2023-05-05 19:10:35][hello.py:23] - [Hello] inited [INFO][2023-05-05 19:10:35][finish.py:23] - [Finish] inited Please press confirm on your phone. Loading the contact, this may take a little while. [INFO][2023-05-05 19:10:54][wechat_channel.py:124] - Wechat login success, user_id: @618**, nickname: ** Login successfully as ** Start auto replying. [INFO][2023-05-05 19:11:02][bridge.py:30] - create bot chatGPT for chat [INFO][2023-05-05 19:11:02][chat_gpt_bot.py:49] - [CHATGPT] query=你好 [WARNING][2023-05-05 19:11:08][chat_gpt_bot.py:138] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000281917AB160>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))) [INFO][2023-05-05 19:11:08][wechat_channel.py:187] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR] 我连接不到你的网络), receiver=@618d50ff176ab3e917c005aa9700... 一直报这个错,微信连上了,用的pandafan设置了PAC白名单,开始显示[chatgpt.py:169] - success use proxy: http://127.0.0.1:10086,但是后面就一直报错:由于目标计算机积极拒绝,无法连接 哪位大神帮忙指点一下

自己解决了:
配置中把原来的
"proxy": "http://127.0.0.1:10080",
改成:
"proxy": {"http": "http://localhost:10080", "https": "http://localhost:10080"},
就OK了

1 similar comment
@yujiaYY
Copy link

yujiaYY commented May 5, 2023

[INFO][2023-05-05 19:10:34][config.py:166] - 配置文件不存在,将使用config-template.json模板 [INFO][2023-05-05 19:10:34][config.py:195] - [INIT] load config: {'open_ai_api_key': 'sk-', 'model': 'gpt-3.5-turbo', 'open_ai_api_base': '', 'proxy': 'http://127.0.0.1:10086', 'request_timeout': 600, 'timeout': 300, 'single_chat_prefix': ['bot', '@bot'], 'single_chat_reply_prefix': '[bot] ', 'group_chat_prefix': ['@bot'], 'group_name_white_list': ['ChatGPT测试群', 'ChatGPT测试群2'], 'group_chat_in_one_session': ['ChatGPT测试群'], 'image_create_prefix': ['画', '看', '找'], 'speech_recognition': False, 'group_speech_recognition': False, 'voice_reply_voice': False, 'conversation_max_tokens': 1000, 'expires_in_seconds': 3600, 'character_desc': '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。', 'subscribe_msg': '感谢您的关注!\n这里是ChatGPT,可以自由对话。\n支持语音对话。\n支持图片输入。\n支持图片输出,画字开头的消息将按要求创作图片。\n支持tool、角色扮演和文字冒险等丰富的插件。\n输入{trigger_prefix}#help 查看详细指令。'} [INFO][2023-05-05 19:10:34][config.py:143] - [Config] User datas loaded. C:\ProgramData\anaconda3\envs\chatgpt\lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning) [INFO][2023-05-05 19:10:34][plugin_manager.py:50] - Loading plugins config... [INFO][2023-05-05 19:10:34][plugin_manager.py:66] - Scaning plugins ... [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Banwords_v1.0 registered, path=./plugins\banwords [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin BDunit_v0.1 registered, path=./plugins\bdunit [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Dungeon_v1.0 registered, path=./plugins\dungeon [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Finish_v1.0 registered, path=./plugins\finish [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Godcmd_v1.0 registered, path=./plugins\godcmd [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Hello_v0.1 registered, path=./plugins\hello [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Keyword_v0.1 registered, path=./plugins\keyword [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin Role_v1.0 registered, path=./plugins\role chatgpt-tool-hub version: 0.4.3 [INFO][2023-05-05 19:10:34][plugin_manager.py:41] - Plugin tool_v0.4 registered, path=./plugins\tool [INFO][2023-05-05 19:10:34][godcmd.py:181] - [Godcmd] 因未设置口令,本次的临时口令为6512。 [INFO][2023-05-05 19:10:34][godcmd.py:196] - [Godcmd] inited [INFO][2023-05-05 19:10:34][keyword.py:40] - [keyword] {} [INFO][2023-05-05 19:10:34][keyword.py:42] - [keyword] inited. [INFO][2023-05-05 19:10:34][init.py:29] - [visual_dl] init failed, error_info: ModuleNotFoundError("No module named 'torch'") [INFO][2023-05-05 19:10:34][init.py:29] - [visual_dl] init failed, error_info: ModuleNotFoundError("No module named 'torch'") [INFO][2023-05-05 19:10:35][chatgpt.py:169] - success use proxy: http://127.0.0.1:10086 [INFO][2023-05-05 19:10:35][victorinox.py:86] - use_tools=['terminal', 'python', 'url-get', 'meteo-weather'], params: {'debug': False, 'openai_api_key': 'sk-', 'open_ai_api_base': '', 'proxy': 'http://127.0.0.1:10086', 'request_timeout': 600, 'model_name': 'gpt-3.5-turbo', 'no_default': False, 'top_k_results': 3, 'news_api_key': '', 'bing_subscription_key': '', 'google_api_key': '', 'google_cse_id': '', 'searx_search_host': '', 'wolfram_alpha_appid': '', 'morning_news_api_key': '', 'cuda_device': 'cpu', 'think_depth': 3, 'arxiv_summary': True, 'morning_news_use_llm': False} [INFO][2023-05-05 19:10:35][tool.py:32] - [tool] inited [INFO][2023-05-05 19:10:35][role.py:69] - [Role] inited [INFO][2023-05-05 19:10:35][dungeon.py:56] - [Dungeon] inited [INFO][2023-05-05 19:10:35][hello.py:23] - [Hello] inited [INFO][2023-05-05 19:10:35][finish.py:23] - [Finish] inited Please press confirm on your phone. Loading the contact, this may take a little while. [INFO][2023-05-05 19:10:54][wechat_channel.py:124] - Wechat login success, user_id: @618**, nickname: ** Login successfully as ** Start auto replying. [INFO][2023-05-05 19:11:02][bridge.py:30] - create bot chatGPT for chat [INFO][2023-05-05 19:11:02][chat_gpt_bot.py:49] - [CHATGPT] query=你好 [WARNING][2023-05-05 19:11:08][chat_gpt_bot.py:138] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000281917AB160>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))) [INFO][2023-05-05 19:11:08][wechat_channel.py:187] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR] 我连接不到你的网络), receiver=@618d50ff176ab3e917c005aa9700... 一直报这个错,微信连上了,用的pandafan设置了PAC白名单,开始显示[chatgpt.py:169] - success use proxy: http://127.0.0.1:10086,但是后面就一直报错:由于目标计算机积极拒绝,无法连接 哪位大神帮忙指点一下

自己解决了:
配置中把原来的
"proxy": "http://127.0.0.1:10080",
改成:
"proxy": {"http": "http://localhost:10080", "https": "http://localhost:10080"},
就OK了

@kugecf
Copy link

kugecf commented May 8, 2023

方案三:RailWay 一键署 (推荐)
铁路每月提供5刀和最多500小时的免费额度。
进入铁路
点击立即部署按钮
设置环境变量来重新加载程序运行的参数,例如open_ai_api_key, character_desc
等候运行,扫描登录即可享用

微信截图_20230508134159
这个是什么原因?

@edu-lance
Copy link

有没有好用的机场推荐

@bo822
Copy link

bo822 commented May 10, 2023

Please press confirm on your phone.
[ERROR][2023-05-10 15:18:33][app.py:52] - App startup failed!
[ERROR][2023-05-10 15:18:33][app.py:53] - 'wxsid'
Traceback (most recent call last):
File "F:\jiqiren\chatgpt-on-wechat\app.py", line 50, in run
channel.startup()
File "F:\jiqiren\chatgpt-on-wechat\channel\wechat\wechat_channel.py", line 116, in startup
itchat.auto_login(
File "F:\jiqiren\chatgpt-on-wechat\lib\itchat\components\register.py", line 38, in auto_login
self.login(enableCmdQR=enableCmdQR, picDir=picDir, qrCallback=qrCallback,
File "F:\jiqiren\chatgpt-on-wechat\lib\itchat\components\login.py", line 61, in login
status = self.check_login()
File "F:\jiqiren\chatgpt-on-wechat\lib\itchat\components\login.py", line 154, in check_login
if process_login_info(self, r.text):
File "F:\jiqiren\chatgpt-on-wechat\lib\itchat\components\login.py", line 206, in process_login_info
core.loginInfo['wxsid'] = core.loginInfo['BaseRequest']['Sid'] = cookies["wxsid"]
KeyError: 'wxsid'这个错误怎么解决

@xieping5820
Copy link

我也这样...有处理方案叫我下

@zhujiagang
Copy link

我来推荐一个我目前在用的解决方案: 在外网服务器搭建一个api.openai.com的反向代理,使用这个教程里面的链接去购买外网服务器 https://www.typemylife.com/how-to-register-openai-chatgpt-get-api-key-create-api-proxy-in-china/ 推荐买这个https://my.racknerd.com/aff.php?aff=7407&pid=358,一年才几十块钱 在VPS上安装Docker服务后,使用此镜像服务,一键搭建反向代理

之后修改config.json文件 把 "proxy": "127.0.0.1:7890", 去掉,换成 "open_ai_api_base": "http://xxx.xxx.xxx.xxx:port/v1", # 其中xxx和port是上面你搭建的反向代理openapi的ip和端口

非常香!

@wjfkook 请问port在哪? 是这里得https://hub.docker.com/r/mirrors2/chatgpt-api-proxy ports: - 80:80吗?是应该写80吗?比如是这样写吗
"open_ai_api_base": "http://192.200.207.88:80/v1"

@6vision
Copy link
Collaborator

6vision commented May 21, 2023

目前的几种方案:

1.直接部署在外网的服务器: 比如 xx云的香港服务器

2.国内环境开代理: 需要 代理软件 及 代理账号

3.托管到容器平台: 如Railway等平台。

背景及讨论过程参考:#310

补充方案4:通过cloudfare works创建api代理,国内服务器直接调用自己的api网址!:https://mp.weixin.qq.com/s/SYGPuHKO7ShzfmBGsQ363w

@LongYi8013609
Copy link

方案三:RailWay 一键部署 (推荐)

Railway 每月提供5刀和最多500小时的免费额度。

  1. 进入 Railway
  2. 点击 Deploy Now 按钮
  3. 设置环境变量来重载程序运行的参数,例如open_ai_api_key, character_desc
  4. 等待运行,扫码登录即可享用

请问方案三用微信登录经常掉线是什么情况呢?

@hzqfsm
Copy link

hzqfsm commented Jun 3, 2023

openai.error.InvalidRequestError: Invalid URL (POST /v1/openai/deployments/gpt-3.5-turbo/chat/completions) 在railway上部署,提示无效URL,但是本地跑没有问题,railway的配置文件也没有啥问题呀,咋回事

解决了吗?

@Abyss-Seeker
Copy link
Contributor

python3.9版本在开了代理的情况下会运行报错,请降低urllib3模块的版本即可,pip install urllib3==1.25.11

真的解决了,谢谢大佬!

@TJL233
Copy link

TJL233 commented Jun 12, 2023

[CHATGPT] APIConnectionError: Error communicating with OpenAI: ('Connection aborted.', BadStatusLine('\x83\x00\x00\x01\x8f'))
[INFO][2023-06-12 15:52:04][wechat_channel.py:186] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR]
我连接不到你的网络), receiver=@fd7c3a0a45aa6ab0d4dee1a39229dfcf8639951840654b4fe9f6ce52af235fff

大佬,这个问题怎么解决

@muyiai
Copy link

muyiai commented Jul 2, 2023

关于部署在国外服务器上的方案,我这边可以提供,比较稳定,有兴趣可以联系

@dameyou
Copy link

dameyou commented Aug 24, 2023

日志:
Start auto replying.
[INFO][2023-08-24 14:16:20][bridge.py:34] - create bot chatGPT for chat
[INFO][2023-08-24 14:16:20][chat_gpt_bot.py:49] - [CHATGPT] query=你好
[WARNING][2023-08-24 14:17:23][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000013FE96F3100>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))
[INFO][2023-08-24 14:17:24][wechat_channel.py:189] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR]
我连接不到你的网络), receiver=@@8dba878239f5a01cc44f395674a62dd4ddb55ad04182e67f6b47bef4542865e5

运用了方案2,用的是clash代理,启动了pac代理模式,也改了proxy,虽然可以登录微信了,但还是说连接尝试失败,然后我通过加速器访问openai的时候,可以经行注册和登录,但每次登录会报无法验证的问题,大佬们请问该怎么解决

@sakura-lj
Copy link

日志: Start auto replying. 开始自动回复。 [INFO][2023-08-24 14:16:20][bridge.py:34] - create bot chatGPT for chat[信息][2023-08-24 14:16:20][bridge.py:34] - 创建用于聊天的机器人聊天GPT [INFO][2023-08-24 14:16:20][chat_gpt_bot.py:49] - [CHATGPT] query=你好[信息][2023-08-24 14:16:20][chat_gpt_bot.py:49] - [聊天] 查询=你好 [WARNING][2023-08-24 14:17:23][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000013FE96F3100>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))[警告][2023-08-24 14:17:23][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: 与 OpenAI 通信时出错: HTTPSConnectionPool(host='api.openai.com', port=443): 超过 url 的最大重试次数: /v1/chat/completions (由 NewConnectionError(' 引起: 无法建立新连接: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。')) [INFO][2023-08-24 14:17:24][wechat_channel.py:189] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR][信息][2023-08-24 14:17:24][wechat_channel.py:189] - [WX] 发送Msg=回复(类型=错误,内容=[错误] 我连接不到你的网络), receiver=@@8dba878239f5a01cc44f395674a62dd4ddb55ad04182e67f6b47bef4542865e5 我连接不到你的网络), receiver=@@8dba878239f5a01cc44f395674a62dd4ddb55ad04182e67f6b47bef4542865e5

运用了方案2,用的是clash代理,启动了pac代理模式,也改了proxy,虽然可以登录微信了,但还是说连接尝试失败,然后我通过加速器访问openai的时候,可以经行注册和登录,但每次登录会报无法验证的问题,大佬们请问该怎么解决

你在calsh中打开了允许局域网连接(Allow LAN)吗?

@kylyzhh
Copy link

kylyzhh commented Nov 11, 2023

可以添加支持更改官方的请求地址吗,把 https://api.openai.com 更改为 https://123123.com 这种?

@jsfgit
Copy link

jsfgit commented Jan 3, 2024

目前的几种方案:

1.直接部署在外网的服务器: 比如 xx云的香港服务器

2.国内环境开代理: 需要 代理软件 及 代理账号

3.托管到容器平台: 如Railway等平台。

背景及讨论过程参考:#310

请教下方案一,香港地区不是也限制了OpenAI的访问吗?如果确认香港服务器可以的话,我就去申请一台。看到凡请答复下,谢谢

@zhouyufugithub
Copy link

方案一:这个方案优点是比较简单,缺点是依赖能访问外网的服务器,成本较高。唯一需要注意的是,服务器最好选择openai支持的地区,且需要访问wechat的后台。

相关issue:#344

更新 03.11: 目前使用方案一被openai限制风险小

我自己搭建了一个国外的vpn服务器,国内服务器连接vpn还是不能使用openai的接口,大佬有解决方案吗?

@2252517609
Copy link

ProxyError: ('Unable to connect to proxy', OSError(0, 'Error'))

@2252517609
Copy link

ProxyError: ('无法连接到代理', OSError(0, '错误'))

求大佬解决

@katfionn
Copy link

在新版的compose参数时(官网复制的),无法正常启动容器,使用旧版的compose参数(此前部署成功后的)可以正常启动并使用,发现新版的缺了OPEN_AI_API_BASE字段,我用ollama的挨批地址填在proxy就不能用了,这个OPEN_AI_API_BASE参数相关的内容可以在官网compose加回来吗


COW搭建环境:docker
对接API:fastgpt、ollama
问题:新旧compose参数有差异

新的compose文件:

version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    environment:
      OPEN_AI_API_KEY: 'ollama'
      MODEL: 'openchat:7b-v3.5-1210-q6_K'
      PROXY: 'https://myserver.com/v1'
      SINGLE_CHAT_PREFIX: '["bot", "@bot"]'
      SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 1000
      SPEECH_RECOGNITION: 'False'
      CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''

旧的compose:

version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    environment:
      OPEN_AI_API_KEY: 'ollama'
      MODEL: 'openchat:7b-v3.5-1210-q6_K'
      OPEN_AI_API_BASE: 'https://myserver.com/v1'
      PROXY: ''
      SINGLE_CHAT_PREFIX: '[""]'
      SINGLE_CHAT_REPLY_PREFIX: '""'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 128000
      SPEECH_RECOGNITION: 'true'
      CHARACTER_DESC: '你是一个情场老手的知性大姐姐,可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''

@katfionn
Copy link

在新版的compose参数时(官网复制的),无法正常启动容器,使用旧版的compose参数(此前部署成功后的)可以正常启动并使用,发现新版的缺了OPEN_AI_API_BASE字段,我用ollama的挨批地址填在proxy就不能用了,这个OPEN_AI_API_BASE参数相关的内容可以在官网compose加回来吗

COW搭建环境:docker

对接API:fastgpt、ollama
问题:新旧compose参数有差异
新的compose文件:

version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    environment:
      OPEN_AI_API_KEY: 'ollama'
      MODEL: 'openchat:7b-v3.5-1210-q6_K'
      PROXY: 'https://myserver.com/v1'
      SINGLE_CHAT_PREFIX: '["bot", "@bot"]'
      SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 1000
      SPEECH_RECOGNITION: 'False'
      CHARACTER_DESC: '你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''

旧的compose:

version: '2.0'
services:
  chatgpt-on-wechat:
    image: zhayujie/chatgpt-on-wechat
    container_name: chatgpt-on-wechat
    security_opt:
      - seccomp:unconfined
    environment:
      OPEN_AI_API_KEY: 'ollama'
      MODEL: 'openchat:7b-v3.5-1210-q6_K'
      OPEN_AI_API_BASE: 'https://myserver.com/v1'
      PROXY: ''
      SINGLE_CHAT_PREFIX: '[""]'
      SINGLE_CHAT_REPLY_PREFIX: '""'
      GROUP_CHAT_PREFIX: '["@bot"]'
      GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
      IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
      CONVERSATION_MAX_TOKENS: 128000
      SPEECH_RECOGNITION: 'true'
      CHARACTER_DESC: '你是一个情场老手的知性大姐姐,可以使用多种语言与人交流。'
      EXPIRES_IN_SECONDS: 3600
      USE_GLOBAL_PLUGIN_CONFIG: 'True'
      USE_LINKAI: 'False'
      LINKAI_API_KEY: ''
      LINKAI_APP_CODE: ''

不过时间久远...不排除OPEN_AI_API_BASE这参数是从某个大佬的配置里抄过来的...结果就是希望...可行的话官方大大在官方配置里加一下

@zhengliangs
Copy link

python3.9版本在开了代理的情况下会运行报错,请降低urllib3模块的版本即可,pip install urllib3==1.25.11

image
为什么我找不到这个

@liaoweikai
Copy link

image
这个问题有解决方案吗?

@BlackChainLife
Copy link

BlackChainLife commented May 18, 2024

如果自己有openai的key,可以参考这个仓库部署openi的代理地址chatgptProxyAPI

@wsy741963
Copy link

我来推荐一个我目前在用的解决方案: 在外网服务器搭建一个api.openai.com的反向代理,使用这个教程里面的链接去购买外网服务器 https://www.typemylife.com/how-to-register-openai-chatgpt-get-api-key-create-api-proxy-in-china/ 推荐买这个https://my.racknerd.com/aff.php?aff=7407&pid=358,一年才几十块钱 在VPS上安装Docker服务后,使用此镜像服务,一键搭建反向代理
之后修改config.json文件 把 "proxy": "127.0.0.1:7890", 去掉,换成 "open_ai_api_base": "http://xxx.xxx.xxx.xxx:port/v1", # 其中xxx和port是上面你搭建的反向代理openapi的ip和端口
非常香!

@wjfkook 请问port在哪? 是这里得https://hub.docker.com/r/mirrors2/chatgpt-api-proxy ports: - 80:80吗?是应该写80吗?比如是这样写吗 "open_ai_api_base": "http://192.200.207.88:80/v1"

正在想难道不支持base_url,这下帮大忙了

@littleYaang
Copy link

我来推荐一个我目前在用的解决方案: 在外网服务器搭建一个api.openai.com的反向代理,使用这个教程里面的链接去购买外网服务器 https://www.typemylife.com/how-to-register-openai-chatgpt-get-api-key-create-api-proxy-in-china/ 推荐买这个https://my.racknerd.com/aff.php?aff=7407&pid=358,一年才几十块钱 在VPS上安装Docker服务后,使用此镜像服务,一键搭建反向代理
之后修改config.json文件 把 "proxy": "127.0.0.1:7890", 去掉,换成 "open_ai_api_base": "http://xxx.xxx.xxx.xxx:port/v1", # 其中xxx和port是上面你搭建的反向代理openapi的ip和端口
非常香!

@wjfkook 请问port在哪? 是这里得https://hub.docker.com/r/mirrors2/chatgpt-api-proxy ports: - 80:80吗?是应该写80吗?比如是这样写吗 "open_ai_api_base": "http://192.200.207.88:80/v1"

正在想难道不支持base_url,这下帮大忙了

请问这里面的外网服务器的教程和购买方式,似乎404了

1 similar comment
@littleYaang
Copy link

我来推荐一个我目前在用的解决方案: 在外网服务器搭建一个api.openai.com的反向代理,使用这个教程里面的链接去购买外网服务器 https://www.typemylife.com/how-to-register-openai-chatgpt-get-api-key-create-api-proxy-in-china/ 推荐买这个https://my.racknerd.com/aff.php?aff=7407&pid=358,一年才几十块钱 在VPS上安装Docker服务后,使用此镜像服务,一键搭建反向代理
之后修改config.json文件 把 "proxy": "127.0.0.1:7890", 去掉,换成 "open_ai_api_base": "http://xxx.xxx.xxx.xxx:port/v1", # 其中xxx和port是上面你搭建的反向代理openapi的ip和端口
非常香!

@wjfkook 请问port在哪? 是这里得https://hub.docker.com/r/mirrors2/chatgpt-api-proxy ports: - 80:80吗?是应该写80吗?比如是这样写吗 "open_ai_api_base": "http://192.200.207.88:80/v1"

正在想难道不支持base_url,这下帮大忙了

请问这里面的外网服务器的教程和购买方式,似乎404了

@littleYaang
Copy link

方案二

原理是通过本地安装的 代理客户端 把 请求转发到 代理服务器,再由能访问外网的代理服务器完成请求。 现在常用的代理协议有 Shadowsocks、V2Ray、Trojan等,这些协议一般会有自己特定的客户端。 而 clash 是一个能同时兼容这些协议的客户端, 所以下面以 clash 为例介绍下如何使用。

1.代理客户端启动

vpn账号的获取就不赘述了,因为获取openai的API_KEY时就是需要代理的。 在本地开发环境启动代理客户端比较简单,一般都有图形界面,打开后就会把所有流量都转发到代理客户端,此时注意要开启分流模式 (PAC, 即访问国内域名不转发),不然可能访问不了wx。

如果是在服务器命令行环境,需要找一个能在linux运行的代理客户端。以clash为例,下载 clash-linux-amd64-v1.13.0.gz, 在服务器上解压并运行 sudo ./clash-linux-amd64-v1.13.0 即可。 同时需要一个 ~/.config/clash/config.yml 配置文件,一般你获取账号的地方 (机场) 都会提供的。

启动后 clash 会监听本地的 7890 端口,所有往这个端口发送的请求都会按照一定规则 转发到 代理服务器 完成访问。

2.程序启动

启动前要在config.json 中加一个proxy配置:

{
  "open_ai_api_key": "YOUR API KEY",
  "proxy": "http://127.0.0.1:7890",
  "single_chat_prefix": ["bot", "@bot"],
  #... 省略 ...
}

这个配置的含义是,所有向openai发送的请求都会发送到 http://127.0.0.1:7890, 这正是clash监听的端口。 如果你用的是别的代理客户端,就改成对应的端口,比如使用 trojan-qt5 会配成 http://127.0.0.1:1080。 这样的好处是只有访问openai时会走到代理,不会影响和wx的交互。

配置添加完后,正常启动程序就可以访问 chatgpt 接口了。

按照这个方法配置后,仍会报如下错,正常的网页是可以访问chatGpt网站的,Trojan-QT5 的入站设置中socks5端口、http端口、PAC端口、Haproxy端口、haproxy状态端口以及出站端口受改为了1086,在config.json中设置为: "proxy": {"http": "http://localhost:1086", "https": "http://localhost:1086"}, 大佬能帮忙看看什么原因吗?

[INFO][2024-06-16 22:47:57][chat_gpt_bot.py:49] - [CHATGPT] query=可可第
[WARNING][2024-06-16 22:48:09][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001CD782088E0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
[WARNING][2024-06-16 22:48:14][chat_gpt_bot.py:160] - [CHATGPT] 第1次重试
[WARNING][2024-06-16 22:48:26][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001CD78F68AF0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
[WARNING][2024-06-16 22:48:31][chat_gpt_bot.py:160] - [CHATGPT] 第2次重试
[WARNING][2024-06-16 22:48:44][chat_gpt_bot.py:150] - [CHATGPT] APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000001CD78F68C10>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
[INFO][2024-06-16 22:48:44][wechat_channel.py:217] - [WX] sendMsg=Reply(type=ERROR, content=[ERROR]
我连接不到你的网络), receiver=@05b254d24974fbd86c86d4ed32c8ef447ea1c7bfa495e73a2f218c50bfac72ef

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tutorial Tutorial provided by maintainer, may be outdated
Projects
None yet
Development

No branches or pull requests