[Question]: Agent v0.20.1 Error with Python API, v0.19.1 Works Normally

该报错通常出现在把 RAGFlow Agent 从 v0.19.1 升级到 v0.20.1 后,仍用旧版 Python SDK 方式调用 Agent 问答接口的场景。核心原因是 v0.20.1 改动了 Agent 会话 API 与输入参数格式,导致旧调用方式或旧 Agent 流程配置不兼容,从而抛出

快速结论:该报错通常出现在把 RAGFlow Agent 从 v0.19.1 升级到 v0.20.1 后,仍用旧版 Python SDK 方式调用 Agent 问答接口的场景。核心原因是 v0.20.1 改动了 Agent 会话 API 与输入参数格式,导致旧调用方式或旧 Agent 流程配置不兼容,从而抛出 KeyError。应优先核对 Agent 流程中是否包含 Interact 组件,并按新参数结构调整调用。

适用环境:RAGFlow 服务端 v0.20.1;ragflow-sdk v0.20.1;对比环境为 Agent v0.19.1(同一 API 调用可正常执行);操作系统、Python 版本、CUDA、显卡等环境信息 Issue 中未提供。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的方向是:按 v0.20.1 的新格式把参数放入 inputs 对象(每项含 type 与 value 字段)、请求体中参数名改用 query,并确保 Agent 对话流包含 Interact 组件。

注意事项:上述修复方向来自 Issue 讨论中的说明,并未在该 Issue 中标注为已由用户验证通过,属于可优先尝试的方向。若自定义了工具或组件,还需按新版的 ToolParamBase 类与 meta 字典模式改写,否则可能继续报错。截图中完整的 KeyError 堆栈未在正文中给出,具体缺失的键需以实际报错为准。

问题场景

用户使用 Python 脚本通过 ragflow_sdk 调用 RAGFlow Agent:先调用 rag_object.list_agents(id=AGENT_id)[0] 取到 Agent,再执行 agent.create_session(),随后在循环里用 session.ask(question, stream=True) 流式输出回答。同一段代码在 Agent v0.19.1 下可以正常执行,升级到 v0.20.1(SDK 版本同为 v0.20.1)后报错。

报错原文

[Question]: Agent v0.20.1 Error with Python API, v0.19.1 Works Normally

KeyError

(Issue 正文仅以截图展示报错,未贴出完整堆栈;评论中将其描述为 KeyError。)

原因分析

可能原因是 v0.20.1 对 Agent 会话接口做了不兼容变更:输入参数需要放进 inputs 对象,且每个参数要带 type 与 value 字段;请求体中的参数名由 question 改为 query。如果 SDK 调用方式或 Agent 配置仍是旧格式,服务端在读取新结构时找不到预期字段,就会触发 KeyError。另一个可能原因是 Agent 的对话流中缺少 Interact 组件,导致通过 Python SDK 发起的交互式会话无法正常建立。此外,若流程中包含自定义工具或组件,未改用新的 ToolParamBase 类与 meta 字典模式,也可能引发同类错误。

环境排查

  • 确认 ragflow_sdk 版本与服务端版本是否一致(Issue 中为 v0.20.1)。
  • 确认 Agent 对话流中是否包含 Interact 组件;缺少该组件时 Python SDK 的交互式会话可能失败。
  • 检查请求体参数结构:参数是否置于 inputs 对象内,且每项包含 type 与 value。
  • 检查请求体参数名是否为 query,而非旧的 question。
  • 若使用了自定义工具或组件,确认是否已迁移到 ToolParamBase 类与 meta 字典模式。

解决步骤

  1. 保留可用的 v0.19.1 环境或备份,作为对照基线,确认问题确实由版本升级引入。
  2. 检查 Agent 的对话流配置,确保包含 Interact 组件;若缺失,先在编排页面补上再重试。
  3. 按 v0.20.1 的新输入格式调整 Python 调用:把参数放入 inputs 对象,每项提供 type 与 value 字段,并将参数名改为 query。
  4. 若流程中有自定义工具或组件,按新版 ToolParamBase 类与 meta 字典模式改写后再测试。
  5. 逐项变更后重新运行脚本,对照报错位置定位具体缺失的键,而不是一次性改动所有配置。

验证方法

以相同 API 调用运行原 Python 脚本:list_agents、create_session 能正常返回,session.ask(..., stream=True) 能持续输出回答且不再抛出 KeyError,即视为问题已解决。建议同时保留 v0.19.1 下的运行结果作对照,确认返回内容与升级前一致。

参考来源

infiniflow/ragflow #9551

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 34114

发表回复

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