Workflow 与 Agent 对比

2026-06-13WorkflowAgent对比架构

核心定义

Workflow(工作流):人为定义执行步骤,LLM 只负责执行。你在驾驶,流程是预设的固定路线。

Agent(智能体):LLM 决定下一步做什么,你只定义它能用的工具。LLM 在驾驶,你只给了它方向盘和地图。

一句话区分:Workflow 是你写剧本让 AI 演,Agent 是你给目标让 AI 自己编剧本演。

五维度深度对比

维度WorkflowAgent
控制权开发者完全控制流程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 固定路径
未标记