Learn
Dify/10-workflow-basics

工作流基础

当需求从「聊聊天」变成「按固定步骤处理一件事」,工作流(Workflow) 就该登场了。它用节点画布把处理逻辑可视化,比让模型自由发挥更可控、可调试、可复现。

1. 什么时候用工作流

  • 流程固定:先 A 再 B 再 C,顺序明确
  • 需要分支判断:满足条件走这条、否则走那条
  • 要调用多个工具/知识库并拼装结果
  • 对输出格式、步骤有强约束
💡工作流 vs Agent

流程你说了算、要稳定可预期 → 工作流。流程连你都不确定、要模型自己想办法 → Agent(第 12 章)。很多生产系统用「工作流为主 + 局部 Agent」的混合。

2. 画布与节点

创建工作流应用后进入画布,核心要素:

  • Start(开始)节点:接收输入变量(如用户问题、文件)
  • 中间节点:LLM、知识检索、代码、条件、迭代等(第 11 章)
  • End(结束)节点:输出最终结果
  • 连线:定义节点执行顺序与数据流向
[Start] --用户输入--> [知识检索] --> [LLM 生成] --> [End]
                                  ↘ [条件判断] --> [代码处理] --> [End]

3. 第一个工作流:问答流水线

我们搭一个「检索增强问答」最小流程:

  1. 添加 Start,定义变量 query(用户输入)
  2. 添加 知识检索 节点,关联你的知识库,输入 query
  3. 添加 LLM 节点,提示词引用检索结果:根据以下资料回答:{{#knowledge#}} 问题:{{#query#}}
  4. 添加 End,输出 LLM 的结果
⚠️连线方向要对

节点连线错乱会导致「数据没传过去」。每个节点的输入来自上游哪个节点的哪个输出,画布上要能一眼看清。调试报错先看连线。

4. 运行与调试

  • 点「运行」输入测试值,画布会高亮每个节点并展示中间结果
  • 某个节点输出异常 → 单独改它,不必重跑全部
  • 支持查看每一次运行的完整链路与变量快照
运行 #12
  Start.query = "如何退款?"
  知识检索 → 命中 3 段
  LLM → 生成答案 128 字
  End → 输出成功

5. 变量在节点间传递

工作流的本质是数据流动。上游节点的输出以 {{#节点ID.字段#}} 形式被下游引用。

{{#start.query#}}        ← Start 节点的 query 变量
{{#retrieve.result#}}    ← 知识检索节点的 result
{{#llm.text#}}           ← LLM 节点的 text
🎯动手做

创建一个工作流应用,搭出「Start → 知识检索 → LLM → End」四节点流水线,运行并观察每个节点的中间输出,确认数据正确传递。

小结

  • 工作流用节点画布把固定流程可视化,比自由对话更可控
  • Start 收输入、End 出结果、连线定顺序,中间是各类节点
  • 运行可逐步高亮、查看中间结果,便于调试
  • 节点间靠 {{#节点.字段#}} 传递数据;下一步详解各节点 →