简介:很多人把“接了大模型的应用”统称为智能体,但实际上 Agent 与 Workflow 在控制权、决策时机和适用边界上存在根本差异。本文从“下一步谁决定”这一关键分水岭出发,系统拆解两者的定义、工作原理、核心区别与选型建议,帮助开发者在设计大模型应用时避免误用,把确定性问题留给流程,把不确定性问题留给智能体。
在大模型应用开发中,Agent 和 Workflow 是两个高频出现且极易混淆的概念。表面上看,两者都可能在流程中调用大模型,甚至在某个步骤里表现相似,但本质上它们回答的是同一个问题的不同方案:在任务推进过程中,下一步由谁决定?
这个问题只有两个答案:
这不是实现风格的差异,而是控制权归属的根本分野。理解这一点,是正确设计和选型大模型应用的前提。
Workflow 是一段预定义的代码路径。开发者在编码阶段就把步骤顺序、分支条件、异常处理、数据流转全部确定下来,大模型只是在某些指定节点中被调用,承担“填空”性质的工作——例如生成一段文案、做一次意图分类、完成一次格式转换、提取一组结构化字段。
在 Workflow 中,大模型更像是一个被嵌入流水线的“智能组件”,而不是流水线的设计者或驱动者。控制流仍然完全掌握在开发者手中。
控制流确定。 步骤的执行顺序、条件分支的走向、循环的边界,全部由代码定义。同一个输入进入同一条 Workflow,其执行路径是确定且可复现的。
模型角色受限。 模型只在被调用的节点内生效,不参与节点之间的导航决策。它的职责边界被严格限定在“给定输入,产出指定输出”的范围之内。
信息在开发期已知。 Workflow 之所以可以被写死,根本原因是开发者在设计阶段就已经掌握了完成任务所需的全部决策信息。所有可能的输入类型、异常情况、分支条件,都可以在编码时枚举清楚。
用户输入→ 步骤1:大模型进行意图分类(投诉/咨询/购买)→ 步骤2:根据分类结果走固定分支- 投诉分支 → 调用投诉处理模块,大模型生成安抚话术- 咨询分支 → 检索固定知识库,大模型生成回答- 购买分支 → 进入固定下单引导流程→ 步骤3:大模型对最终输出做格式规范化→ 返回结果
在上述流程中,每一步的走向早已确定。大模型只是执行具体的“生成”和“分类”操作,并不决定流程怎么走。
Agent 的核心理念是把导航权交给大模型本身。给定一个目标和一组可用工具,由模型自主决定调用哪个工具、以什么顺序调用、在什么条件下继续或停止。它通过环境反馈——也就是工具执行的返回结果——来驱动下一步行动,形成“行动—观察—再行动”的循环。
这种循环形态通常被称为 ReAct(Reasoning + Acting)循环:模型先推理当前状况,选择一个行动,观察行动结果,再基于新信息进行下一轮推理。循环持续进行,直到模型判断目标已经达成或无法继续推进。
控制流不确定。 同一目标、同一组工具、同一个初始输入,模型在不同运行中可能走出完全不同的执行路径。因为它每一步的决策都依赖上一轮的实时观察结果。
模型是流程驱动者。 模型不只是执行某个步骤,而是负责整个任务的规划、调度和终止判断。它决定“现在该做什么”“用什么工具”“做完了没有”。
信息在运行期涌现。 Agent 之所以需要模型自主决策,是因为完成任务所需的关键信息在开发期不可见。只有跑到某一步、拿到工具返回的内容之后,下一步才有据可依。
目标:帮我查一下某产品在目标市场的竞品价格,并汇总成对比报告第1轮:模型决定调用“网页搜索”工具→ 观察到搜索结果列表第2轮:模型分析结果,决定打开某几个相关页面→ 观察到页面内容第3轮:模型发现缺少某类信息,决定调用“数据提取”工具→ 观察到结构化数据第4轮:模型判断信息已足够,决定生成对比报告→ 输出最终结果,终止循环
在这个例子中,没有任何一步是预先编程好的。每一步的决策都基于前一步的实际反馈。“搜什么”“打开哪个页面”“还需不需要补充信息”“什么时候可以结束”——这些全部由模型在运行期判断。
“下一步谁决定”是表象。往更深一层看,两者差异的根源在于两个权力的归属不同。
| 权力 | Workflow | Agent |
|---|---|---|
| 决策权(下一步做什么) | 开发者,编码时固化 | 模型,运行时行使 |
| 信息权(依据什么决策) | 开发者预知,所有分支和输入在开发期可枚举 | 模型运行时发现,信息在过程中逐步涌现 |
这一对比揭示了一个关键洞察:Workflow 能写死的前提,是开发者已经拥有全部决策所需的信息。Agent 要交给模型的原因,是决策所需的信息只有运行到那一步才会出现。
因此,不能简单地认为“Agent 比 Workflow 更高级”。它们适用的是两类不同性质的任务。当一个任务的所有分支都能在开发期清晰地枚举出来时,强行使用 Agent 并不是技术进步,而是把已知的确定性信息重新交给模型去猜测,这既增加了不确定性,也带来了不必要的 token 消耗、延迟和出错风险。
以下从多个维度系统对比两者差异:
| 维度 | Workflow | Agent |
|---|---|---|
| 下一步决策者 | 代码预定义 | 模型运行时自主 |
| 任务路径 | 固定,开发期已明确全部路径 | 动态,运行中逐步形成 |
| 执行主体 | 确定性代码与固定模型调用 | 模型推理驱动,每一步依赖上轮结果 |
| 输出稳定性 | 高,同输入同输出 | 低,同输入可能产出不同路径与结果 |
| 可预期的任务复杂度 | 适合路径可枚举的任务 | 适合结构未知、信息渐显的开放任务 |
| 可控性与可调试性 | 强,流程清晰可追溯 | 弱,路径不确定,调试成本较高 |
| 资源消耗 | 相对可控 | 可能因多轮循环显著增加 |
| 出错模式 | 主要在步骤内部 | 可能在路径规划、工具选择、终止判断等任意环节出错 |
在设计大模型应用时,首先应该问的不是“要不要用 Agent”,而是:这个任务的决策信息,在开发期是否已经全部掌握?
实际业务系统往往不是纯粹的某一种形态。比较务实的做法是在确定性部分使用 Workflow,在不确定性部分嵌入 Agent。例如,一个客服系统可以先用 Workflow 完成用户身份验证、意图分类和基础信息收集,然后在特定复杂场景下调用一个受限的 Agent 来完成开放性的问题解决。Agent 完成后,结果再回到 Workflow 的固定流程中进行后续处理。
Agent 与 Workflow 的根本区别不在于“有没有用大模型”,也不在于“哪个更智能”,而在于决策权在谁手里、决策所需的信息在什么时候可获得。
Workflow 将决策固化在开发期,是确定性问题的最佳表达方式;Agent 将决策交还运行期,是不确定性问题在技术上的自然回应。真正成熟的设计,不是在二者之间盲目选择“更高级”的那个,而是根据任务的信息结构和决策需求,在确定性与灵活性之间找到恰当的位置。