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

解决FastGPT中SSE解析不完整chunk导致内容显示不全的问题

使用FastGPT时,SSE流式返回的内容仅显示部分,剩余内容无法正常加载或展示。不完整的chunk会导致后续的chunk无法正常解析为JSON格式,最终仅返回部分解析结果。 问题源于原代码中SSEParseData类的parse方法未处理不完整的chunk场景。

现象

使用FastGPT时,SSE流式返回的内容仅显示部分,剩余内容无法正常加载或展示。不完整的chunk会导致后续的chunk无法正常解析为JSON格式,最终仅返回部分解析结果。

可能原因

问题源于原代码中SSEParseData类的parse方法未处理不完整的chunk场景。原逻辑在拼接storeReadData与当前item.data后尝试解析JSON,若解析失败则将当前data存入缓存,但缓存逻辑存在漏洞,无法正确累积不完整的chunk片段,导致部分不完整的chunk被丢弃,且后续chunk无法与缓存内容拼接为完整的JSON,最终仅返回部分解析结果。

排查步骤

  1. 观察FastGPT的流式返回结果,确认是否仅展示部分内容,剩余内容未正常加载。
  2. 检查SSE解析相关的代码,定位到SSEParseData类的parse方法,查看其chunk处理与JSON解析逻辑。
  3. 模拟返回不完整的JSON片段作为SSE chunk,复现仅显示部分内容的问题,验证异常场景。

解决与验证

可以通过替换为更健壮的SSE处理库来解决该问题,推荐使用Azure官方的fetch-event-source库。该库会自动处理不完整的chunk拼接,确保流式数据可以被正确解析。具体操作需将原有的parseStreamChunk逻辑替换为该库的处理流程。验证时,重新发起流式请求,确认所有返回的内容都能完整展示,无截断或部分显示的情况,且后续chunk可以正常解析为JSON格式。

来源:FastGPT GitHub issue