
ValueError: tool parameter instruction not found in tool config
快速结论:此报错在 Dify 使用内置代码解析工具(Code Parser Tool)且调用策略为 FunctionCalling 时触发,通常是因为该工具的必填参数未在配置中正确初始化。优先检查 tool 配置中的 language 和 code 参数是否已正确填写。
问题场景
该 Issue 发生在自托管(Self Hosted Docker)环境的 Dify 1.0.0 中,用户使用默认代码解析工具(Code Parser Tool),结合 qwen-max 模型,调用策略设置为 FunctionCalling 时触发了该错误。
报错原文
ValueError: tool parameter instruction not found in tool config
原因分析
Dify 的工具系统在初始化前端参数时,调用 init_frontend_parameter 函数,该函数会检查参数值是否已提供。如果某个参数被标记为必需(required)但未在配置中找到有效值,则会抛出此 ValueError。
在代码解析工具的场景中,language 和 code 都是必需参数。当 FunctionCalling 模式下模型或系统未正确向工具配置提供这些参数时,就会触发该错误。可能原因包括:
- 工具定义中
required标记的参数缺失。 - 在运行时
get_runtime_parameters方法中未正确定义运行时参数。 - 参数默认值
rule.default未设置,且模型未填入对应值。
环境排查
- Dify 版本:1.0.0
- 部署方式:Self Hosted(Docker)
- 模型:qwen-max(FunctionCalling 策略)
解决步骤
以下步骤按 Issue 关联代码和 Dosu 建议的优先顺序排列:
- 检查代码解析工具的 YAML 配置:确保
language和code参数已明确定义。language必须指定为"python3"或"javascript";code为要执行的代码内容。参考配置文件路径:api/core/tools/builtin_tool/providers/code/tools/simple_code.yaml。 - 确认参数初始化逻辑:在
api/core/plugin/entities/parameters.py中,init_frontend_parameter会检查参数是否存在。如果参数标记为必需但未被传入,则会抛出 ValueError。建议检查工具的rule.default是否已设置一个可用的默认值,以防止模型未传入时参数为空。 - 检查运行时参数定义:如果工具自定义了
get_runtime_parameters方法(例如VectorizerTool类示例),确保该方法正确返回了所有必需的运行时参数列表,并且配置与工具定义保持同步。
验证方法
重新触发一次使用代码解析工具的对话或自动化任务,观察是否仍然抛出 ValueError: tool parameter instruction not found in tool config。如果问题解决,工具将正常执行代码并返回结果,不再出现参数缺失的报错。



