ChuanhuChatGPT
ChuanhuChatGPT copied to clipboard
[本地部署] 更改API地址后发生了错误:连接超时,终端无报错
错误描述
更改API地址后,UI右上角显示:☹️发生了错误:连接超时,无法获取对话。请检查网络连接,或者API-Key是否有效。
不更改API地址时,使用代理工具时使用一切正常。
复现操作
你之前干了什么,然后出现了错误呢?例如:
- 正常完成本地部署
- 切换API地址并确定,具体可看下面终端输出
- ChatGPT 没有输出内容,UI右上角显示:☹️发生了错误:连接超时,无法获取对话。请检查网络连接,或者API-Key是否有效
- postman使用本API地址一切正常
错误截图
终端(控制台)中的错误报告
川虎的温馨提示:访问 http://localhost:7860 查看界面
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
INFO:root:API地址更改为了https://*******.xyz/v1/chat/completions
INFO:root:API密钥更改为了sk-P*******************************************a29B
INFO:root:输入为:在
INFO:root:使用流式传输
INFO:root:实时回答模式
INFO:root:输入token计数: 19
INFO:root:传输完毕。当前token计数为[19]
INFO:root:回答为:
INFO:root:输入为:你好,你是谁?
INFO:root:使用流式传输
INFO:root:实时回答模式
INFO:root:输入token计数: 15
INFO:root:传输完毕。当前token计数为[19, 15]
INFO:root:回答为:
INFO:root:输入为:你是谁
INFO:root:使用流式传输
INFO:root:实时回答模式
INFO:root:输入token计数: 11
INFO:root:传输完毕。当前token计数为[19, 15, 11]
INFO:root:回答为:
运行环境
桌面系统
请填写以下列表:
- OS: Windows10 LTSC
- Browser: Chrome
运行依赖
> pip show gradio
Name: gradio
Version: 3.22.1
> python --version
Python 3.11.0
这个老问题了,之前也好多人遇到过(包括我),去看一下readme里的疑难杂症解决→常见问题→配置代理,基本就可以解决啦。
我没有代理啊,只有cf woker或者云函数反代,只能用这个更改API地址,我qqbot用的这个API地址都是正常的。
看来是bug,打了个日志,API地址并没有修改成功 在源代码打日志的地方:chat_func.py:
# 如果有代理,使用代理发送请求,否则使用默认设置发送请求
if proxies:
response = requests.post(
API_URL,
headers=headers,
json=payload,
stream=True,
timeout=timeout,
proxies=proxies,
)
else:
#打日志
print("no proxy:"+API_URL)
response = requests.post(
API_URL,
headers=headers,
json=payload,
stream=True,
timeout=timeout,
)
return response
更改API地址确认后发送提问,终端返回:
川虎的温馨提示:访问 http://localhost:7860 查看界面
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
INFO:root:API地址更改为了https://******.xyz/v1/chat/completions
INFO:root:API密钥更改为了sk-P*******************************************a29B
INFO:root:输入为:你是谁
INFO:root:使用流式传输
INFO:root:实时回答模式
INFO:root:输入token计数: 23
no proxy:https://api.openai.com/v1/chat/completions
Traceback (most recent call last):
File "G:\git-clone\ChuanhuChatGPT2\venv\lib\site-packages\urllib3\connection.py", line 174, in _new_conn
conn = connection.create_connection(
File "G:\git-clone\ChuanhuChatGPT2\venv\lib\site-packages\urllib3\util\connection.py", line 95, in create_connection
raise err
File "G:\git-clone\ChuanhuChatGPT2\venv\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
从终端可见,更改API地址并没有生效,日志输出的还是https://api.openai.com/v1/chat/completions
可能是因为chat_func.py已经在导入presets.py模块并加载了它的API_URL值,所以即使在utils.py模块中修改了它,chat_func.py仍然使用之前加载的原始值。 我在presets.py中加入了更新全局参数API_URL的函数,并在utils.py中def change_api_url(url):调用:
def update_api(url):
global API_URL
API_URL = url
print("presets更改API:"+API_URL)
并将chat_func.py中的stream=False时,更改API地址后可以在非流式情况下正常使用:
# 如果有代理,使用代理发送请求,否则使用默认设置发送请求
if proxies:
response = requests.post(
API_URL,
headers=headers,
json=payload,
stream=True,
timeout=timeout,
proxies=proxies,
)
else:
print("发送请求时的:"+presets.API_URL)
response = requests.post(
presets.API_URL,
headers=headers,
json=payload,
stream=False,
timeout=timeout,
)
return response
utils.py:
def change_api_url(url):
global API_URL
API_URL = url
presets.update_api(url)
a = API_URL
msg = f"API地址更改为了{API_URL}"
logging.info(msg)
return msg
python新手,只能努力到“更改API地址后可以在非流式情况下正常使用”这里了。也不是很懂为什么UI选项为非流式的时候requests.post的还是stream=True。
最新的代码或许已经解决了该错误。请尝试更新一下看看。