[Bug]: KeyError: ‘answer’

用户使用 RAGFlow SDK v0.20.5(Python 客户端),通过 session.ask() 方法流式请求 Agent 会话时触发。用户环境为 Windows,Python 3.10,SDK 版本 0.20.5,RAGFlow 后端镜像版本 0.20.5。

[Bug]: KeyError: 'answer'

[Bug]: KeyError: ‘answer’

快速结论:该报错发生在 RAGFlow SDK 流式调用 session.ask(question, stream=True) 时,后端响应缺少 answer 字段。优先排查 RAGFlow 后端版本是否低于 v0.20.6(PR #9791 后的修复版本),临时可关闭流式模式。

问题场景

用户使用 RAGFlow SDK v0.20.5(Python 客户端),通过 session.ask() 方法流式请求 Agent 会话时触发。用户环境为 Windows,Python 3.10,SDK 版本 0.20.5,RAGFlow 后端镜像版本 0.20.5。

报错原文

Traceback (most recent call last):
  File "agent_demo.py", line 22, in <module>
    for ans in session.ask(question, stream=True):
  File "ragflow_sdk\modules\session.py", line 53, in ask
    message = self._structure_answer(json_data)
  File "ragflow_sdk\modules\session.py", line 64, in _structure_answer
    answer = json_data["data"]["answer"]
KeyError: 'answer'

原因分析

这是 RAGFlow 后端在 v0.20.4/v0.20.5 版本中的已知 bug。当 SDK 以 stream=True 请求时,后端返回的流式 JSON 片段中缺少 answer 字段(原因可能是后端流式输出结构变化导致 SDK 解析失败)。该问题已在 PR #9791 之后的提交中修复。

环境排查

  • 确认 RAGFlow 后端镜像版本(用户反馈为 v0.20.5,该版本存在此 bug)
  • 确认 ragflow-sdk 版本(用户使用 v0.20.5,与后端版本对应)
  • 确认后端 API 接口返回的流式数据格式(可通过抓包或后端日志查看是否包含 answer 键)
  • 建议检查后端是否最新(PR #9791 之后的版本已修复)

解决步骤

  1. 临时方案(可优先尝试):调用 session.ask(question, stream=False) 关闭流式传输。非流式模式不会触发此解析错误,可以正常返回完整答案。详情参见 #9775
  2. 永久方案:升级 RAGFlow 后端镜像至 PR #9791 之后的版本(推荐 nightly 版或最新正式版)。确保 SDK 版本与后端版本兼容并同步更新。
  3. 升级后重启 RAGFlow 服务,并重新运行流式代码验证。

验证方法

在临时方案下,将 stream=True 改为 stream=False 后,代码应不再抛出 KeyError: 'answer',并能正常打印完整响应。升级后端并恢复流式模式后,流式输出也应正常,不再缺失 answer 字段。

参考来源

infiniflow/ragflow #10212(主 Issue)
infiniflow/ragflow #9775(相关 bug 讨论)
infiniflow/ragflow #10117(类似场景参考)

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 11224

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注