构建高效的 Agent作者:Erik S. 与 Barry Zhang(Anthropic)发布日期:2024年12月19日来源:anthropic.com/engineering/building-effective-agents摘要:过去一年,我们与数十个团队合作,在各行各业构建大语言模型(LLM)Agent。我们发现一个一致的规律:最成功的实现并不使用复杂的框架或专门的库,而是用简单、可组合的模式构建。在本文中,我们分享了与客户合作以及自行构建 Agent 过程中积累的经验,并为开发者提供构建高效 Agent 的实用建议。什么是 Agent?"Agent"有多种定义方式。有些客户将其定义为完全自主的系统,能够在较长时间内独立运行,使用各种工具完成复杂任务。另一些人则用这个词来描述遵循预定义工作流的更具规范性的实现。在 Anthropic,我们将所有这些变体统称为Agent 化系统(agentic systems),但在架构上做了一个重要的区分——工作流(workflows)与 Agent(agents):工作流是通过预定义代码路径编排 LLM 和工具的系统。Agent则是 LLM 动态主导自身流程和工具使用的系统,自主掌控如何完成任务。何时使用(以及何时不使用)Agent在构建 LLM 应用时,我们建议寻找最简单的可行方案,仅在必要时增加复杂性。这甚至可能意味着完全不构建 Agent 化系统。Agent 化系统通常以延迟和成本换取更好的任务表现,你需要权衡这种取舍是否合理。当确实需要更多复杂性时,工作流为定义明确的任务提供可预测性和一致性,而 Agent 则更适合在规模上需要灵活性和模型驱动决策的场景。然而,对于许多应用来说,通过检索和上下文示例优化单次 LLM 调用通常就足够了。何时以及如何使用框架有许多框架可以简化 Agent 化系统的实现,包括:Claude Agent SDKAWS 的 Strands Agents SDKRivet,一个拖拽式 GUI LLM 工作流构建器Ve