Google 在去年九月时,在 Kaggle 平台上公布了一篇由 Julia Wiesinger、Patrick Marlow 和 Vladimir Vuskovic 撰写的 Agent 主题白皮书。
本次文章,我将进行汇整,以让大家更理解 Agent 的概念。
自主性(Autonomy):AI代理能够自主运行,不需要人类的直接干预。当赋予明确的目标或相关任务后,它们能够独立完成操作。
目标导向(Goal-Oriented):他们的行动与决策设计是为了实现特定目标,表现出目标驱动的特征。
主动性(Proactiveness):即使缺乏人类明确的指令,人工智能代理也能推理与分析,决定下一步行动,努力完成最终目标。
应用场景广泛:虽然人工智能代理的概念十分通用且强大,但本文重点关注生成式人工智能模型所构建的特定类型代理。
以下是作者提出的一个基础Agent架构:
在人工智能领域中,生成式AI Agent 正在迅速成为核心技术。
这些不仅仅是语言模型,而是能够与外部世界交互、完成复杂任务的系统。要理解生成式AI代理的可运作的,必须从其三大核心组成部分来理解:模型(The Model)、工具(The Tools)与指挥层(The Orchestration Layer)。
扩展(Extensions):标准化地连接API与Agent,让Agent无缝执行操作。
函数(Functions):由模型输出函数与参数,实际API调用由客户端执行,为开发者提供更精细的控制。
数据存储(Data Stores):以提供数据库的形式,存储并提供代理访问动态更新的信息。
工具的存在让人工智能代理能够真正与外部世界产生互动,而不是仅仅针对语言模型本身。
ReAct:让模型边推理边行动。
Chain-of-Thought (CoT):透过中间步骤实现多步推理。
Tree-of-Thoughts (ToT):适用于需要探索或策略性预测的任务。
那么,指挥层确保AI Agent的每一步都按计划进行,相当于「执行大脑」。
这三个组成部分相互协作,使得 AI Agent 能够有效地完成任务。模型负责「思考」,工具负责「执行」,而指挥层则负责「规划与控制」。
这种协作就像一位厨房里的厨师中工作:
厨师首先收集信息(食材和指令)。
然后根据信息进行推理(决定菜色与烹饪方式)。
随后执行动作(切菜、烹煮)。
最后根据结果调整步骤(改进与改进)。
通过这样的方式,AI Agent表现出强大的能力与适应能力,能够自主完成复杂的任务。
以下提供了一份作者所撰写的差异表格:
从表格中可以看出,模型的知识来源仅限于其训练数据,无法管理多轮对话或持续上下文,也缺乏内建工具和逻辑层支持。
而代理则跨越介接外部工具扩展知识,具备管理多轮会话的能力,并内建推理框架,能够执行更复杂的任务。这使得智能体在处理动态和复杂任务时更具优势。
信息收集代理:收集信息,例如用户的查询或可用的工具和资源。
内部推理:根据收集到的信息进行推理,考虑可行的选项和行动。
采取行动:根据推理结果采取行动,例如使用工具、搜索信息或产生响应。
调整:在每个阶段,代理人会根据需要进行调整,利用前期的结果完善计划,并确定下一步行动。
Agent可以采用多种推理技术与框架,以选择针对用户请求的最佳行动。以下是常见的框架与技术:
ReAct(Reasoning and Acting):提供语言模型一种思考过程策略,结合上下文提示进行推理与行动。
链式思考(Chain of Thought, CoT):跨越中间步骤实现推理能力。子技术包括:自我一致性、主动提示、多模式CoT,针对不同的应用场景有其优缺点。
树思维(Tree of Thought, ToT):适合探索或战略性前瞻任务。扩展链式思考,允许模型探索多种解决问题的中间步骤。
以下是协调层如何利用 ReAct 框架来引导推理和规划的流程示例:
查询:用户向Agent发送查询。
启动ReAct序列:Agent向模型提供提示,启动ReAct框架步骤。
执行步伐:
问题:从用户查询中提取的具体问题。
想法:模型关于下一步行动的构想。
行动:模型决定采取的行动,例如选择工具或搜索信息。
操作输入:模型决定提供给工具的输入内容。
观察:根据行动结果进行反馈。
最终答案:为原始查询生成的最终响应。
4.结束循环:将最终答案返回给用户。
工具是我们可以让LLM通往外部世界的途径。虽然语言模型擅长处理信息,但它们缺乏直接获取和影响现实世界的能力。这种限制在于需要与外部系统或数据交互的情况下的用处。这意味着,在某种意义上,语言模型的好坏取决于它从训练数据中学到的东西。但是,无论我们向模型投入多少数据,它们仍然缺乏与外部世界互动的基本能力。
为了使模型能够与外部系统进行即时、采集的交互,可以使用函数(Functions)、扩展(Extensions)和数据存储(Data Stores)等工具来提供这种关键能力。这些工具建立了基础模型和外部世界之间的联系,使代理能够执行更广泛的任务,而且更准确和可靠。
可以被认为是建立标准化方式桥接API和Agent之间的差距,允许Agent无缝执行API,而不管它们的底层实际作如何。扩展跨越以下方式桥接Agent和API之间的差距:
使用范例教导 Agent 如何使用 API 端点。
教导Agent成功调用API端点所需的引数或参数。Agent可以使用模型和示例来动态选择最适合解决用户查询的扩展。
模型输出函数及其引数,但不进行即时API调用。
函数在客户端执行,而在Agent端执行扩展。函数的调用逻辑和执行从Agent端转移到客户端应用程序,为开发人员提供对应用程序中数据流的更精细的控制。
网站内容
形成资料,如PDF、Word文件、CSV、试算表等
非结构化资料,如HTML、PDF、TXT等
那如果你设计并储存了一个基于RAG的知识库,你也可以参考以下的方式,建立起AI代理的生命周期:
用户查询:用户向代理发布查询。
查询嵌入(Query Embedding):使用嵌入模型将用户查询转换为 Embedding Vector。
支持数据库匹配:将 Embedding Vector 与支持数据库的内容进行匹配。
内容搜索:从提供数据库中搜索匹配的内容,以文字格式输出结果。
代理处理:代理接收用户查询和检索到的内容。
生成响应或采取行动:代理根据用户查询和搜索的内容制定响应或决定下一步的行动。
回覆结果:向用户传达最终回覆。
作者在文章中,也很贴心的准备了工具追溯,我们整理如下,这将更加深了这三种执行方式之间的差异:
这种方法在推论时(推理时间)提供通用模型提示(提示)、工具(工具)和少量范例(few-shot Examples),能够「即时」学习如何以及当使用这些工具来完成特定任务时。
ReAct 框架就是这种方法的一个例子。它利用自然语言的提示,使模型能够在接收到用户查询时,能够有效地推理并采取行动。
就像厨师收到特定的食谱(提示)、一些关键食材(相关工具)和一些小吃(少量样品),然后根据有限的资讯和一般的烹饪知识,即时查找如何准备最符合食谱和客户偏好的馅饼。
这种技术从外部记忆中检索最相关的信息、工具和相关示例,动态地填充模型提示。
Vertex AI 扩展中的「范例存储」(示例商店)或前面提到的基于RAG 架构的数据存储就是这种方法的示例。
这就像厨师在厨房里有一个即时丰富的食物预存室(外部资料储存),里面装满了各种食材和食谱(范例和工具)。厨师动态地可以从食物预知室中选择食材和食谱,方便更好地符合客户的食谱和偏好。
这种方法涉及在推论之前使用更大的特定范例数据集来训练模型。
这有助于模型理解何时以及如何应用某些工具,甚至在接收到任何用户查询之前。
这就像我们送厨师去学习一个新的菜系或一系列菜系(在更大的特定样本数据集上进行预训练)。这让厨师能够更深入地理解未来未见过的客户食谱。
综上所述,这些目标学习方法各有优点,在速度、成本和延迟方面都有所不同。在Agent框架中结合这些技术,可以利用各自的优势并最小化其缺点,从而实现更强大的且这些方法使模型能够根据基础,提取信息、工具、以及示例,提升处理复杂任务的能力。
工具:用户可以从官方文件中尝试初步的 Agent 架构示例。
工具(Tools),例如补充功能(Extensions)、函式(Functions)和数据仓库区(Data Stores),是Agent通往外部世界的接口。它们允许Agent与外部系统交互并访问超出其训练数据范围的知识。
新增功能(Extensions)提供了Agent和外部API之间的桥梁,能够执行API呼叫并检索即时资讯。
函式(Functions)通过分工合作为开发者提供了更便捷的控制,允许代理产生函式参数,这些参数可以在客户端执行。
数据仓库区(Data Stores)为Agent提供了对格式化或非格式化数据的访问,从而实现了数据驱动的应用方案。
随着工具变得更加复杂,推理能力得到增强,Agent将有能力解决迫切复杂的问题。此外,「代理链(代理链)」的策略方法将继续获得发展。突破结合突破特定领域或任务的专业Agent,我们可以创建一个「混合 Agent 专家」方法,能够在各个行业和问题领域提供卓越的成果。
构建复杂的Agent架构需要迭代的方法。实验和改进是针对特定业务案例和组织需求找到解决方案的关键。由于支持其架构的基础模型的生成功能,没有两个Agent是几十的。
然而,利用每个基础组件的优势,我们可以创建有影响力的应用程序,扩展语言模型的功能并驱动真实世界。
作者:万能的大雄
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。