构建有效的 agent
来自 Anthropic Engineering · 期号 2024-12-19
摘要
Anthropic 分享了与数十个团队合作构建 LLM agent 的经验。最成功的实现都使用简单、可组合的模式,而不是复杂的框架。文章区分了 workflow(预定义代码路径)和 agent(LLM 动态控制自己的流程和工具使用)。建议从最简单的方案开始,先直接使用 LLM API 再考虑框架,只在必要时增加复杂度。
深读
导读 Anthropic 基于与数十个团队合作构建 LLM agent 的经验,总结出最成功的实现都使用简单、可组合的模式,而非复杂框架。文章清晰区分了 workflow(预定义代码路径)和 agent(LLM 动态控制流程与工具使用),并提供了从增强型 LLM 到自主 agent 的渐进式构建模式。读完能带走一套判断何时该用 agent、何时不该用,以及如何从最简单的方案开始迭代的实用决策框架。 关键信息 - Anthropic 将 agentic 系统分为两类:workflow(通过预定义代码路径编排 LLM 和工具)和 agent(LLM 动态控制自身流程与工具使用)。 - 建议开发者先直接使用 LLM API,多数模式只需几行代码即可实现;使用框架时需确保理解底层代码,因为对框架内部机制的错误假设是常见的错误来源。 - 文章列举了五种常见 workflow 模式:prompt chaining、routing、parallelization、orchestrator-workers、evaluator-optimizer,每种都给出了适用场景和具体例子。 - 自主 agent 适用于无法预判步骤数的开放式问题,但代价更高且存在错误累积风险,需要在沙盒环境中进行广泛测试并设置护栏。 - 在 SWE-bench 编码 agent 的构建中,团队花在优化工具上的时间比优化整体 prompt 更多,例如将工具参数改为始终要求绝对路径后,模型使用该工具时不再出错。 逐节讲解 什么是 agent 以及何时使用 文章首先澄清了“agent”一词的模糊定义。Anthropic 将所有变体统称为 agentic 系统,但区分了两种架构:workflow 是 LLM 和工具通过预定义代码路径被编排;agent 则是 LLM 动态控制自己的流程和工具使用。核心建议是找到最简单的方案,只在必要时增加复杂度——agentic 系统通常以延迟和成本换取更好的任务表现,需要权衡。对于许多应用,优化单次 LLM 调用(配合检索和上下文示例)通常就足够了。 框架的使用建议 文章列举了多个 agentic 系统框架,包括 Anthropic 自家的 Claude Agent SDK、AWS 的 Strands Agents SDK、Rivet(拖拽式 GUI 工作流构建器)和 Vellum(GUI 工具)。这些框架简化了调用 LLM、定义和解析工具、链式调用等底层任务,但也会引入额外的抽象层,掩盖底层的 prompt 和响应,增加调试难度。建议开发者先直接使用 LLM API,如果使用框架则必须理解底层代码。 构建模块与五种 workflow 模式 文章从基础构建块——增强型 LLM(具备检索、工具和记忆能力)——开始,逐步增加复杂度。 - Prompt chaining:将任务分解为…