微信扫码
与创始人交个朋友
我要投稿
本文整理自Anthropic官方博客《Building effective agents》。
过去一年,我们与多个行业的团队共同致力于构建大语言模型(LLM)代理。从这些项目的经验中,我们发现,最成功的实现并不依赖于复杂的框架或专业的库,而是采用了简单、可组合的设计模式。因此,我们在本文中将分享我们从客户合作中学到的经验,并为开发者提供一些关于构建高效代理的实用建议。
“代理”这个概念有很多不同的定义。一些客户将代理定义为完全自主的系统,这些系统可以长时间独立运行,并利用各种工具完成复杂任务;而另一些则把代理看作是遵循预定义工作流程的系统。在 Anthropic,我们将这些不同的实现统称为代理系统(Agentic Systems),但在架构上,我们将工作流(Workflows)和代理(Agents)做了一个重要区分:
我们将在接下来的部分详细探讨这两种类型的代理系统。
在使用LLM构建应用时,我们建议开发者尽量选择最简单的解决方案,只有在必要时才增加复杂性。这意味着,某些情况下可能根本不需要构建代理系统。代理系统往往需要在延迟和成本上做出权衡,以换取更好的任务表现,因此需要根据实际需求进行权衡。
如果任务较为简单且明确,使用工作流能带来更高的可预测性和一致性;而当任务需要灵活性和基于模型的决策时,代理则更为适用。对于许多应用场景,优化单次LLM调用(例如通过检索和上下文示例)通常就足够了。
市面上有许多框架可以帮助实现代理系统的构建,其中一些常见的框架包括:
这些框架简化了诸如调用LLM、定义和解析工具、串联调用等低级任务。然而,它们通常会增加额外的抽象层次,可能使得底层的提示和响应更加难以调试。我们建议开发者从直接使用LLM的API开始,很多模式可以通过几行代码实现。如果必须使用框架,一定要理解其底层代码,因为对框架的错误假设是常见的错误来源。
你可以参考我们的cookbook了解一些示例实现。
在这一部分中,我们将探讨一些我们在生产环境中看到的代理系统常见模式。从基础的构建模块——增强型LLM开始,逐步增加复杂度,从简单的组合工作流到完全自主的代理系统。
代理系统的基础构建模块是增强型LLM,它结合了检索、工具和记忆等扩展功能。我们的当前模型能够主动使用这些功能——例如生成自己的搜索查询、选择合适的工具并决定保留哪些信息。
我们建议开发者关注两个关键方面:一是根据具体应用场景定制这些功能,二是为LLM提供一个易于使用且文档完善的接口。为实现这些增强功能,一个可行的方法是通过我们最近发布的模型上下文协议(Model Context Protocol),该协议使开发者可以轻松集成第三方工具。
提示链式调用将任务分解为一系列步骤,每一步的输出成为下一步的输入。在每个中间步骤上,你可以加入程序化的检查(如“gate”)以确保过程顺利进行。
何时使用提示链式工作流:当任务能够被清晰地拆解成多个子任务时,提示链式工作流非常适用。通过将每个LLM调用变得更简单,可以在提高准确度的同时减少延迟。
适用场景示例:
路由工作流将输入分类并将其引导至专门的后续任务。这种方式有助于处理复杂任务,避免因优化某种类型的输入而影响其他类型的任务表现。
何时使用路由工作流:当任务可以划分为不同的类别,每个类别适合不同的处理方式时,路由工作流非常有效。可以使用LLM或传统的分类模型/算法准确地进行分类。
适用场景示例:
并行化允许LLM在同一任务中同时处理多个子任务,并通过编程方式汇总它们的输出。并行化有两个主要变体:
何时使用并行化工作流:当任务能够并行处理以提高速度,或需要多角度尝试以确保高置信度结果时,并行化非常有效。
适用场景示例:
在协调者-工作者工作流中,一个中心LLM动态拆解任务,委派给多个工作者LLM,并将它们的结果汇总。
何时使用协调者-工作者工作流:对于任务的子任务无法预先定义的复杂任务,协调者-工作者工作流非常适用。
适用场景示例:
在评估者-优化器工作流中,一个LLM生成响应,另一个LLM提供评估和反馈,并在循环中不断改进。
何时使用评估者-优化器工作流:当任务有明确的评估标准,并且通过反复修正可以获得显著的价值时,评估者-优化器工作流非常有效。
适用场景示例:
随着LLM在理解复杂输入、推理与规划、可靠使用工具以及从错误中恢复等能力上不断成熟,代理系统开始在生产中崭露头角。代理系统从人类用户的命令或互动讨论开始任务,任务明确后,代理可以独立工作,并在需要时返回人类进行反馈和判断。
代理系统的实现通常比较简单,通常只需通过工具与环境反馈进行循环执行。因此,设计清晰且思路明确的工具集和文档至关重要。在不同的生产环境中,代理能够提高效率和执行的精确度,尤其是在需要处理大量且复杂的数据时。
代理的核心优势之一在于它们能够智能地选择、组合和控制各种工具,完成特定任务。在实际应用中,这些工具通常包括:
例如,在一个客户服务场景中,代理可以与CRM系统集成,获取客户的历史数据,在客户提问时提供个性化的回答;或者在需要处理多个步骤的任务时,代理能够根据当前的情境自动选择合适的工具或API进行调用。代理与工具的灵活集成,不仅提升了任务执行的准确性,还可以显著减少开发时间。
代理系统的另一个关键优势是它们可以在任务过程中进行多轮推理和自我修正。传统的任务执行模式往往依赖于固定的流程,错误或不理想的输出往往无法得到及时调整。而代理则能够根据每一步的反馈,调整下一步的执行策略。
例如,在一个财务报告生成任务中,代理首先根据初始输入生成报告草稿。若草稿不符合要求,代理会根据客户反馈进行调整,修改报告的某些部分,然后进行下一轮的改进。通过多轮迭代,最终生成符合要求的报告。
代理系统的构建无疑是AI领域中一个令人兴奋的进展。通过有效的设计和合理的工具集成,代理不仅能够提升任务执行的效率,还能在动态环境中作出智能决策。然而,随着复杂性的增加,我们需要不断优化代理系统,确保其在各种应用场景中都能高效、精准地工作。
对于开发者来说,理解代理系统的构建模块、工作流设计和工具集成的最佳实践,将是实现高效代理的关键。通过实践和不断优化,你将能够打造出既高效又灵活的AI代理系统,为各类任务提供强有力的支持。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-04-26
2024-08-13
2024-08-21
2024-07-09
2024-06-13
2024-08-04
2024-04-11
2024-07-18
2024-07-01