本文着重讲的是, Anthropic公司于构建大型语言模型,也就是LLM方面,以及在构建智能体,也就是agents方面,所进行的年度总结情况,还有其设计原则。这篇文章是由Anthropic公司来撰写的,其内容涵盖了成功方案所具备的特点, 智能体的定义是什么,在何种情况下使用智能体,框架的使用状况,构建模块以及工作流, 工作流模式, 智能体的应用场景,以及实践案例等多个板块。文章着重突出,简单性、透明度以及精心设计的agent - computer interface(ACI)接口极具重要性,还给出了工具开发的最佳实践以及插件工具的提示词工程的详实资料,基于这些内容,Anthropic讲述出怎样构建有价值的智能体, 并且給开发者呈献出实用的建议。

Agent构建指南
2024年12⽉20⽇
在过去一年当中,Anthropic同多个行业团队展开合作, 去构筑大型语言模型也就是LLM代理。最为成功的方案并非运用复杂框架或者专门软件包。相反,用来构建的是简单且可组合的模块。在这篇文章里,Anthropic把从跟客户合作以及自身构建代理所学到的经验予以分享, 还给开发者提供关于怎样构建有效代理的相关建议。
什么是Agent?
有些客户把能长期独立运行、使用各类工具去完成繁杂任务的完全自主系统定为Agent开运真人app下载苹果版,开运真人app下载,而另一些人将遵循预定义工作流程且更具规范性的称作Agent,什么是Agent呢?在Anthropic, 这所有变体都被归为代理系统,不过在工作流和代理之间画了个重要的架构区别。
这回, 我们会针对这两类代理系统开启详细的研讨。于附录1(也就是“实践中的Agent”)里头开云真人app官方版入口,开云真人app官网入口,说明了客户于两个领域察觉到运用这些系统极具价值。
何时(以及何时不)使用Agent?
构建LLM应用程序之际, 建议寻觅尽量简单的解决办法,且仅在有需求之时增添复杂性, 这或许意味着压根不构建代理系统,代理系统通常因更好的任务性能而产生延迟并耗费成本,需考量权衡这般是否具备意义。
在有更多复杂性需求之际, 工作流为界定清晰的任务给予了可预测性以及一致性,而在有大规模灵活性需求以及模型驱动决策制定需求之时,Agent乃是更佳之选。然而, 对于诸多应用程序而言, 优化单个LLM调用, 搭配检索以及上下文示例通常便已足够。
何时以及如何使用框架?
有许多框架可以使代理系统更容易实现,包括:
这些框架借由简化调用LLM、迅速编写出并解析相关工具插件以及链式调用等具备标准化特征的底层任务,达成操作流程的简化。不过, 它们会去构建额外的用于抽象的层次,这极有可能将底层的用于提示与响应的内容给遮盖住, 致使调试变得愈发艰难。它们有可能在开发者面对简单设置即可完成的操作时, 增添工作的复杂程度。
我们向开发者提出建议,首先应直接运用LLM API, 许多常用模式仅需几行代码即可达成。倘若确实有意使用框架,那就需要确保自己理解到底层代码。在底层内容方面出现错误假设,这是客户出现差错的常见缘由。
查看我们的官方手册以获取一些示例实现。
构建模块、工作流和代理
我们要探讨在生产里涉及的代理系统的常见模式,就在本节当中。我们会从基础构建模块着手, 也就是增强型LLM,然后慢慢地增添复杂性, 先是普通的组合工作流, 再到自主代理了。
构建模块:增强型LLM
代理系统的基本构建模块, 是经由检索、工具以及记忆等增强功能而得以提升的LLM。当下的模型能够自动运用这些能力,即自主生成搜索查询,选择恰当的工具,进而决定保留哪些信息。

我们给出建议, 要着重留意两个关键之处, 其一在于依据使用场景去定制特定用例,其二在于保证为LLM供给简单且文档完备的接口。尽管达成这些增强功能存在诸多方式, 然而有一种方式是运用Anthropic最近发布的模型上下文协议, 也就是Model Context Protocol ,它能够支持开发者经由简单的与借助该协议的各类第三方工具生态予以集成。
在本文余下的部分, 会假定每一次对LLM的调用, 都能够获取这些增强的能力。
工作流:提示链工作流
一连串步骤被提示链分解成, 一个任务所包含的, 其中每一个LLM调用, 是对于前一个调用输出的处理。您能够在任何中间步骤, 添加带有程序化的检查,也就是见下图里的“gate”,由此确保流程依照预期来进行。

工作流:路由工作流
路由会针对输入开展分类操作, 进而把输入引导到后续的专门任务那里。工作流能够让关注点得以分离, 还有助于构建更为专业的提示。要是不存在这样的工作流,那么针对一种输入的优化举措,极有可能对其他输入的性能造成损害。

工作流:并行化工作流
LLM 有时能够同时去完成一项任务, 并且会把它们的输出以编程的方式进行汇总然后输出开云正版app下载开云app在线入口,这种工作体展现于两个关键的变体之中,分别是:

Voting(投票):工作流:协调者-执行者工作流
于协调者 - 执行者工作流里,有一个中心的LLM, 它会动态地去分解各项任务, 之后将那些任务委派给worker LLMs(工人LLM),并且还会全面而综合地将他们所得结果纳入考量之中。

工作流:评估器-优化器工作流
在这个工作流里,存在LLM调用, 其职责是生成响应。同时, 还有另一个, 它在循环当中, 担负着提供评估以及反馈的任务。

