快速结论:该请求发生在 RAGFlow Code 组件中,用户希望一次返回多个可独立引用的输出变量,但当前版本会因“只允许一个业务输出”而报错或配置失败。优先确认是否触发了 [Feature Request]: Support Multiple Output Variables for Code Component 所对应的单业务输出限制,并改用返回单个字典结构配合点号引用。
适用环境:Issue 讨论中提及 RAGFlow v0.25.1+ 的 Code 组件(CodeExec);其余 Python、CUDA、显卡、操作系统版本未在讨论中确认,请勿按此推断。
最快修复方案:让 Code 组件只返回一个字典,例如 {"result": result, "status": status, "metadata": metadata},下游用 {CodeExec:YourComponent@output.result}、{CodeExec:YourComponent@output.status}、{CodeExec:YourComponent@output.metadata.confidence} 形式的点号引用访问嵌套字段。
注意事项:该方案不是真正的多输出,讨论明确指出独立命名输出变量(元组解包、UI 配置输出名、独立变量槽)尚不支持;Switch 等组件无法直接按字段做分支选择,可能仍需中间处理步骤。点号嵌套引用依赖相关嵌套遍历改进,旧版本行为可能不同。
问题场景
用户在 RAGFlow 的 Agent 流程中使用 Code 组件编写 Python 代码,希望同时返回处理结果、状态标记和元数据,并在下游组件中分别引用这些数据。由于 Code 组件当前只允许一个业务输出变量,用户无法为多个返回值分别命名,配置多个输出时会被契约校验拦截。
报错原文
[Feature Request]: Support Multiple Output Variables for Code Component
CodeExec contract must contain exactly one business output, got N
原因分析
可能原因是 Code 组件的 select_business_output() 函数强制要求每次执行有且仅有一个业务输出变量;当用户按多返回值方式配置时,输出数量不为 1,即触发 ContractError。该限制属于组件契约设计,并非运行时环境错误。讨论中也说明,现有能力仅支持返回单个结构化对象,再通过点号访问其字段,不支持真正的多个独立命名输出变量。
环境排查
- 确认 RAGFlow 版本是否为 v0.25.1 及以上,因为讨论中的单业务输出约束基于该版本描述。
- 确认 Code 组件的函数签名是否只声明并返回一个业务输出变量。
- 检查下游变量引用是否使用
{CodeExec:组件名@output.字段}形式,而非直接把多个变量当作独立输出槽引用。 - 若引用嵌套字段失败,确认当前版本是否已包含嵌套遍历支持(讨论提及 PR #11504)。
- Issue 未提供 Python、CUDA、PyTorch、显卡型号信息,这些不是本问题的已确认排查项。
解决步骤
- 将 Code 组件改为只返回一个字典,把需要的数据作为字典字段,例如
{"result": result, "status": status, "metadata": metadata}。 - 保持函数只声明一个返回类型,不要尝试用元组返回多个业务输出。
- 在下游组件中改用点号引用:
{CodeExec:YourComponent@output.result}获取结果,{CodeExec:YourComponent@output.status}获取状态,{CodeExec:YourComponent@output.metadata.confidence}获取嵌套数值。 - 如果确实需要把不同字段路由到不同分支,可优先尝试在流程中增加一个中间处理步骤,因为讨论指出 Switch 组件目前无法直接选择单个字段(该限制尚未确认在所有版本一致)。
验证方法
重新运行包含 Code 组件的流程,确认不再出现 CodeExec contract must contain exactly one business output 报错;并在下游组件的输出预览或调试信息中检查 @output.result、@output.status、@output.metadata.confidence 是否分别取到预期值。若某个字段为空,优先检查点号路径是否与返回字典的键名完全一致。
参考来源
讨论中引用的相关链接:code_exec.py 输出契约、#11868 点号引用、PR #11504 嵌套遍历、PR #15080 多输出提案。
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[v2] Expose request cancellation on MCPServer tool Context](https://www.chat-gpts.plus/wp-content/uploads/2026/11/3389-9eebc666-768x403.jpg)
