第七章:工作流¶
工作流是 Dify 最强大的功能,通过可视化编排实现复杂业务逻辑。本章详细介绍工作流的使用。
工作流基础¶
什么是工作流?¶
工作流是一系列处理节点的有序组合,每个节点完成特定任务:
工作流类型¶
| 类型 | 说明 |
|---|---|
| Chatflow | 支持多轮对话,有对话历史 |
| Workflow | 单次执行,无对话历史 |
创建工作流¶
- 点击 创建应用 → 工作流
- 选择类型(Chatflow 或 Workflow)
- 进入可视化编辑器
节点详解¶
开始节点¶
定义工作流的输入变量:
LLM 节点¶
调用大语言模型:
高级设置:
知识检索节点¶
从知识库检索相关内容:
条件分支节点¶
根据条件走不同路径:
支持的条件运算:
| 运算符 | 说明 |
|---|---|
| == | 等于 |
| != | 不等于 |
| contains | 包含 |
| not contains | 不包含 |
| is empty | 为空 |
| is not empty | 不为空 |
| >, <, >=, <= | 数值比较 |
代码执行节点¶
执行 Python 或 JavaScript 代码:
Python 示例
def main(args):
# 获取输入变量
text = args["text"]
# 处理逻辑
words = text.split()
word_count = len(words)
# 返回结果
return {
"word_count": word_count,
"words": words
}
JavaScript 示例
function main(args) {
const text = args.text;
const words = text.split(' ');
return {
word_count: words.length,
words: words
};
}
HTTP 请求节点¶
调用外部 API:
配置:
方法: POST
URL: https://api.example.com/v1/chat
Headers:
Content-Type: application/json
Authorization: Bearer {{api_key}}
Body:
{
"message": "{{question}}",
"user_id": "{{user_id}}"
}
输出变量: api_response
参数提取节点¶
从文本中提取结构化数据:
变量聚合节点¶
合并多个分支的变量:
迭代节点¶
循环处理数组:
工具节点¶
使用内置工具:
| 工具 | 功能 |
|---|---|
| 网页搜索 | 搜索互联网信息 |
| 天气查询 | 获取天气信息 |
| 当前时间 | 获取系统时间 |
| Wikipedia | 查询维基百科 |
| 计算器 | 数学计算 |
结束节点¶
输出工作流结果:
实战案例¶
案例1:智能客服¶
开始(question)
↓
[意图识别 LLM]
↓
[条件分支]
├── 产品咨询 → [知识检索] → [生成回答 LLM]
├── 售后问题 → [创建工单 HTTP] → [回复用户 LLM]
└── 其他 → [通用回答 LLM]
↓
结束(answer)
意图识别提示词
案例2:内容生成工作流¶
开始(topic, style, length)
↓
[生成大纲 LLM]
↓
[生成内容 LLM]
↓
[内容审核 LLM]
↓
[条件分支]
├── 通过 → [格式化输出]
└── 不通过 → [修改建议] → 返回[生成内容]
↓
结束(content)
案例3:数据分析工作流¶
数据预处理代码
import json
def main(args):
data = args["data"]
# 统计分析
total = len(data)
avg_value = sum(d["value"] for d in data) / total
# 异常检测
anomalies = [d for d in data if d["value"] > avg_value * 2]
return {
"total": total,
"average": avg_value,
"anomalies": anomalies,
"anomaly_count": len(anomalies)
}
调试与测试¶
运行测试¶
- 点击右上角「运行」按钮
- 输入测试变量
- 查看每个节点的执行结果
- 检查最终输出
查看日志¶
断点调试¶
在节点上设置断点,运行到该节点时暂停:
- 右键点击节点
- 选择「设置断点」
- 运行时会在该节点暂停
- 检查变量状态后继续
性能优化¶
1. 减少节点数量¶
合并相似功能,减少不必要的节点。
2. 并行执行¶
独立节点可以并行执行:
3. 缓存结果¶
对于重复计算,使用变量存储结果。
4. 优化提示词¶
简洁的提示词可以减少 Token 消耗和响应时间。
错误处理¶
错误重试¶
错误分支¶
超时设置¶
小结¶
本章介绍了 Dify 工作流的完整功能。通过可视化编排,你可以构建复杂的 AI 应用逻辑。下一章,我们将学习如何通过 API 集成 Dify 应用。