何时该用智能体——以及何时不该。
最有价值的智能体技能不是构建一个——而是识别出那少数确实需要智能体的问题。智能体是本节中最强大的模式,也是在除能力之外每个维度上最昂贵的。本篇是一个决策程序:一个任务要值得用智能体必须具备的三个属性、选择智能体的诚实代价、能解决大多数"智能体"问题的更便宜模式、以及一份不该动用智能体的简短清单。
一个任务要值得用智能体所需的三个属性。
只有当一个任务同时具备这三者时,智能体才配得上它的代价。三中得二意味着工作流做得更好;只得一或零意味着智能体完全是错误的工具。
- 1. 路径无法事先枚举。步骤序列取决于你只有在运行时才知道的结果,而那些结果变化大到你画不出流程图。调试一个陌生的故障:每条线索都重定向下一次探查。如果你能画出流程图,你拥有的是一个工作流——构建那个,它更便宜且可测试。
- 2. 环境给出真实的反馈。每个动作产生一个能有意义地约束下一个决策的观察——一个测试通过或失败、一个搜索有结果或没有、一个 API 报出一个具体错误码。智能体把反馈转化为进展;没有信息量的反馈,循环就无物可嚼,那你拥有的是一个生成任务,而非智能体任务。
- 3. 价值能盖过不可预测性税。任务足够有价值、或足够频繁,以至于自动化它值得放弃事先确切知道系统会做什么的能力。用一个不可预测的系统去自动化一个罕见、低价值的任务,无论演示多酷,都是一笔糟糕的交易。
压缩版测试:"一个称职的人做这个任务,会不会需要根据过程中所发现的东西作出判断,而且这件事是否值得让软件来作这些判断?"两者皆是 → 智能体的候选。第一个是"否"意味着工作流。第二个是"否"意味着无论用什么技术,都不值得为之付出不可预测性。
选择智能体的诚实代价。
选择智能体,你就永久地报名接受以下全部。它们没有一个是日后可修的 bug;它们是让模型自我主导这件事的内在属性:
- 你无法完全测试它。没有有限的路径集合。你从"测试通过"转变为"评估套件显示 N% 的成功率",并在明知一定比例的运行会出错的情况下发布。
- 你无法完全预测它的成本。同一个输入可能走 3 轮也可能走 30 轮。预算上限给最坏情况设界;它们不让成本变得可预测。
- 你调试的是行为,而非代码行。一个故障是"在一条 14 轮轨迹的第 9 轮,它作了一个我不认同的判断"。没有指向某个 bug 的堆栈跟踪;只有一份要读的对话记录。
- 它的故障是安静且看似合理的。工作流响亮地失败(一个异常)。智能体的失败方式是做某件看起来合理但微妙错误的事,然后自信地继续。安静的错误是昂贵的那种。
- 它的爆炸半径就是它的工具箱。每个写工具都是智能体能自主做错、可能还在被操纵下做错的事。能力与风险是同一个面。
如果对于所涉价值而言这些代价可接受,智能体是个绝佳选择。如果读这份清单让你为自己的用例皱了眉,那个皱眉就是信息——听它的。
能解决大多数"智能体"问题的更便宜模式。
在构建智能体之前,先确认以下这些更简单的模式都做不了这件事。实践中,绝大多数"我们需要一个智能体"的问题,都是这些模式之一的伪装——而这些更可靠、更便宜、更可测试:
- 单次精心提示的模型调用。如果任务是"把这个输入变换成那个输出",无需作用于世界,你根本不需要循环。摘要、分类、提取、改写:一次调用。
- 提示词链 / 流水线。一个固定的模型调用序列,每个喂给下一个。"提纲 → 草稿 → 评议 → 修订。"确定的顺序,完全可测试,无自主性。
- 带路由器的工作流。一个模型对输入分类;硬编码的分支决定运行什么。这能处理绝大多数"智能自动化"需求,且比智能体可控得多。
- 检索增强生成。如果真实需求是"用我们的文档来回答",那是 RAG,不是智能体。给一个查找问题加一个循环,徒增成本和故障模式,毫无收益。
- 一个助手(人在环路中)。如果模型提议、人类批准这个流程已经够快,你能以几乎零风险获得大部分价值。许多"智能体"更适合做一个由人驾驭的优秀助手。
能经受生产考验的经验法则:找出有可能管用的最简单模式,构建那个,只有当你已经观察到那个更简单的东西因为某个智能体能专门修复的原因而失败时,才升级到智能体。"我们以后也许需要这种灵活性"不是那个原因。基于证据升级,而非基于预期——你承担的不可预测性是永久的,而你也许永远用不上的灵活性,以后随时可以免费加上。
明确的"不要用智能体"情形。
有些任务对智能体而言是确确实实错误的,无论模型多有能力。一眼认出这些能挽救项目:
- 任务完全可规约。你能写出确切的步骤,且它们不变。那是代码(或工作流)。把确定性逻辑包进一个非确定性的模型,徒增成本、延迟和一个故障模式,换不来任何东西。
- 每个有后果的动作都不可逆且高风险。如果智能体要做的每个写入反正都需要人类批准,你构建的就不是一个智能体——而是一个多了好几道步骤的慢助手。那就直接构建那个助手。
- 你无法定义"完成"。承接上一篇:没有可检验的完成标准就没有可靠的终止。智能体会运行到预算烧光,然后你只能祈祷。不要发布一个祈祷。
- 一个安静、看似合理的错误的代价是灾难性且无界的。有些领域无法以任何比率容忍"错了却自信,而且已经发生了"。在那里,自主性是错误的目标;正确的设计保留一个人类作为必需的闸门,而那按定义就不是智能体。
- 任务罕见且低价值。一个生产智能体的工程、评估、监控和事故成本巨大且持续。一个每月跑两次的任务摊销不了它。手动做,或用一个脚本做。
诚实的收尾,也是通往最后一篇的桥梁:智能体是针对一种特定形状问题的精密仪器——开放式路径、真实反馈、能盖过不可预测性税的价值。用在那里,没有什么能与之相比。仅仅因为这个词令人兴奋就把它当默认来用,它会比它所取代的那个无聊模式更慢、更贵、更不可靠、更危险。知道这个差别才是真正的专长。最后一篇"智能体的风险与局限",讲的是即便答案正确地是"是的,用智能体",你也必须接受的东西。