Dify: The length of output variable result must be less than 30 elements.

你遇到的错误信息:

Failed to invoke tool 招投标文档-单文件处理: The length of output variable result must be less than 30 elements.

根本原因

这个错误来自 Code 节点(代码执行节点)的输出数组长度验证。当 Workflow 中的 Code 节点(Python/JS 代码)返回了一个超过 30 个元素的数组时,就会被拦截。

验证链路

步骤 位置 说明
配置定义 api/configs/feature/__init__.py:173-183 CODE_MAX_STRING_ARRAY_LENGTH=30, CODE_MAX_OBJECT_ARRAY_LENGTH=30
环境变量默认值 api/.env.example:515-517 同上
读取并传递限制 api/core/workflow/node_factory.py:304-312 构造 CodeNodeLimits 传给 graphon 包
抛出错误 graphon 外部包 (graphon==0.5.3) 的 code_node.py _transform_array_string_output() / _normalize_output_object_array() 中验证,超限则抛出 OutputValidationError

具体原因

招投标文档-单文件处理 工具内部(很可能是一个 Workflow as a Tool 或包含 Code 节点的工作流),其中的 Code 节点 输出变量 result 是一个数组(字符串数组或对象数组),其元素数量 >= 30,触发了验证。

解决方案

有两种方式:

方案一:增大限制(推荐,如果确实需要更多元素)

api/.env 或环境变量中设置:

bash 复制代码
CODE_MAX_STRING_ARRAY_LENGTH=100
CODE_MAX_OBJECT_ARRAY_LENGTH=100

方案二:修改 Code 节点的输出逻辑

检查 招投标文档-单文件处理 这个 Workflow 中的 Code 节点,确保其 result 输出的数组元素不超过 30 个,或对输出做分页/分批处理。

注意

  • 这个限制只作用于 Code 代码节点,不是工具节点本身的限制
  • 如果输出是对象数组就用 CODE_MAX_OBJECT_ARRAY_LENGTH,字符串数组就用 CODE_MAX_STRING_ARRAY_LENGTH
  • 数字数组的限制是 1000,一般不会触发
相关推荐
鬓戈35 分钟前
Qwen3.8-27B + vLLM 性能优化
人工智能·性能优化·vllm
haidao03137 分钟前
氙灯光源技术特性及其在光催化实验中的标准化应用研究
人工智能·python·能源
GreatVicent38 分钟前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
m0_4665252943 分钟前
从火柴人看护画面看云从科技生态企业的隐私保护实践
大数据·人工智能·科技·microsoft
深蓝AI1 小时前
激活3B的搜索智能体拿下82.2分:Iris开源,为什么上下文管理比堆参数更值钱
人工智能
Dawson Zhu1 小时前
基于 OKF 知识图谱的 Text2SQL 领域知识注入实践——半导体晶圆厂数据资产知识库 MVP 剖析
人工智能·语言模型·架构·aigc·agi
宣宣猪的小花园.1 小时前
【机器学习】损失函数与梯度下降:机器如何通过“犯错”不断变好
人工智能·算法·机器学习
jsl_jsl_jsl1 小时前
《Agent 是怎么“思考”的:ReAct 循环与流式 SSE 的完整实现》
人工智能
sarasuki1 小时前
失败重试:Agent 中指数退避的正确姿势
人工智能·设计模式·agent
sxwuyanzu1 小时前
DeepSeek冲IPO-谁在为它付钱-公众号发布稿
大数据·人工智能·科技