LabHub

博客

构建高效的 AI 智能体 — 五种工作流模式与智能体参考指南

한국어English日本語中文

引言 — 工作流、智能体,以及增强型 LLM

在“智能体”一词不断被滥用、含义膨胀的当下,Anthropic 的工程指南 Building Effective Agents 却难得地从一个冷静的定义讲起。本文是把这份文档整理成可在实务中随时翻阅的参考。核心的区分只有一个。

在这两者之上,有一条贯穿全文的建议:不要去造最精巧的系统,而要造 契合需求的正确系统。文档主张从简单的提示开始,用全面的评估来打磨,只有当更简单的方案不够用时,才加入多步骤的智能体系统。

所有模式的最底层,都是 增强型 LLM(augmented LLM)。它不是一个只会吐出文本的模型,而是叠加了三种能力的模型。

工具集成推荐通过 Model Context Protocol (MCP) 这类标准来接入。这个模块就是下面所有模式的原子单元。

五种工作流模式

首先要记住一点:下面这五种全都是 工作流。哪怕 LLM 调用出现很多次,它们的顺序和连接方式也由代码固定。自主智能体会在下一节里单独讨论。

模式何时使用具体示例
提示链 (prompt chaining)当任务可以干净地拆分为固定的子步骤时生成营销文案后再翻译;先写大纲、用关卡校验后再写正文
路由 (routing)当输入能分成明确的类别、且分类别单独处理更好时按咨询类型分流;把简单问题路由到更小更便宜的模型
并行化 (parallelization)当想同时运行子任务以获得速度,或需要多个视角·多次尝试时分段:把回答与有害性筛查分开 / 投票:对漏洞做多次代码审查
编排者-工作者 (orchestrator-workers)当无法预先预测需要哪些子任务时跨多个文件的复杂代码修改;汇集多个来源进行分析
评估者-优化者 (evaluator-optimizer)当评估标准明确、且反复改进能带来可衡量的价值时文学翻译的语感反馈;多轮检索

上表用于快速查阅,每种模式实际如何运转,下面再各补一行。

最后,这五种并不互斥。实际的系统通常会把它们叠加使用 — 在路由之后接一段提示链,或者让编排者的工作者在内部调用并行化。模式是乐高积木,不是宗教信仰。

自主智能体 — 循环,以及何时动用它

自主智能体看起来很炫,但实现通常很简单。借用 Anthropic 的说法,智能体更接近于 一个在循环中、基于环境反馈使用工具的 LLM。它在每一步获得工具结果或代码执行结果这样的“事实依据(ground truth)”,据此自行判断进展。

智能体循环(概念)
  1. 人给出目标 (或通过对话收窄范围)
  2. LLM 制定计划并调用工具
  3. 环境返回结果   = 事实依据
  4. LLM 查看结果并判断: 完成了吗? 否则回到 2 反复
  5. 停止条件: 完成判定 · 步数预算 · 人工检查点

这里的关键就是事实依据。把智能体与普通聊天机器人区分开的,是它用每一步来自环境的真实信号 — 工具是否成功、代码是否通过 — 来校正自己的判断。没有这个反馈闭环,它就只是一个被多次调用的提示而已。

何时用智能体取代工作流。 如果任务定义清晰、且可预测性与一致性很重要,那么工作流更好。只有当无法预测所需的步骤数、也无法把固定路径硬编码下来时,智能体才真正划算。但这是有代价的 — 文档明确指出,智能体“用延迟和成本换取更好的任务性能(trade latency and cost for better task performance)”。只有在这笔交换说得通的时刻,才该动用它。快速判断清单:

ACI 占了一半。 智能体的成败在很大程度上取决于工具设计。Anthropic 把它称为智能体-计算机接口(agent-computer interface,ACI),并强调要像给人编写 API 文档那样,为模型清晰地记录并测试工具。含糊的 schema 和敷衍的工具说明,是智能体失败最常见的根本原因。

文档的附录举出智能体特别契合的两个领域。客户支持要顺着对话流程走,同时需要外部信息与行动(查询·退款等),而且能以成功解决的数量清晰地衡量成效 — 一些公司甚至自信到采用只对成功解决计费的按量付费模式。

编程尤其契合,因为答案可以用自动化测试来验证。智能体把测试结果当作反馈来迭代,Anthropic 举了在 SWE-bench Verified 上仅凭 PR 描述就解决真实 GitHub issue 的例子。不过,答案是否符合更大系统的要求,依然需要人来审查。

失败模式 — 过度设计、失控循环、成本与延迟

一份参考要真正有用,就不能只画出顺利的图景,还得记下经常出问题的地方。

框架 — 快速起步,调试的代价

文档正面讨论了智能体框架。像 Claude Agent SDK 这样的 SDK,或 Rivet·Vellum 这样的 GUI 构建器,都能降低上手的门槛,但也有代价 — 它们加上一层遮蔽底层提示与响应的抽象,让人难以看清究竟什么进入了模型、什么又从中输出,从而使调试变得复杂。

因此建议很朴素:先直接使用 LLM API 把底层弄明白,等清楚那层抽象究竟替你做了什么,再引入框架。这并不是说框架不好,而是说:在不了解底层的情况下叠上去的便利,一旦出问题反而会拖你后腿。

结语 — 简单·透明·ACI

用文档提出的智能体实现三条核心原则来收尾。

这篇文章留给实务的教训很朴素。大多数生产环境的问题,用单次 LLM 调用或一两个工作流模式就足以解决。真正需要自主智能体的时刻比想象中更少,而承认这种“少”的判断本身,就是好的工程。归根结底,成功不在于建造最精巧的系统,而在于挑选契合需求的正确系统 — 这一句话,就是这份参考的要旨。

参考资料

评论

还没有评论。

登录后即可发表评论