Yuxi-Know icon indicating copy to clipboard operation
Yuxi-Know copied to clipboard

Question: 前端对话流式响应是否有隐性超时?

Open exa160 opened this issue 2 months ago • 5 comments

问题描述 关于/api/chat/agent/接口的前端问题

Image

在使用本地模型对话时,知识库对话上下文过长,会出现一个超长时间的提示处理(Prompt processing)阶段,前端就会卡在正在回复中,前后端都没有任何报错日志,但是在lmstudio中可以看到客户端已断开连接,时间介于130s-305s之间,提示处理阶段没法打断所以没法得出详细的断开时间。 我查了下资料,有说是fetch方法在浏览器上有自带超时:在Chrome中,网络请求超时为300秒,而在Firefox中为90秒。我用的edge浏览器,理论上和Chrome沾点边,但我怀疑这答案也是ai生成的,fetch接口点进去在文档里没有看到有timeout相关参数,涉及知识盲区了,求解😂

exa160 avatar Dec 22 '25 18:12 exa160

你说的提示处理,应该是指大模型的预填充阶段 prefill,这个也不至于要预填充 100 多秒吧,如果真要这么久的话,这个大模型服务也算是不可用了吧😂

xerrors avatar Dec 22 '25 20:12 xerrors

关于前端 fetch 超时这些,还没了解过

xerrors avatar Dec 22 '25 20:12 xerrors

你说的提示处理,应该是指大模型的预填充阶段 prefill,这个也不至于要预填充 100 多秒吧,如果真要这么久的话,这个大模型服务也算是不可用了吧😂

😂,本地跑是这样的,他最后能填300多秒,应该是上下文太大了,这种场景应该只能交给满血api跑了。max395跑qwen3 30b的性能还行的其实(。另外librechat我怀疑也有这个问题,但他好像偷鸡了,5分钟不操作自动注销。我再琢磨琢磨这个超时是咋回事。

exa160 avatar Dec 23 '25 10:12 exa160

你说的提示处理,应该是指大模型的预填充阶段 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的默认超时导致的断联。

exa160 avatar Dec 24 '25 15:12 exa160

琢磨完了,总结一下,在Ollama中修改超时参数有效,结论如下:

  1. LMStudio 根据cline项目issue下的讨论,超时默认为2分钟,不支持修改超时参数,需等待LMStudio改进
  2. Ollama也有默认超时,通过request timeout参数可修改

备注:Ollama的超时配置有点奇怪,没找详细文档,修改Langchain的timeout参数确实能生效,但改回去也没再复现超时问题,重启Ollama也触发不了,(合理猜测该配置应该是持久性的,可以通过/api/chat接口对话时附带的参数调整Ollama超时(未验证))

其中不确定是ChatOpenAI还是init_chat_model的超时配置成功的,一开始ChatOpenAI的超时参数没生效,后面使用langchain_ollama ChatOllama的timeout生效,后续不复现超时问题。 修改如下,给使用Ollama并且通过接口配置失败的人作为参考: Image 以上修改需安装依赖 langchain_ollama

exa160 avatar Dec 28 '25 10:12 exa160