Workflow 与 Agent 对比
核心定义
Workflow(工作流):人为定义执行步骤,LLM 只负责执行。你在驾驶,流程是预设的固定路线。
Agent(智能体):LLM 决定下一步做什么,你只定义它能用的工具。LLM 在驾驶,你只给了它方向盘和地图。
一句话区分:Workflow 是你写剧本让 AI 演,Agent 是你给目标让 AI 自己编剧本演。
五维度深度对比
| 维度 | Workflow | Agent |
|---|---|---|
| 控制权 | 开发者完全控制流程 | LLM 控制流程,开发者只定义工具 |
| 可预测性 | 高——每次执行路径相同 | 低——LLM 决策有随机性,路径可能不同 |
| 容错能力 | 刚性执行,遇预设外情况就卡住 | 柔性应变,能自主调整策略 |
| 成本 | 可控 O(1),固定次数 LLM 调用 | 不可控 O(n),LLM 可能多轮循环 |
| 调试难度 | 低——流程固定,可单步测试 | 高——决策不确定,难以复现 |
执行逻辑对比
Workflow:固定剧本
用户输入 → 提取关键词 → 检索文档 → 生成回答 → 输出
流程永远不变。步骤 1→2→3,输入相同则路径相同。
# Workflow:你定义每一步
graph = StateGraph()
graph.add_node("extract_keywords", step1)
graph.add_node("retrieve_docs", step2)
graph.add_node("generate_answer", step3)
graph.add_edge("extract_keywords", "retrieve_docs")
graph.add_edge("retrieve_docs", "generate_answer")
graph.add_edge("generate_answer", END)
Agent:自主规划
用户输入 → LLM 决策:
- 简单问题 → 直接回答
- 需要查文档 → 调检索工具 → 再决策
- 需要计算 → 调计算器 → 再决策
- ...(动态决定)
流程每次可能不同。LLM 决定"下一步调哪个工具、什么时候输出答案"。
# Agent:LLM 决定流程
graph.add_conditional_edges(
"agent",
lambda state: should_retrieve(state), # LLM 决策
{"yes": "retrieve", "no": "answer"}
)
graph.add_edge("retrieve", "agent") # 检索完回到决策点
真实场景对比:客服处理退货
Workflow 方案:接收请求 → 检查订单状态 → 已发货?拒绝 / 未发货?同意
问题:用户说"收到的商品有质量问题,但订单显示已发货",Workflow 直接拒绝——它只检查订单状态,不理解"质量问题"这个例外。
Agent 方案:接收请求 → LLM 分析:未发货→同意退货;已发货→进一步检查理由:质量问题→转人工,不想要→拒绝
区别:Agent 能处理例外情况,Workflow 只能处理预设情况。
适用场景选择
Workflow 适合:流程明确、步骤固定、路径可枚举、要求可预测(金融/医疗/合规)、成本需可控。
典型场景:文档摘要、数据 ETL、报表生成、批量内容审核
Agent 适合:流程不明确、需动态决策、开放性问题、容错率较高。
典型场景:智能客服、代码助手、研究助手、个人助理
2026年的融合趋势:Agentic Workflow
纯 Workflow 和纯 Agent 都有局限。主流做法是 Agentic Workflow——确定性骨架 + Agent 决策节点。
[Workflow 主流程] ← 确定性骨架
↓
[Agent 决策节点] ← 关键分支点交给 LLM
↓
[Workflow 子流程] ← 结果回到确定性流程
设计原则:
- 确定性部分用 Workflow(数据获取、格式转换、结果输出)
- 不确定性部分用 Agent(意图识别、策略选择、异常处理)
- Agent 节点必须设置最大步数和超时,防止失控
- 每个 Agent 节点的输入输出要有明确 Schema,保证主流程可接续
实例:RAG 管道中的 Agentic Workflow
[Workflow] 用户输入 → 预处理
↓
[Agent] 查询重写(LLM 决定用哪种策略)
↓
[Workflow] 向量检索 → 结果排序 → 截断
↓
[Agent] 判断检索结果是否充分(不够则重新检索)
↓
[Workflow] 生成回答 → 格式化输出
选型决策树
任务流程是否可预定义?
├── 是 → 流程是否复杂(条件分支/循环)?
│ ├── 简单 → 纯 Workflow
│ └── 复杂 → LangGraph Workflow + 条件边
└── 否 → 是否需要自主决策?
├── 否 → Workflow + 规则引擎
└── 是 → Agent(设 max_steps + 超时)
混合场景 → Agentic Workflow
(确定性骨架 + Agent 决策节点)
行业现状与避坑
现状:市面上大多数"智能体"产品本质是 Workflow 封装,并非原生 Agent 架构。Dify、Coze 等快速搭建平台的底层仍是工作流。真正的通用型自主 Agent 仍处于早期阶段。
避坑经验:
- 不要一上来就选 Agent——先问"流程能不能写死",能写死就用 Workflow
- Agent 的不可预测性在生产环境是致命的——金融/医疗场景优先 Workflow
- 成本差异巨大:Workflow 每次 3 次 LLM 调用,Agent 可能 10+ 次
- "Agentic"不等于"更好"——很多场景确定性 > 灵活性
- 调试 Agent 必须有完整的决策日志(LangSmith / 自定义 trace)
- 混合架构中,Agent 节点要有 fallback:决策失败时降级为 Workflow 固定路径