智能体 vs 聊天机器人 vs 工作流 vs 流水线。
"我们构建了一个 AI 智能体"这句话,多数情况下是假的——而这个差距很重要,因为这四样东西各有不同的成本、不同的故障模式、不同的调试故事。本篇给你一个能把任何 LLM 系统归入正确类别的单一判别问题,四个在同一任务上分别以各等级运作的具体示例,以及一个"挑选能用的最简单方案"的决策指南。
那个用来归类的单一问题。
四种系统,自主程度递增。对运行中的系统提出的判别问题是:"在每一步,谁来决定接下来发生什么?"
- 聊天机器人。每一轮都由人类通过输入下一条消息来决定接下来发生什么。模型只产生文本。没有工具会自行触发。每一轮都是对对话的独立推理;循环就是人类按下回车键。
- 流水线(pipeline)。由一个固定的、线性的步骤序列决定接下来发生什么,顺序永不改变。
extract → translate → summarize → store。LLM 可以驱动其中一个或多个步骤,但它不选择序列;代码来选,每次运行都一模一样。 - 工作流(workflow)。由预定义代码决定接下来发生什么,包括分支和循环,但决策逻辑是人类事先写好的。"如果分类器说'退款',就调用退款工具;否则升级处理。"一个 LLM 可以坐在某个分支里,但分支本身是硬编码的——模型填空,它不重画流程图。
- 智能体(agent)。由模型在每一步、根据它刚刚观察到的内容来决定接下来发生什么,而那个决策没有被人类事先枚举。循环由模型自己的选择驱动,而非由脚本驱动。
这正是 Anthropic 在《构建有效的智能体》中所作的区分:工作流通过预定义代码路径编排 LLM 和工具;智能体让 LLM 动态地自主主导它自己的流程。流水线是没有分支的工作流的退化情形;聊天机器人是没有工具、且以人类作为循环的退化情形。
同一个任务,四种做法。
任务:一位客户发来邮件"我的订单 #4471 一直没到,我要退款。"看这四种系统如何处理这个完全相同的输入。
CHATBOT
Agent reads email → drafts a reply suggesting the human
check the order and decide. A support rep does everything.
The "AI" never touches the order system.
PIPELINE
classify(email) → extract(order_id) → lookup(4471)
→ draft_reply(template) → queue_for_human
Same four steps, same order, every email, forever.
No decision is made about WHICH steps to run.
WORKFLOW
classify(email) = "refund_request"
IF order is >30 days late AND amount < $50:
auto_refund(4471); send(approved_template)
ELSE:
escalate_to_human()
A human wrote that IF. The model only filled "refund_request".
AGENT
Model: "I need the order status." → lookup(4471)
Obs: "shipped, stuck in transit 19 days, carrier exception."
Model: "Policy lets me refund late shipments under $50.
This is $34. But I should check it wasn't already
refunded." → check_refunds(4471)
Obs: "no prior refund."
Model: "Refund is appropriate." → issue_refund(4471)
→ compose a specific reply citing the carrier issue.
Nobody scripted that sequence of checks; the model chose it.
智能体的这个序列——查状态,然后意识到还应该检查是否重复退款,然后行动——不在任何人的代码里。这正是你付费购买的能力,也是让智能体更难测试的那个属性:工作流从构造上对每个输入都做同样的事;智能体的路径依赖于输入,且部分不可预测。
每一种让你付出的代价(在"价格"以外的那些列上)。
沿这个阶梯往上走的有趣代价不是令牌——而是可测试性、可预测性和可调试性。把这张表内化;它就是"用能用的最简单方案"的全部论据。
- 可预测性。流水线:完全——每次同样的步骤。工作流:高——有限的、可枚举的分支,你能把它们列出来。智能体:低——路径取决于观察,观察取决于环境,而环境会变。
- 可测试性。流水线/工作流:你可以为每个分支写一个测试并获得覆盖。智能体:没有有限的路径集合可枚举;你用跨多场景的评估套件来测试,并接受一个成功率,而非一个保证。
- 可调试性。工作流故障:某个已知分支做错了事——你找到它并修代码。智能体故障:模型在一条 12 轮轨迹的第 7 轮做了一个你不认同的判断——你调试的是一个行为,而非一行代码。
- 故障模式。流水线可预测且响亮地失败(某一步抛异常)。智能体看似合理且安静地失败(它做了某件看起来合理但其实错误的事,然后继续)。安静的错误远比响亮的错误昂贵。
- 成本方差。流水线每次运行成本相同。智能体的成本从构造上是无界的,除非你给它设界——同一个输入可能走 2 轮也可能走 20 轮。(这正是智能体循环那篇反复强调步数预算的原因。)
要内化的规律:智能体用可预测性换取适应性。你得到一个能处理没人预料过的情况的系统——而你放弃了事先确切知道它会做什么的能力。这个交易对于真正开放式的任务极佳,对于工作流就能搞定的任务则是一笔糟糕的买卖。大多数在生产中失败的"智能体"项目,本是不需要那种适应性、又承受不起那种不可预测性的工作流。
决策指南:被逼到时才往上爬。
默认停在阶梯底部,只有当任务逼着你时才往上爬。按顺序问以下问题;第一个"是"就是你的答案:
- 一个固定的步骤序列能做到吗? → 流水线。"转写通话,做摘要,归档摘要。"顺序永远不需要改变。不要给步骤选择添加不需要的智能。
- 决策点是有限且事先已知的吗? → 工作流。"根据内容把工单路由到账务、技术或销售。"你能把每个分支都列出来。在这里,一个人类编写的、围绕 LLM 步骤的路由器,比一个智能体更可靠、更便宜、更可测试。
- 对话本身就是产品,且人类在每一轮掌舵吗? → 聊天机器人。一个问答助手、一个写作搭档。给用户想要逐轮驾驭的东西加上自主工具使用,通常会让它变差,而非变好。
- 任务是否要求在运行时、根据你无法事先枚举的结果、在一个会变化的环境中决定动作序列? → 智能体。调试一个陌生代码库、每个发现都决定下一个查询的多步研究、操作一个其状态你无法控制的系统。在这里适应性正是关键,而工作流确实无法表达它。
诚实的总结,也是本节其余部分的主线:除了原始能力上限之外,智能体在每一个维度上都是最强大也最昂贵的选项——可预测性、可测试性、成本方差、爆炸半径。当任务真正开放式时,它是正确的工具;当工作流本可胜任时,用它就是一种自我伤害。接下来的篇目——工具与环境、何时该用智能体、风险——都假定你是有意作出这个选择的,而非出于默认或炒作。