打造高效的智能体(Agent)

Jan 1, 2026 00:00 · 2670 words · 6 minute read AI Agent

原文:https://www.anthropic.com/engineering/building-effective-agents


什么是 Agent?

agent 有多种定义:

  • 完全自主的系统,长期独立运行,使用各种工具来完成复杂的任务。
  • 遵循定义流程的系统实现。

Anthropic 在架构上对**工作流(workflow)智能体(agent)**进行区分。

  • workflow 是 LLM 和工具都通过预定义的代码路径进行编排的系统
  • agent 是 LLM 动态地指导它们自身的过程和工具使用,完成任务。

何时(或不)使用 Agent?

在使用 LLM 构建应用程序时,建议找到尽可能简单的解决方案,仅在需要时才增加复杂性。这可能意味着根本不构建 agent 系统。agent 系统通常会增加延迟和成本以换取更好的任务质量,你要权衡利弊。

如果需要更高的复杂度时,workflow 为定义好的任务提供可预测性和一致性;而当需要更好的灵活性和模型驱动的决策时,agent 是更好的选择。然而对于很多应用程序来说,通过检索和上下文示例来优化单次 LLM 调用通常就足够了。

何时使用框架

框架使得 agent 系统更易实现。

框架通过简化标准的底层任务,如调用 LLM、定义和解析工具、调用链,使入门变得容易。然而它们通常会创建额外的抽象层,可能会模糊底层的提示和响应,使调试更困难。它们也可能让人们在更简单的方案已经足够时,仍倾向于引入不必要的复杂度。

建议开发者从直接使用 LLM API 开始:许多模式只要用几行代码就可实现。如果确实要用框架,请确保理解底层代码。

构建模块(building block)和 agent

探索在生产环境中看到的 agent 系统的常见模式。我们将从最基础的构建模块(增强型 LLM)开始,逐步增加复杂性,从简单的组合 workflow 到自主 agent。

构建模块

agent 系统的基本构建模块是一个增强的 LLM(例如 Claude),包括检索、工具和记忆:

  • 生成自己的搜索查询
  • 选择合适的工具
  • 确定要保留哪些信息

The augmented LLM

推荐使用 MCP(Model Context Protocol) 协议增强功能,开发者通过简单的客户端接入不断扩展的第三方工具生态。

Workflow:提示链

提示链将任务分解为一系列步骤,其中每个 LLM 调用处理前一个的输出。

The prompt chaining workflow

何时使用该 workflow:适用于任务可以轻松、清晰地分解为固定子任务的情况。主要目标是通过使每个 LLM 调用成为更简单的任务,以更高延迟换取更准确的结果。

案例:

  • 生成营销文案,然后翻译成不同的语言。
  • 编写文档大纲,检查大纲是否符合标准,然后基于大纲撰写文档。

Workflow:路由

路由对输入分类并将其导向专门的后续任务。这种 workflow 实现了关注点分离,并构建更专业的提示。

The routing workflow

何时使用该 workflow:适用于那些具有不同类别且最好分别处理的复杂任务,以及可以通过 LLM 或更传统的分类模型/算法准确处理分类的情况。

案例:

  • 将不同类型的客户服务查询(一般问题、退款请求、技术支持)引导到不同的下游流程、提示和工具。
  • 将简单/常见问题路由到小型、便宜的模型,将困难问题路由到更强大的模型,以获得最佳性能。

Workflow:并行

多个 LLM 实例同时处理同一任务的不同部分,通过程序聚合输出。

  • 分段:将任务分解为独立的子任务并行运行
  • 投票:多次运行相同任务以获得多样化的输出

The parallelization workflow

何时使用该 workflow:划分子任务可以并行化来提速,或当需要多个视角来得到高置信度的结果。

案例:

  • 分段

    • 一个模型实例处理用户查询,另一个模型实例筛查不当内容或请求,这样往往比同一个 LLM 同时处理表现更好。
    • 自动化评测用于评估 LLM 性能,其中每次调用评估模型在给定提示下不同方面的表现。
  • 投票

    • 审查一段代码是否存在漏洞,用不同的提示词审查代码,如果发现问题就进行标记。
    • 评估给定内容是否不当,使用多个提示词评估不同方面或要求不同的投票阈值,以平衡假阳性和假阴性。

Workflow:编排器-作业者

中心 LLM 动态地分解任务、将其委派给作业 LLM,并汇总它们的结果。

The orchestrator-workers workflow

何时使用该 workflow:非常适合复杂任务,无法预测所需的子任务。虽然类似并行化,但主要区别在于其灵活性——子任务并非预定义的,而是由编排器(orchestrator)根据特定输入确定的。

案例:

  • 需要在一次任务中对多个文件进行复杂修改的编程助手/代码生成工具。
  • 搜索任务,从多个源收集和分析信息。

Workflow:评估器-优化器

一个 LLM 调用生成应答,而另一个调用提供评估和反馈,形成一个循环。

The evaluator-optimizer workflow

何时使用该 workflow:当有明确的评估标准,以及能量化改进的效果时,尤其有效。两个适合的标志是,第一,当人类阐明他们的反馈时,LLM 的响应可以被明显改善;第二,LLM 可以提供这样的反馈。这类似于人类作家在创作一篇文章时可能经历的迭代写作过程。

案例:

  • 文学翻译中存在一些翻译者 LLM 无法捕捉的细微差别,但评估的 LLM 可以提供有用的评论。
  • 需要多轮搜索和分析以收集全面信息的复杂搜索任务,评估者决定是否需要进一步搜索。

Agent

随着 LLM 在关键能力上逐渐成熟,agent 开始进入生产环境——理解复杂的输入、参与推理和规划、可靠地使用工具以及从错误中恢复。agent 的工作来自人类用户的命令或是互动讨论,一旦任务明确,agent 就能独立规划和操作,追问人类以获取更多信息或判断。在执行过程中,agent 必须在每一步从环境获取“真实情况”(例如工具调用结果或代码执行)来评估其进度。agent 能够在检查点暂停或触发中断来获取用户的反馈,任务通常在完成时终结,但通常也包括终止条件(例如最大迭代次数)来维持控制。

agent 可以处理复杂任务,但它们的实现通常很简单——通常只是基于环境反馈循环的使用工具的 LLM。因此设计工具集及其文档时,清晰且深思熟虑是至关重要的

Autonomous agent

何时使用 agent:可用于难以预测所需的步骤数量的开放性问题,还有无法写死固定路径的问题。LLM 可能会操作多轮,你对其决策有一定的信任。agent 的自主性使其在可信环境中扩展任务非常理想。

agent 的自主性意味着更高的成本,以及风险。我们建议在隔离环境中(沙箱)进行大量测试,并做好保护措施。

High-level flow of a coding agent

组合与定制这些模式

这些构建模块不是强制性的,开发者可以修改和组合来适应不同用例。成功的关键,是衡量性能并迭代的实现。敲黑板:在显著改善结果的情况下才增加复杂度

总结

在 LLM 领域获得成功并不在于构建最复杂的,而在于构建最符合自身需求的系统。从简单的提示词开始,通过全面评估进行优化,只有当简单方案无法满足需求时才引入多步骤的代理系统。

三个核心原则:

  1. 简单,简单,还是简单
  2. 透明度优先,明确展示 agent 的计划步骤
  3. 通过全面的工具文档和测试谨慎设计你的 agent-computer 接口

框架能帮你快速入门,但在进入生产阶段时果断减少抽象层,并使用基本组件拼搭。遵循这些原则,你能创造出不仅强大而且可靠、可持续、受用户信任的 agent。