Anthropic 发布《Building effective agents》详细探讨如何构建高效的 AI 代理系统

4 个月前 语言模型 719

Anthropic 于2024年12月发布的文章《Building effective agents》详细探讨了如何构建高效的大语言模型(LLM)代理系统。Anthropic 与数十个团队合作构建了跨行业的大语言模型(LLM) agent。最成功的实现往往不是使用复杂框架或专门库,而是采用简单、可组合的模式。本文分享Anthropic 的经验和实用建议:

1. 代理(Agents)的定义与分类

  • 代理的定义
    • 代理可以被定义为完全自主的系统,能够在较长时间内独立运行,使用各种工具完成复杂任务。
    • 也可以指遵循预定义工作流程的系统,这些系统通过预定义的代码路径协调LLM和工具。
  • 工作流(Workflows)与代理(Agents)的区别
    • 工作流:通过预定义的代码路径编排LLM和工具,适合任务明确、步骤固定的场景。
    • 代理:LLM动态指导自身的流程和工具使用,保持对任务完成方式的控制,适合需要灵活性和模型驱动决策的场景。

2. 何时使用代理

  • 适用场景
    • 当任务复杂且需要灵活性和模型驱动的决策时,代理是更好的选择。
    • 代理适合处理开放性问题,尤其是难以预测步骤或无法硬编码固定路径的任务。
  • 不适用场景
    • 对于任务明确、步骤固定的场景,工作流提供更高的可预测性和一致性。
    • 对于许多应用,优化单个LLM调用(配合检索和上下文示例)通常已足够。

3. 框架的使用建议

  • 常用框架
    • LangGraph(LangChain)、Amazon Bedrock的AI Agent框架、Rivet(拖放式GUI工具)、Vellum(复杂工作流构建工具)。
  • 使用建议
    • 开发者应优先直接使用LLM API,许多模式只需几行代码即可实现。
    • 如果使用框架,需理解底层代码,避免因框架的抽象层增加调试难度和复杂性。

4. 构建模块与工作流模式

  • 基础构建模块:增强型LLM
    • 增强型LLM通过检索、工具使用和记忆等功能扩展能力,能够生成搜索查询、选择工具并保留重要信息。
  • 核心工作流模式
    1. 提示链(Prompt chaining):将任务分解为一系列步骤,每个LLM调用处理前一步的输出。适用于可分解为固定子任务的场景,如生成营销文案并翻译。
    2. 路由(Routing):对输入分类并引导至专门的后续任务。适用于复杂任务,如客户服务查询的分类处理。
    3. 并行化(Parallelization):将任务拆分为并行子任务或多次运行以获得多样化输出。适用于需要多视角或高置信度结果的场景。
    4. 编排者-执行者(Orchestrator-workers):中央LLM动态分解任务并分配给执行者LLM。适用于无法预测子任务的复杂场景,如编程任务。
    5. 评估者-优化者(Evaluator-optimizer):一个LLM生成响应,另一个提供评估和反馈。适用于需要迭代优化的任务,如文学翻译或复杂搜索。

5. 代理的实现与应用

  • 代理的工作流程
    • 代理通过用户指令或交互明确任务,独立规划并执行,必要时向用户寻求反馈。
    • 代理在每个步骤中从环境中获取“基准事实”(如工具调用结果)以评估进展。
  • 适用场景
    • 编码代理:解决SWE-bench任务,根据任务描述编辑多个文件。
    • 计算机使用代理:Claude通过计算机完成任务,如数据处理或信息检索。

6. 核心原则与总结

  • 核心原则
    1. 简单性:从简单设计开始,逐步增加复杂性。
    2. 透明性:明确展示代理的规划步骤。
    3. 工具设计:通过完善的文档和测试设计代理-计算机接口(ACI)。
  • 总结
    • 成功的关键在于构建适合需求的系统,而非最复杂的系统。
    • 框架可帮助快速启动,但在生产环境中应减少抽象层,使用基础组件构建。

7. 附录:代理的实际应用

  • 客户支持:结合聊天机器人界面与工具集成,适用于开放式代理场景。
  • 编码代理:在软件开发中,代理通过自动化测试验证代码解决方案,并迭代优化。

这篇文章为开发者提供了构建高效代理系统的实用指南,强调了简单性、透明性和工具设计的重要性,并通过丰富的案例展示了代理系统的实际应用价值。

相关资讯