Overseas access: www.kdjingpai.com
Bookmark Us
Current Position:fig. beginning " AI How-Tos

Dify 工作流模块化挑战与解决方案:Chatflow Invoker 插件深度解析

2025-08-25 23

Dify 作为一个开源的 LLM 应用开发平台,凭借其从 Agent 构建、AI workflow 编排到 RAG 检索和模型管理的全方位能力,在开发者社区中获得了广泛关注。它以优雅的设计和流畅的体验著称,同时开发团队惊人的迭代速度也让其功能不断完善。

然而,随着应用场景的复杂度提升, Dify 在工作流编排方面的一个核心限制逐渐显现:平台当前不支持多 Chatflow 之间的编排与相互调用。这意味着所有业务逻辑都必须集成在单一的 Chatflow 画布中。当逻辑变得复杂时,这个画布将迅速膨胀,导致可维护性急剧下降。

(go ahead and do it) without hesitating Dify 提供了一种将 Chatflow convert Workflow 并发布为工具节点 (Tool) 的变通方案,但该方法存在两个关键缺陷:

  • 无法实现流式输出:以工具节点形式调用的 Workflow unsupported Chatflow 原生的流式输出 (Streaming Output) 能力。这会牺牲用户体验,尤其是在需要即时反馈的对话式应用中。
  • 不支持多个输出节点:: Workflow 的单一输出限制了其在复杂数据处理和分支逻辑场景下的应用。

为了突破这些限制,社区开发者推出了一款名为 Chatflow Invoker 的插件。它允许将任何本地或远程的 Chatflow 封装为流程中的一个独立节点,实现了跨 Chatflow 的无缝调用,从而有效提升了 AI 应用开发的模块化、灵活性和可维护性。

Chatflow Invoker 插件的核心优势在于:

  • realization Chatflow 的模块化:复杂的业务逻辑可以被拆解为多个独立的 Chatflow 单元,显著提高逻辑的复用性。
  • 支持跨 Chatflow invocations:在不同的 Chatflow 之间可以轻松传递数据和指令,实现更灵活的业务流程。
  • 保持完整的流式输出体验:即使在跨 Chatflow 调用的场景下,依然能保留原生的流式输出特性,保障了终端用户的交互体验。

Usage

Chatflow Invoker 支持本地和远程两种调用模式,覆盖了单实例和分布式部署的不同需求。

本地 Chatflow 调用

本地调用适用于在同一个 Dify 实例内部对不同的 Chatflow 进行编排。

输入参数:

  • APP ID(必填):目标 Chatflow 的应用 ID。该 ID 可以从 Dify 应用的 URL 中直接获取。
  • Prompt(必填):发送给目标 Chatflow 的查询或指令。
  • Inputs JSON(可选):一个 JSON 格式的字符串,用于传递给 Chatflow 开始节点的输入参数。
  • Conversation ID(可选):用于维持多轮对话的会话 ID。如果需要基于之前的对话历史继续交互,必须提供上文消息的 conversation_idThe

Operational Steps:

  1. 定位目标 Chatflow (used form a nominal expression) APP ID。例如,在 https://dify/app/f011f58c-b1ce-4a9b-89b2-f39fce8466a8/workflow 这个 URL 中, f011f58c-b1ce-4a9b-89b2-f39fce8466a8 就是 APP IDThe
  2. exist Chatflow Invoker 节点中配置 Inputs JSON 参数,以定义需要接收的变量。
  3. 在回复节点中,确保选择 stream_output 变量,以接收并向下游传递流式输出的结果。
  4. 执行测试,可以看到插件成功调用了另一个 Chatflow ,并完整地返回了流式输出内容。

远程 Chatflow 调用

远程调用功能进一步扩展了 Dify 的应用边界,允许用户构建跨不同 Dify 实例的分布式 AI 应用系统。

输入参数:

  • URL(必填):远程 Dify 实例的消息 API 地址,例如 http://127.0.0.1:5001/v1/chat-messagesThe
  • API Key(必填):目标 Chatflow 的 API 访问密钥。
  • Prompt(必填):发送的查询或指令。
  • User(必填):用于标识终端用户身份的字符串,便于后续进行日志检索和使用统计。
  • Inputs JSON(可选):传递给 Chatflow 开始节点的输入参数。
  • Conversation ID(可选):用于保持多轮对话状态的会话 ID。

Operational Steps:

  1. 在需要被调用的远程 Chatflow 的“访问 API”菜单中生成一个 API KeyThe
  2. 将远程 Dify 的 API 地址和生成的 API Key 填入 Chatflow Invoker 插件的相应字段。
  3. importation Prompt 并执行,即可实现远程调用,同时保持流式输出。

与本地调用相比,远程调用一个额外的好处是,所有调用记录都会在被调用的 Dify 实例中留下完整的日志,便于调试和监控。

Development Description

目前,为 Dify 开发插件的参考文档相对较少,AI 模型也缺乏相关的训练数据。不过,Dify 的官方代码仓库提供了丰富的插件样例,是学习和开发的重要资源。

exist Chatflow Invoker 的开发过程中,曾尝试使用 app-selector 组件让用户通过界面选择 Chatflow,但该组件在工具节点场景下存在缺陷,导致无法选中应用。因此,最终采用了手动填写 APP ID 的方式作为替代方案。

Chatflow Invoker 插件现已在 Dify 官方插件市场上线,用户可以直接搜索并安装使用。其源代码也已在 GitHub 上开放。

源码地址:https://github.com/yzddmr6/chatflow_invoker

Can't find AI tools? Try here!

Just type in the keyword Accessibility Bing SearchYou can quickly find all the AI tools on this site.

Top

en_USEnglish