-推荐关注-
在当今快速发展的人工智能领域,“Agent”的概念正日益成为一个热门话题。Google发布的这份白皮书全面解析了智能Agent的核心概念、架构设计以及实际应用,为我们展示了人工智能如何从单纯的生成模型迈向更复杂、更高效的系统。这些系统通过结合语言模型、工具和逻辑推理能力,不仅能够自主决策,还能够通过外部数据和工具实时响应和解决实际问题。
白皮书从几个方面来介绍Agents
1.什么是Agent 1.1 Agent的三大基本组件 1.2 Agent与模型的区别 1.3 认知架构:Agent如何运作 2.工具:通往外部世界的钥匙 2.1 扩展(Extensions) 2.2 函数(Functions) 2.3 数据存储(Data stores) 3.通过针对性学习提高模型性能 4.使用 LangChain 进行智能体快速入门 5.使用 Vertex AI Agent 的生产级应用
--白皮书已放入学习资料, 领取学习资料大礼包,见文末
1.什么是Agent
通过观察世界并利用工具采取行动来实现目标的大模型应用就是Agent.
Agent是自主的,可以独立于人类干预进行行动,尤其是在给他们提供了要实现的目标的情况下。
Agent可以在实现目标的过程中采取主动的方式,即使在缺乏来自人类的明确指导的情况下,也可以推理出下一步该做什么,以实现其最终目标。
为了理解Agent的内部工作机制,首先介绍驱动Agent行为、动作和决策的基础组件,这些组件的组合可以称为认知架构,通过混合搭配这些组件可以实现多种这样的认知架构。
Agent的认知架构中有三个基本组件:模型(Model)、工具(Tools)、编排层(The orchestration layer) ,如图所示
相关阅读:
1.1 Agent的三大基本组件
1.1.1 模型(Model)
在Agent的范畴内,模型指的是Agent流程中集中决策者的语言模型(LM)。
Agent使用的模型可以是一个或多个大小不一(小型/大型)的语言模型(LM),这些模型能够进行基于指令的推理,并遵循逻辑框架,如 ReAct、思维链(Chain-of-Thought)或思维树(Tree-of-Thoughts)。
模型可以是通用的、多模态的或根据您特定的Agent架构需求进行微调的。
1.1.2 工具(Tools)
基础模型尽管在文本和图像生成方面表现良好,但仍然受限于无法与外部世界互动。
工具弥补了这一差距,使Agent能够与外部数据和服务互动,达到超出底层模型本身所能实现的更广泛的行动范围。
工具可以采取多种形式,并且具有不同程度的复杂性,但通常与常见的Web API方法(如GET、POST、PATCH和DELETE)相符。
例如,工具可以更新数据库中的客户信息,或获取天气数据,从而影响Agent向用户提供的旅行推荐。
通过工具,Agent可以访问和处理真实世界的信息。这使得它们能够支持更专业的系统,如检索增强生成(RAG),这显著扩展了Agent的能力。
1.1.3 编排层(The orchestration layer)
编排层描述了一个循环过程,该过程规定了Agent如何接收信息、进行内部推理,并利用该推理指导其下一步行动或决策。
通常,这个循环将持续运转,直到Agent达到其目标或停止点。
编排层的复杂性会根据Agent及其执行的任务而有很大的不同。
1.2 Agent与模型的区别
1.3 认知架构:Agent如何运作
Agent可以使用认知架构来实现他们的最终目标,通过迭代处理信息,做出明智的决策,并基于先前的输出改进下一步行动
Agent认知架构的核心是编排层,该层负责维护记忆、状态、推理和规划。
它利用提示工程及相关框架来指导推理和规划,使Agent能够更有效地与环境互动并完成任务。
当前常用的推理技术:
ReAct ,一个提示工程框架,为语言模型提供了一种思维过程策略,以便根据用户查询进行推理和采取行动,无论是否在上下文中。
链式思维(Chain-of-Thought) ,一种能够启用推理的提示工程框架
思维树(Tree-of-Thoughts) ,一个适合探索或战略前瞻任务的提示工程框架。
Agent可以利用上述推理技术之一,或许多其他技术,来选择针对给定用户请求的最佳下一步行动。
相关阅读:
2.工具:通往外部世界的钥匙
当前,Google 模型能够与三种主要工具类型进行交互:扩展、函数和数据存储 。通过为Agent配备工具,使Agent具备了不仅理解世界而且能够采取行动的巨大潜力
2.1 扩展(Extensions)
理解扩展的最简单方法是将其视为以标准化的方式使Agent能够无缝执行API,而无需考虑其底层实现。
假设您已经构建了一个帮助用户预订航班的Agent。您知道您想使用Google Flights API来获取航班信息,但您不确定如何让您的Agent调用此API端点。
扩展通过以下途径使Agent能够执行API:
使用示例教Agent如何使用API端点。 教Agent成功调用API端点所需的参数信息。
扩展可以独立于Agent进行制作,但应作为Agent配置的一部分提供。Agent在运行时使用模型和示例来决定哪个扩展(如果适用的话)适合解决用户的查询。这突出了扩展的一个关键优势,即其内置的示例类型,使Agent能够动态选择最适合任务的扩展。
总结来说,扩展为Agent提供了一种感知、互动和影响外部世界的方式。
2.2 函数(Functions)
函数与扩展在一些方面有所不同,最值得注意的是:
模型输出一个函数及其参数信息,但不进行实时API调用。 函数在客户端执行,而扩展在Agent端执行。
函数和Agent都不直接与Google Flights API交互。那么API调用实际是如何发生的呢?
对于函数,调用实际API端点的逻辑和执行从Agent侧转移到客户端侧应用程序
这使开发者能够更细粒度地控制应用程序中的数据流。
虽然两种方法在内部架构上的差异很小,如图所示,但更多的控制和对外部基础设施的解耦,使函数调用成为开发者的一个有吸引力的选择。
相关阅读:
2.3 数据存储(Data stores)
一个语言模型就像一个庞大的图书馆,里面包含了其训练数据。但与不断获取新卷册的图书馆不同,这个图书馆保持静态,只包含其最初训练时的知识。
这就构成了一个挑战,因为现实世界的知识是不断发展的。
数据存储通过提供更具动态性和最新性的信息来应对这一限制,并确保模型的响应保持基于事实和相关性。
数据存储允许开发者以原始格式向Agent提供额外数据,消除了耗时的数据转换、模型重新训练或微调的需求。
数据存储将传入的文档转换为一系列向量数据库嵌入,Agent可以使用这些嵌入来提取所需信息,以补充其下一个动作或对用户的响应。
数据存储的实施和应用
在生成式人工智能Agent的背景下,数据存储通常是在运行时让Agent访问的向量数据库。它们以向量嵌入的形式存储数据。
最近,语言模型中使用数据存储的一个最突出的例子是基于检索增强生成(RAG)的应用程序。
这些应用程序试图通过让模型访问各种格式的数据来扩展其知识的广度和深度,例如:
网站内容 PDF、Word文档、CSV、电子表格等格式的结构化数据 HTML、PDF、TXT等格式的非结构化数据
其底层过程通常如图所示。
用户查询被发送到嵌入模型以生成查询的嵌入 查询嵌入然后使用匹配算法(如SCaNN)与向量数据库的内容进行匹配 匹配的内容以文本格式从向量数据库中检索并发送回Agent Agent接收用户查询内容和检索到的内容,然后制定响应或动作
下图是和使用了ReAct推理/规划的RAG Agent的交互过程。
相关阅读:
3.通过针对性学习提高模型性能
有效使用模型的关键在于其在生成输出时选择合适工具的能力,尤其是在生产中大规模使用时。虽然一般性训练有助于模型培养这种能力,但现实世界场景通常需要超出训练数据的知识。
可以将这想象为基本烹饪技能和精通特定菜系之间的区别。
两者都需要基础的烹饪知识,但后者需要针对性学习以实现更精细的结果
为了帮助模型获取这种特定知识,有几种方法可以实现:
上下文学习:这种方法在推理时给模型提供一个提示词、工具和少量示例,使其能够即时学会如何以及何时运用这些工具完成特定任务。ReAct框架就是这种方法的一个例子。 基于检索的上下文学习:这种技术通过从外部记忆中检索,动态填充模型提示词中最相关的信息、工具和相关示例。之前提到的基于RAG架构的数据存储就是这种技术的一个例子。 基于微调的学习:这种方法在推理前使用更大的特定示例数据集训练模型。这有助于模型在接收任何用户查询之前明确何时以及如何运用某些工具。
通俗的理解一下:
一位厨师收到顾客提供的特定食谱(提示)、一些关键食材(相关工具)和一些示例菜肴(少量示例)。基于这些有限的信息和厨师对烹饪的一般知识,他们需要即时想出如何准备一道最符合食谱和顾客喜好的菜肴。这就是上下文学习。
如果我们的厨师在一个储备充足的食品储藏室(外部数据存储)里,里面装满了各种食材和烹饪书(示例和工具)。厨师现在可以从食品储藏室中动态选择食材和烹饪书,更好地符合顾客的食谱和喜好。这使得厨师能够利用现有和新知识创造出更明智且精致的菜肴。这就是基于检索的上下文学习。
最后,我们把厨师送回学校学习新的菜系(在更大的特定示例数据集上进行预训练)。这使得厨师能够以更深入的理解来应对未来未见过的顾客食谱。如果我们想让厨师在特定的菜系(知识领域)中表现出色,这种方法是完美的。这就是基于微调的学习。
这些方法在速度、成本和延迟方面各有独特的优势和劣势。然而,通过在Agent框架中结合这些技术,我们可以利用各种优势并最小化它们的弱点,从而实现更强大和可适应的解决方案。
4.使用 LangChain 进行智能体快速入门
白皮书中提供了一个简单的代码示例
5.使用 Vertex AI Agent 的生产级应用
谷歌的Vertex AI平台通过提供一个简单的方法,使开发者可以使用自然语言界面快速定义Agent的关键元素,允许测试、评估、衡量Agent性能、调试和提高开发Agent的整体质量
有需要的,在公众号「AI取经路」发消息「学习资料」即可获取。
--END--
点亮“赞”和“在看”,“分享”好友一起看