八: Dify工作流(Workflow)可视化编排:用“AI流程图”实现复杂业务逻辑
摘要: Dify的Workflow(工作流)模式突破了传统聊天机器人的限制,支持多节点、条件判断、循环和函数调用的可视化AI编排。该模式可将AI应用从简单问答升级为复杂业务流程,如意图识别→知识库检索→CRM查询的自动化处理。核心功能包括LLM调用、知识检索、条件分支、API集成等,并通过调试日志和模块化设计实现高效开发。Workflow使Dify成为AI自动化平台,适用于客服系统、数据流程等场景
如果你已经用 Dify 做过聊天机器人或知识库问答,那么你只发挥了它 50% 的能力。
真正让 Dify 脱颖而出的,是它的 Workflow(工作流)模式 —— 一个支持多节点、条件判断、循环、函数调用的可视化 AI 编排引擎。
它就像低代码平台中的“流程设计器”,但专为大模型场景优化,能让你构建出:
- 用户咨询 → 意图识别 → 分流处理 → 自动回复
- 客户提问 → 检索知识库 → 若无结果则调用 API 查询 CRM
- 多轮表单填写 → 数据校验 → 生成合同并发送邮件
本文将带你:
✅ 掌握 Workflow 的核心节点类型
✅ 设计复杂业务流程(含条件分支与循环)
✅ 调试技巧与日志查看方法
让你的 AI 应用从“会说话”进化到“会思考、会做事”。
一、什么是 Workflow?与 Chatbot 的本质区别
对比项 | Chatbot | Workflow |
---|---|---|
交互方式 | 单一 Prompt + 对话历史 | 多节点串联执行 |
逻辑复杂度 | 简单问答 | 支持 if/else、循环、函数调用 |
是否可编排 | 否 | ✅ 可视化拖拽式编排 |
适用场景 | 客服、问答助手 | 自动化流程、决策系统 |
💡 类比:
- Chatbot = 固定剧本的演员
- Workflow = 可自由编排的导演
二、核心节点类型详解
Dify 的 Workflow 采用“节点+连线”的图形化设计模式,支持多种功能节点,以下是常用类型:
1. LLM 节点(大模型调用)
- 功能:调用大模型生成文本
- 配置项:
- 提示词模板(支持变量
{{input}}
) - 模型选择(GPT-4、通义千问等)
- 输出格式(文本、JSON)
- 提示词模板(支持变量
🎯 典型用途:意图识别、内容生成、摘要提取
2. 知识检索节点(Knowledge Retrieval)
- 功能:从指定知识库中检索相关内容
- 配置项:
- 选择知识库
- 设置 top_k 返回数量
- 启用关键词增强
🎯 典型用途:获取产品信息、查找政策条文
3. If/Else 条件判断节点
- 功能:根据变量值跳转不同分支
- 支持表达式:
{{intent}} == "投诉" {{score}} >= 80 {{has_answer}} is true
🎯 典型用途:用户情绪分级 → 普通回复 vs 人工转接
4. HTTP 请求节点(API 调用)
- 功能:调用外部 RESTful API
- 配置项:
- URL、Method(GET/POST)
- Headers、Body(支持 JSON + 变量注入)
- 超时设置
🎯 典型用途:查询订单状态、调用 CRM 接口、发送通知
5. 代码执行节点(Code Executor)
- 功能:运行 Python 或 JavaScript 脚本
- 安全沙箱机制,防止恶意代码
- 可访问上下文变量
示例:Python 脚本计算折扣
def main(inputs):
price = inputs['original_price']
level = inputs['user_level']
if level == 'vip':
return {'final_price': price * 0.8}
else:
return {'final_price': price}
🎯 典型用途:数据处理、逻辑计算、格式转换
6. 变量赋值节点(Variable Assigner)
- 功能:设置或更新变量值
- 支持动态表达式:
{{current_step}} = "step2" {{user_tags}} = ["新客户", "高潜力"]
🎯 典型用途:记录流程进度、打标签
7. 循环节点(Iteration)
- 功能:对列表数据进行遍历处理
- 输入:一个数组变量(如
{{orders}}
) - 输出:逐条处理后的结果集
🎯 典型用途:批量审核订单、群发个性化消息
8. 开始 & 结束节点
- Start Node:流程入口,定义输入参数
- End Node:流程出口,定义返回结果
三、实战案例:构建“用户咨询自动处理系统”
我们来做一个完整的业务流程:
当用户提问时,系统自动识别意图 → 检索知识库 → 若无答案则查询 CRM → 返回结构化回复。
🎯 业务需求
- 输入:用户问题
- 输出:
{ "answer": "回复内容", "source": "knowledge / crm / none" }
🧱 流程设计(共 6 个节点)
[Start]
↓
[LLM 节点] → “识别用户意图”
↓
[If/Else] → 判断是否为“售后问题”
├─ 是 → [知识检索] → [End]
└─ 否 → [HTTP 请求] 调用 CRM API → [End]
🔧 具体配置说明
1. 意图识别 LLM 节点
Prompt:
请分析用户问题的意图,仅返回以下三类之一:售前咨询、售后服务、其他
问题:{{query}}
输出保存为变量:{{intent}}
2. 条件判断节点
设置规则:
{{intent}} == "售后服务"
- 成立 → 走“知识库”分支
- 不成立 → 走“CRM 查询”分支
3. 知识检索节点
- 选择知识库:“售后服务手册”
- 返回 top_3 片段
- 注入 Prompt 回答问题
4. HTTP 请求节点(调用 CRM)
{
"url": "https://api.yourcrm.com/tickets",
"method": "POST",
"headers": {
"Authorization": "Bearer xxx"
},
"body": {
"question": "{{query}}",
"user_id": "{{user_id}}"
}
}
返回结果存入 {{crm_response}}
5. End 节点输出
统一格式:
{
"answer": "{{final_answer}}",
"source": "{{source_type}}"
}
通过前面节点设置 final_answer
和 source_type
。
四、调试与日志查看技巧
再复杂的流程也需要验证。Dify 提供了强大的调试能力。
🔍 调试模式使用步骤
- 点击右上角 “调试” 按钮
- 输入测试参数(如
query: "我的订单还没发货"
) - 点击“运行”
- 查看每个节点的输入/输出
📋 日志面板功能
运行后可查看:
- ✅ 每个节点的执行状态(成功/失败)
- ✅ 输入输出数据(支持展开 JSON)
- ✅ LLM 调用详情(完整 Prompt + 返回结果)
- ✅ HTTP 请求原始报文
- ✅ 代码执行日志(print 输出)
💡 小技巧:点击节点可查看“上下文快照”,了解当前所有变量值。
🛠️ 常见问题排查
问题 | 排查方法 |
---|---|
节点未执行 | 检查前驱节点是否出错或条件不满足 |
HTTP 请求失败 | 查看日志中的 status code 和 error message |
变量为空 | 检查拼写、作用域、是否被正确赋值 |
流程卡住 | 检查是否有死循环或超时设置过短 |
五、高级技巧与最佳实践
✅ 技巧 1:模块化设计
将常用流程(如“身份验证”、“数据清洗”)封装为子 Workflow,在多个应用中复用。
✅ 技巧 2:错误处理
在关键节点后添加“异常捕获”逻辑,避免整个流程中断。
✅ 技巧 3:性能优化
- 避免频繁调用 LLM
- 使用缓存机制(如 Redis 存储常见问答)
- 控制向量检索范围(加元数据过滤)
✅ 技巧 4:版本管理
Dify 支持 Workflow 版本控制,每次修改前建议创建新版本,便于回滚。
✅ 总结:Workflow 是 AI 应用的“指挥中心”
能力 | 实现方式 |
---|---|
复杂决策 | If/Else + LLM 意图识别 |
外部集成 | HTTP 节点 + 自定义工具 |
数据处理 | 代码节点 + 变量管理 |
自动化流程 | 循环 + 条件跳转 |
Workflow 让 Dify 不再只是一个聊天工具,而是一个真正的 AI 自动化平台。
你可以用它构建:
- 智能客服工单系统
- 自动生成周报的工作流
- 多系统联动的 AI Agent
更多推荐
所有评论(0)