代理
随着LLM在理解复杂输入方面的能力成熟,随着LLM在进行推理和规划方面的能力成熟, 随着LLM在使用工具方面的能力成熟,随着LLM在从错误中纠错方面的能力成熟, 代理开始在生产中兴起。
代理工作起始, 源于人类用户下达的命令,或者是与人类用户展开互动讨论,一旦任务清晰明了,代理便会独自进行规划并展开行动,或许需要反过来询问人类, 以此获取更多信息或者进行判断。在执行进程里,对于代理而言,每一步从环境当中获取“真实情形”(比如工具调用产生的结果或者代码执行的情况)来评估自身进展极为关键。接着, 代理在遭遇阻碍之际能够暂停下来以获取人类给予的反馈。任务往往在完成之时终止, 不过也时常涵盖终止条件(像是最大迭代次数)用以维持控制。
代替他人行事的主体能够处置繁杂的任务, 然而它们的达成形式一般是很简易的。它们一般只是依据周遭场景反馈,在循序往复里运用器具的语言模型。因而,构思精巧且明晰明显的应用工具门类以及书面说明是极其关键的。附录2所涉及内容”提示工程你的工具”里详尽阐释了工具研发的最佳做法。

(自主代理)

(编码代理的高级流程)
组合和定制
这些范式并非是严格规定好的那种,它们属于开发者能够进行搭建,能够加以组合, 进而去适应不同用例的常见模式,和任何LLM功能一样, 成功的关键在于衡量性能并且迭代落地, 重复重复再重复一遍, 只有在能明显改善结果的时候, 才应当去考虑增加复杂性。
总结
在大语言模型领域收获成功之举,并非是围绕构筑最为复杂的系统。实则是看是否能朝着需求情形搭建契合的系统。起始依托并不复杂的提示, 借助全面性极强的评估加以持续优化。唯有在更为简易的解决举措不足以满足应对之时,如此才去增添具备多步骤的代理系统。
在实现代理时,我们尝试遵循三个核心原则:
刚接触时,框架能助力你迅速开场,然而当下要进入生产环境之际,别迟疑着去削减抽象层级, 且尽可能选用基础组件实施搭建。只要依照这些准则行事,你便能打造出那种, 不但具备强大功能,并且可靠稳定、易于维护, 还能获得用户信赖的代理程序。
致谢
撰写者是Erik Schluntz以及Barry Zhang,这项工作参考了我们于Anthropic构建代理的经验,还有我们的客户所分享的珍贵见解,对此我们怀有深邃感激之情。

需要去获取那本名为《Agent构建指南》的以PDF格式呈现的原有文件,通过扫描二维码进行关注之后回复:241222。
附录1:实践中的代理
与客户的合作, 揭示了AI代理特别有前景的两个应用, 这两个应用展示了上述模式的实际价值, 它们都说明了代理在需要对话和行动的任务中最有价值,在有明确成功标准的任务里最有价值,在能够反馈循环的任务当中最有价值, 在整合有价值的人类监督的任务之中最有价值。
A. 客户支持
对于更开放式的代理来讲, 客户支持此场景是自然的, 且它结合了熟悉的聊天机器人界面, 借助工具集成使能力得以增强。因为:
存在一些公司,这些公司借助基于使用量的定价模型, 证实了此方法具备可行性, 该定价模型只针对成功的解决方案收取费用, 体现出对其代理有效性持有信心。
B. 编码代理
软件开发的这个领域,展现出有着LLM功能的相当显著的潜力,其功能从代码补全开始,进而演变到能够自主解决问题。代理是特别有效的, 原因在于:
在咱们自身的实现里头, 代理是基于SWE - bench验证基准的,它能够独自去解决实实在在的GitHub问题。然而, 虽说自动化测试对验证功能是有帮助的,可是人类审查依旧是相当重要的,目的在于确保解决方案契合更为广泛的系统要求。
附录2:提示工程你的工具
不管您构建的是哪一种代理系统,工具插件都极有可能是您代理的关键构成部分。工具能够让Claude借助在我们的API里明确它们确切的结构以及定义, 从而与外部服务以及API展开交互。当Claude做出响应时,要是它打算调用工具,那它会在API响应中置入一个。工具的定义以及规范应当跟整体提示一样,得到相同的提示工程方面的关注。在这个简短的附录之中,阐述了怎样对工具进行提示工程。
一般存在几种途径能够指定相同的操作, 比如说,靠编写差异(diff)或者重写整个文件去指定文件编辑, 对于结构化输出而言,能够在Markdown或者JSON里返回代码,在软件工程当中, 这些差异是浅表的, 而且能够毫无损耗地从一种格式转变为另一种格式。
然而,存在这样一些状况,若干格式之于LLM而言较别的格式来讲更具编写难度。编写差异, 具体而言就是diff, 这得在新代码着手编写之前便知晓块头部究竟有多少行处于更改状态。在JSON里编写代码,也就是说与Markdown相比较的情形下, 需要针对换行符以及引号实施额外的转义操作。
我们对决定工具格式的建议如下:
耗费于人机界面,也就是HCI的精力限度,等同于投入到创建良好的代理,和以此为基础的计算机界面,也就是ACI上面的心力额度限定。对于达成这种情况的方法, 有下述这些思路:
在构建SWE - bench代理之际, Anthropic实际用于对工具进行优化的时间,相较于整体提示的优化时间而言还要更多。比如说, Anthropic察觉到模型于运用相对文件路径的工具之时会出现差错,特别是在代理移出根目录以后。为了处理这个难题,对工具作出更改,使其始终要求运用绝对文件路径, 我们发觉模型完美地运用了此种方式。
标签: Anthropic 智能体 LLM 构建指南 提示工程
还木有评论哦,快来抢沙发吧~