Question: 前端对话流式响应是否有隐性超时?
问题描述 关于/api/chat/agent/接口的前端问题
在使用本地模型对话时,知识库对话上下文过长,会出现一个超长时间的提示处理(Prompt processing)阶段,前端就会卡在正在回复中,前后端都没有任何报错日志,但是在lmstudio中可以看到客户端已断开连接,时间介于130s-305s之间,提示处理阶段没法打断所以没法得出详细的断开时间。 我查了下资料,有说是fetch方法在浏览器上有自带超时:在Chrome中,网络请求超时为300秒,而在Firefox中为90秒。我用的edge浏览器,理论上和Chrome沾点边,但我怀疑这答案也是ai生成的,fetch接口点进去在文档里没有看到有timeout相关参数,涉及知识盲区了,求解😂
你说的提示处理,应该是指大模型的预填充阶段 prefill,这个也不至于要预填充 100 多秒吧,如果真要这么久的话,这个大模型服务也算是不可用了吧😂
关于前端 fetch 超时这些,还没了解过
你说的提示处理,应该是指大模型的预填充阶段 prefill,这个也不至于要预填充 100 多秒吧,如果真要这么久的话,这个大模型服务也算是不可用了吧😂
😂,本地跑是这样的,他最后能填300多秒,应该是上下文太大了,这种场景应该只能交给满血api跑了。max395跑qwen3 30b的性能还行的其实(。另外librechat我怀疑也有这个问题,但他好像偷鸡了,5分钟不操作自动注销。我再琢磨琢磨这个超时是咋回事。
你说的提示处理,应该是指大模型的预填充阶段 prefill,这个也不至于要预填充 100 多秒吧,如果真要这么久的话,这个大模型服务也算是不可用了吧😂
😂,本地跑是这样的,他最后能填300多秒,应该是上下文太大了,这种场景应该只能交给满血api跑了。max395跑qwen3 30b的性能还行的其实(。另外librechat我怀疑也有这个问题,但他好像偷鸡了,5分钟不操作自动注销。我再琢磨琢磨这个超时是咋回事。
关于超时问题,参考这个: https://github.com/lmstudio-ai/lmstudio-bug-tracker/issues/1143 这里最后提到这两个issue: For more info see: see: https://github.com/cline/cline/issues/6361 and: https://github.com/RooCodeInc/Roo-Code/discussions/6445 有大佬提了,一方面应该是fetch有超时(原文:the timeout is in the native fetch library of Node.js (according to Thornad)),可能是十分钟,另一方面是lmstudio有默认超时并且不能外部配置。这两个issue的结论是可以先替换掉lmstudio/多问几次有可能通过缓存成功得到答案。 另外我确认了一下langchain的ChatOpenAI默认超时是None,所以我这里可能是lmstudio的默认超时导致的断联。
琢磨完了,总结一下,在Ollama中修改超时参数有效,结论如下:
- LMStudio 根据cline项目issue下的讨论,超时默认为2分钟,不支持修改超时参数,需等待LMStudio改进
- Ollama也有默认超时,通过request timeout参数可修改
备注:Ollama的超时配置有点奇怪,没找详细文档,修改Langchain的timeout参数确实能生效,但改回去也没再复现超时问题,重启Ollama也触发不了,(合理猜测该配置应该是持久性的,可以通过/api/chat接口对话时附带的参数调整Ollama超时(未验证))
其中不确定是ChatOpenAI还是init_chat_model的超时配置成功的,一开始ChatOpenAI的超时参数没生效,后面使用langchain_ollama ChatOllama的timeout生效,后续不复现超时问题。
修改如下,给使用Ollama并且通过接口配置失败的人作为参考:
以上修改需安装依赖 langchain_ollama