Anthropic 发布了一篇关于 Agent 的文章《Building effective agents》,这篇文章分享了 Anthropic 从与客户共建 agents 的过程中学到的经验,并为开发者们提供如何构建有价值的 agents 最佳实践与实用建议。
以下内容是我对这篇文章的总结。
agents 的定义和分类
-
agents(智能体) 的定义
-
完全自主的系统:在扩展时间段内独立操作,使用各种工具完成复杂任务。
-
预定义工作流程的实现:遵循预定义的工作流程。
-
agents(智能体) 与 workflows(工作流) 的区别
-
Workflows(工作流):大模型和工具通过预定义的代码路径进行编排。
-
Agents(智能体):大模型动态指导其自身的过程和工具使用,保持对任务完成的控制。
如何使用 agents ?
-
使用场景
-
复杂任务:当需要灵活性和规模化的模型驱动决策时,Agents(智能体)是更好的选择。
-
不使用场景
-
简单任务:当任务可以清晰分解为固定子任务时,工作流程提供了可预测性和一致性。
框架的使用
-
常用框架
-
LangGraph:用于简化LLM调用、定义和解析工具以及链接调用的框架。
-
Amazon Bedrock的AI Agent框架:简化代理系统实现的框架。
-
Rivet:拖放GUI LLM工作流程构建器。
-
Vellum:用于构建和测试复杂工作流程的GUI工具。
-
使用框架的建议
-
初学者使用LLM API:许多模式可以用几行代码实现。
-
理解底层代码:确保理解框架的底层代码,避免错误的假设。
构建blocks、workflows 和 agents
augmented LLM(增强型大模型)
-
基本构建块:增强型LLM具有检索、工具和内存等增强功能。
-
关键方面:定制这些功能以适应特定用例,并确保为LLM提供易于使用且有良好文档的接口。
Workflow(工作流)
Prompt chaining(提示链):将任务分解为一系列步骤,每个LLM调用处理前一个调用的输出。
-
生成营销文案,然后翻译成不同的语言。
-
编写文档的大纲,检查大纲是否满足特定条件,然后根据大纲编写文档。
Routing(路由):对输入进行分类并将其引导至专门的后续任务。
-
将不同类型的客户服务查询(一般问题、退款请求、技术支持)引导到不同的下游流程、Prompt 和工具中。
-
将简单/常见问题路由到较小的模型,将困难/不寻常的问题路由到功能更强大的模型,以优化成本和速度。
案例
Parallelization(并行化):LLMs可以同时处理任务,并聚合其输出。
-
任务拆分
-
一个模型实例处理用户查询,而另一个模型实例筛选用户查询是否存在不适当的内容或请求。这往往比使用相同的 LLM 调用同时处理响应的性能要好。
-
评估 LLM 性能,其中每个 LLM 调用都会评估模型在给定 Prompt 下性能的不同方面。
-
投票
-
检查一段代码是否存在漏洞,如果发现问题,则几个不同的 Prompt 会检查并标记代码。
-
评估给定的内容是否不合适,多个 Prompt 评估不同的方面或要求不同的投票阈值来平衡误报和漏报。
案例
Orchestrator-worker(协调器-工作者):中央 LLM 动态分解任务并将其委托给 worker LLMs ,然后综合结果。
-
每次对多个文件进行复杂更改的产品。
-
涉及从多个来源收集和分析信息的搜索任务。
案例
Evaluator-optimizer(评估器-优化器):一个LLM调用生成响应,另一个提供评估和反馈。
-
文学翻译,译者 LLM 最初可能无法捕捉到细微差别,但评估者 LLM 可以提供有效建议。
-
复杂的搜索任务,需要多轮搜索和分析以收集全面的信息,其中评估者 LLM 决定是否需要进一步搜索。
案例
Agents
用于开放式问题,难以预测所需的步骤数量,无法硬编码固定路径。
-
用于解决 SWE 工作台任务 的编程 Agent ,该任务涉及根据任务描述对许多文件进行编辑。
-
“computer use” 参考实现,其中 Claude 使用计算机完成任务。Anthropic Computer Use Demo(https://github.com/anthropics/anthropic-quickstarts/tree/main/computer-use-demo)是一个帮助开发者快速开始使用 Anthropic 的 Claude AI模型进行操作电脑的例子。
案例
SWE-bench(https://www.anthropic.com/research/swe-bench-sonnet) 是一个用于评估大型语言模型(LLM)在软件工程任务中的表现的基准测试平台。它通常涉及编写、修改和分析代码的任务。
总结
-
核心原则
-
保持 agents 设计的简洁性:避免不必要的复杂性。
-
透明性:展示 agents 的计划步骤。
-
精心设计 agent-computer interface(ACI):通过彻底的文档和测试设计工具。
-
框架的使用建议
-
快速启动:框架可以帮助快速启动,但不要害怕减少抽象层并使用基本组件进行生产。