Workflow as Tool creation fails after renaming a draft input

该报错发生在 Dify 中,当草稿工作流的 Start 节点输入变量被重命名但未重新发布,随后基于当前草稿创建 Workflow as Tool 时,后端仍按上次已发布的工作流校验参数,返回 HTTP 400 “variable not found”。优先排查创建前是否已发布工作流。

快速结论:该报错发生在 Dify 中,当草稿工作流的 Start 节点输入变量被重命名但未重新发布,随后基于当前草稿创建 Workflow as Tool 时,后端仍按上次已发布的工作流校验参数,返回 HTTP 400 “variable not found”。优先排查创建前是否已发布工作流。

适用环境:Dify(Self Hosted / Source 部署),当前 main 分支提交 c6ca395042。未提供操作系统、Python、CUDA、显卡等依赖信息。

最快修复方案:暂无确认的一步修复方案。Issue 中提出的修复建议是在前端 handleCreate 逻辑中先调用 await handlePublish(),与 handleUpdate 保持一致,但该方案尚未在 Issue 中验证部署。

注意事项:此方案为代码层面的推测性修复,需在 Dify 源码中修改并验证;在生产环境操作前请先在测试环境确认行为。

问题场景

用户在 Dify 中执行以下步骤触发问题:

  1. 发布一个工作流,其 Start 节点包含变量 input_num
  2. 在草稿中不重新发布,直接将变量重命名为 input_num2
  3. 打开发布器,使用当前草稿输入创建 Workflow as Tool。

预期行为是创建工具前自动发布当前工作流(与更新路径一致),然后用最新输入变量创建工具;实际行为是工具创建校验用的参数来自草稿,但后端解析的工作流却是上一次已发布的版本,导致校验失败。

报错原文

HTTP 400: variable not found

原因分析

可能原因是前端创建路径(handleCreate)与更新路径(handleUpdate)逻辑不对称:创建工具前没有先发布草稿,而更新工具前会先调用 handlePublish()。前端构建参数时使用的是草稿输入,但后端 create_workflow_tool 通过 App.workflow_id 解析工作流,该 ID 指向的是最后一次已发布的版本,因此参数中的 input_num2 在旧工作流中找不到,最终触发 ValueError("variable not found")

环境排查

  • 确认 Dify 版本为当前 main 分支(提交 c6ca395042)。
  • 检查前端文件 web/app/components/tools/workflow-tool/hooks/use-configure-button.tshandleCreatehandleUpdate 的实现差异。
  • 检查后端文件 api/services/tools/workflow_tools_manage_service.pycreate_workflow_tool 如何通过 app.workflow 解析工作流。
  • 检查 api/core/tools/workflow_as_tool/provider.py_get_db_provider_tool 的参数校验逻辑。

解决步骤

  1. 在修改前,确保当前工作流变更已保存到草稿。
  2. 在源码中找到 use-configure-button.ts 中的 handleCreate 函数。
  3. handleCreate 开头添加 await handlePublish(),确保发布草稿后再执行 createWorkflowToolProvider(data)。此为 Issue 中提出的修复建议,尚未验证,建议先在测试环境验证。
  4. 或者,在操作层面避免该问题:在重命名 Start 节点变量后,先手动发布工作流,再执行创建 Workflow as Tool。

验证方法

按上述步骤重命名变量后,确认创建 Workflow as Tool 不再返回 “variable not found”,且创建的工具输入参数与草稿中最新变量一致。检查前端调用顺序是否先发布后创建,以及后端返回 HTTP 200 成功响应。

参考来源

langgenius/dify #41526

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21300

发表回复

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