Dify 工作流编排(Workflow / Chatflow)
适用版本:Dify Community Editionv1.16.0
面向读者:零基础,已会做简单 Chatbot,想做多步骤应用
阅读时长:约 30 分钟
前置:04-核心概念与基础使用.md
目标:理解节点、学会拖拽连线,从零搭一个「多步工作流」。
1. 为什么要学工作流?
聊天助手适合「一问一答」。但现实任务往往是多步的,比如:
「收到用户问题 → 先判断是咨询还是投诉 → 咨询就查知识库回答,投诉就生成工单并通知人工 → 最后统一回复用户」
这种「有判断、有分支、有顺序」的任务,用Workflow(工作流)或Chatflow(对话流)最合适。
| 类型 | 区别 | 选它当… |
|---|---|---|
| Workflow | 非对话,跑一遍出结果(像程序) | 批处理、自动化、一次性生成 |
| Chatflow | 对话 + 节点结合 | 带流程的聊天机器人 |
新手建议:先学Workflow理解「节点+连线」的套路,再学Chatflow。
2. 核心思想:节点 + 连线 = DAG
工作流是一张有向无环图(DAG):
- 节点(Node):每个步骤(如「调用大模型」「查知识库」「判断条件」)。
- 连线(Edge):数据从 A 流到 B,B 能用到 A 的输出。
- 开始节点:入口,定义输入参数。
- 结束节点:出口,定义最终返回什么。
开始 ──▶ [LLM 写草稿] ──▶ [条件判断] ──┬─ 是 ─▶ [知识检索] ──▶ 结束 └─ 否 ─▶ [代码处理] ──▶ 结束📌名词解释 · 什么是 DAG?有方向(数据单向流)、无环(不会绕回自己死循环)的图。保证流程能跑完。
3. 节点大全(v1.16.0 常用)
3.1 逻辑类
| 节点 | 作用 |
|---|---|
| 开始 Start | 流程入口,定义输入变量(如{{用户问题}}) |
| 结束 End | 流程出口,定义输出 |
| IF/ELSE 条件分支 | 根据条件走不同分支 |
| Switch 多分支 | 一个变量多个取值,各走各的路 |
| 迭代 Iteration | 循环处理列表(如逐条总结多篇文章) |
| 变量聚合 Variable Aggregator | 把多条分支的结果汇到一起 |
3.2 大模型类
| 节点 | 作用 |
|---|---|
| LLM | 调用大模型生成/理解文本 |
| 问题分类器 Question Classifier | 先给问题分类,再分流(如售前/售后/投诉) |
| 参数提取器 Parameter Extractor | 从一段话里抽出结构化字段(如日期、金额) |
3.3 知识 / 数据类
| 节点 | 作用 |
|---|---|
| 知识检索 Knowledge Retrieval | 从知识库取相关片段(RAG) |
| 模板转换 Template | 用变量拼出固定格式文本 |
| 变量赋值 / 赋值 | 修改流程中的变量值 |
3.4 工具 / 执行类
| 节点 | 作用 |
|---|---|
| 工具 Tool | 调用任意内置或 MCP 工具(搜索、代码…) |
| 代码 Code | 跑一小段 Python/JS 处理数据(如格式化、计算) |
| HTTP 请求 | 调用外部 API |
| Agent 节点 | 在工作流里嵌入一个会自主调用工具的子智能体 |
3.5 交互类(v1.14+ 重点)
| 节点 | 作用 |
|---|---|
| Human-in-the-Loop(人工审核 / 人工输入) | 流程中途暂停,等真人审核/填写后再继续(v1.14 引入,v1.15 表单支持下拉/文件上传) |
🌟HITL(人工介入)是 v1.14+ 的王牌功能:比如「AI 生成了退款金额,先暂停让主管点『批准/驳回』,再继续执行」。表单可通过 WebApp 或邮件送达审核人。
4. 思维链可视化(v1.15+ 新特性)
v1.15 起,Workflow / Chatflow 运行时会把模型的**「思考过程」**流式显示在一个独立的「思考面板」里,最终答案保持干净。刷新页面后思考记录仍在,CLI 和工作流预览里也能看到。
对教学很有用:学员能清楚看到 AI「先想了什么、再得出什么结论」,便于理解和排错。
5. 动手:从零搭一个「智能客服分类工作流」
场景:用户提问 → 先分类(咨询 / 投诉 / 其他)→ 咨询走知识库回答,投诉走工单模板,其他走兜底回复。
步骤 1:新建 Workflow
「+ 创建应用」→工作流(Workflow)→ 名称「智能客服分流」。
步骤 2:配置「开始」节点
点「开始」节点,添加输入变量:用户问题(文本框)。
步骤 3:加「问题分类器」
从节点面板拖入问题分类器,连到开始节点。配置:
- 输入:
用户问题 - 分类:
咨询类/投诉类/其他 - 可让 LLM 根据提示自动分类。
步骤 4:分三路
- 咨询类 → 知识检索节点:选择你建好的「产品知识库」,返回相关片段给 LLM 节点总结回答。
- 投诉类 → 模板转换节点:拼出「已收到您的投诉,工单号 {{随机}},我们会尽快联系您」。
- 其他 → 直接 LLM 节点:用模型生成友好兜底回复。
步骤 5:「结束」节点
把三路结果都接到一个变量聚合,再连到「结束」,输出最终回复文本。
步骤 6:运行测试
点「运行 / 预览」,输入不同问题(如「怎么退货?」属咨询;「你们服务太差!」属投诉),观察是否走对分支。
✅ 跑通即说明你掌握了「节点 + 分支 + 聚合」的核心套路。
6. 常见编排错误与排查
| 现象 | 原因 | 解决 |
|---|---|---|
| 节点灰色连不上 | 类型不匹配(如把数组接给单值) | 检查上游输出类型,加「模板/代码」转换 |
| 流程卡住不结束 | 某分支没连到结束 | 确保每个分支最终汇入结束 |
| 变量取不到值 | 变量名拼错或未在「开始」声明 | 检查{{变量名}}与开始节点一致 |
| 工作流预览一直转圈 | Celery 队列缺workflow_based_app_execution | 见 02-安装与部署.md 第 2 节 |
| 想让 AI 中途等人 | 没加 HITL 节点 | 拖入「人工输入 / 审核」节点并配置表单 |
7. 进阶小贴士
- 迭代节点:处理「一个列表多项」时(如 10 条评论逐条打分),用迭代 + 内部 LLM 节点。
- 代码节点:需要精确格式化(日期、金额、JSON)时,用 Python 比让 LLM 更靠谱。
- Agent 节点:某一步需要「灵活决策」而非固定流程时,嵌入一个 Agent 子节点。
- 模板节点:把多个变量拼成发给用户的固定话术,减少 LLM 调用、省 Token。
8. 名词速查(本篇)
| 词 | 意思 |
|---|---|
| DAG | 有向无环图,工作流的底层结构 |
| 节点 Node | 一个处理步骤 |
| HITL | 人工介入 / 人工审核节点 |
| 思维链 CoT | 模型「思考过程」的可视化 |
9. 动手练习
- 按第 5 节搭出「智能客服分流」工作流并测试三种输入。
- (挑战)给「投诉类」分支加一个HITL 人工审核节点,配置一个「批准/驳回」按钮表单。
- (挑战)用迭代节点实现「输入 3 条用户反馈,逐条生成改进建议并汇总」。
完成后,进入 06-知识库与RAG实战.md,学习怎么让 AI 真正「读得懂你的资料」。
下一步:06-知识库与RAG实战.md —— 上传文件、切片、检索,告别 AI 胡说。