![[Bug]: KeyError: 'answer'](https://www.chat-gpts.plus/wp-content/uploads/2026/07/10212-17c7886c.jpg)
[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 之后的版本已修复)
解决步骤
- 临时方案(可优先尝试):调用
session.ask(question, stream=False)关闭流式传输。非流式模式不会触发此解析错误,可以正常返回完整答案。详情参见 #9775。 - 永久方案:升级 RAGFlow 后端镜像至 PR #9791 之后的版本(推荐 nightly 版或最新正式版)。确保 SDK 版本与后端版本兼容并同步更新。
- 升级后重启 RAGFlow 服务,并重新运行流式代码验证。
验证方法
在临时方案下,将 stream=True 改为 stream=False 后,代码应不再抛出 KeyError: 'answer',并能正常打印完整响应。升级后端并恢复流式模式后,流式输出也应正常,不再缺失 answer 字段。
参考来源
infiniflow/ragflow #10212(主 Issue)
infiniflow/ragflow #9775(相关 bug 讨论)
infiniflow/ragflow #10117(类似场景参考)



