故障排查GitHub issue2 分钟阅读排错/错误码

解决FastGPT中知识库较多时模型输出截断的问题

加载较多知识库时,模型输出常中途截断。当知识库仅包含12本书时,模型输出完整;知识库内容较多时,输出到一半即停止。使用硬件为40902,max-model-len设为18048,总token配置为18000,索引字数4000多,未触发总token限制。 存在两类潜在诱因。

现象

加载较多知识库时,模型输出常中途截断。当知识库仅包含1~2本书时,模型输出完整;知识库内容较多时,输出到一半即停止。使用硬件为4090*2,max-model-len设为18048,总token配置为18000,索引字数4000多,未触发总token限制。

可能原因

存在两类潜在诱因。其一为总token超限,部分场景下配置未满足输入输出的总token需求;其二为流式输出相关的系统bug,表现为请求实际完成但输出分批返回,间隔数秒后中断,刷新页面可显示完整内容,前后端无报错日志。

排查步骤

  1. 核对模型总token配置,确认输入加输出的token上限是否匹配实际业务需求。
  2. 检查前后端日志,排查是否存在未上报的请求中断或超时类错误。
  3. 验证刷新页面后是否可显示完整输出内容,辅助判断是否为流式输出异常。

解决与验证

针对流式输出相关的系统bug,可通过优化输出速率控制函数修复。统一限制输出速率,例如每20ms输出一个字,修改streamResponse函数,在逐字输出时添加延迟控制。具体修改可参考提供的代码逻辑,在流式响应循环中加入延迟处理,避免输出过快导致中断。验证方式为部署修改后的代码,重新加载较多知识库的场景,确认模型输出完整无截断。

来源: FastGPT GitHub issue #2093