AI Workflow(工作流)
AI Workflow 是将 LLM 调用组织成多步骤、有结构的流程来完成复杂任务的设计模式。与 Agent 不同,Workflow 的控制流是预定义的、可预测的。
核心原则
能用简单 Workflow 解决的,就不要用复杂的 Agent。
从最简单的单次 LLM 调用开始,只在确实需要时才增加复杂度。
常见 Workflow 模式
1. Prompt Chaining(提示链)
将任务分解为多个顺序步骤,每步的输出作为下一步的输入:
输入 → LLM(生成大纲) → LLM(扩展内容) → LLM(润色校对) → 输出
适用场景:
- 文档生成(大纲→正文→摘要)
- 数据处理(提取→清洗→格式化)
- 代码生成(需求分析→设计→实现→review)
关键点:每一步之间可以加入验证(Gate),不合格则终止或重试。
2. Routing(路由分发)
根据输入类型或意图,将请求分发到不同的专业处理路径:
用户输入 → 分类器(LLM) → 简单问题 → 直接回答
→ 代码问题 → 代码专用 Prompt
→ 数学问题 → 调用计算工具
→ 翻译需求 → 翻译专用模型
适用场景:
- 客服系统(不同类型工单分发到不同处理流程)
- 多意图识别
3. Parallelization(并行化)
多个 LLM 同时处理不同方面,最后汇总:
┌→ LLM-A(代码质量分析)──┐
用户输入 ────────┼→ LLM-B(安全性检查)────┼→ 汇总结果
└→ LLM-C(性能评估)──────┘
两种模式:
- 分区(Sectioning):不同子任务并行处理,最后合并
- 投票(Voting):相同任务多次运行,取多数结果或最佳结果
适用场景:
- 代码审查(多角度同时检查)
- 内容审核(多模型交叉验证)
- 翻译质量评估(多人投票)
4. Orchestrator-Workers(编排-工作者)
一个编排 LLM 动态拆解任务,分配给多个工作者 LLM 执行:
用户输入 → 编排者(分析任务,拆分子任务)
├→ Worker1(子任务A)
├→ Worker2(子任务B) → 编排者(汇总结果)
└→ Worker3(子任务C)
与并行化的区别:编排者可以根据中间结果动态调整后续任务。
适用场景:
- 复杂的代码重构(编排者决定修改哪些文件)
- 研究任务(编排者决定搜索方向)
5. Evaluator-Optimizer(评估-优化循环)
生成结果后由评估者审查,不合格则带着反馈重新生成:
┌──────────────────┐
↓ │
用户输入 → 生成器(LLM) → 评估器(LLM) → 通过?─→ 输出
│ 不通过
└→ 反馈给生成器
适用场景:
- 代码生成(生成→运行测试→修复→再测试)
- 文案创作(写→审→改→再审)
- 翻译(翻译→回译验证→修正)
如何选择
单步能完成吗? → 是 → 单次 LLM 调用
↓ 否
需要分类处理? → 是 → Routing
↓ 否
可以并行处理? → 是 → Parallelization
↓ 否
步骤固定可预测? → 是 → Prompt Chaining
↓ 否
需要动态拆解? → 是 → Orchestrator-Workers
↓ 否
需要迭代改进? → 是 → Evaluator-Optimizer
↓ 否
需要自主决策? → 是 → Agent
实现工具
| 工具 | 特点 |
|---|---|
| LangChain/LangGraph | 最流行,图+状态机 |
| Dify | 可视化拖拽编排 |
| Flowise | 开源可视化 LLM 编排 |
| n8n | 通用 Workflow + AI 节点 |
| Prefect/Airflow | 传统编排工具 + LLM 集成 |