返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

谷歌 AI Agent 白皮书 3/3

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 17:14 |阅读模式 打印 上一主题 下一主题

本篇对应原白皮书以下章节:

3. 通过针对性学习提升模型性能

?现实场景通常需要超出训练数据的知识,有以下几种方法帮助模型/agent 获取这些知识:

  • 在推理时通过提示词提供示例

  • 基于检索的上下文学习 (RAG):提供外部知识库

  • 基于 Fine-tune 的学习:使用特定数据微调

有效使用模型的关键之一是它们在生成输出时能够选择合适的工具,特别是在生产环境中大规模使用工具时。

虽然一般的训练有助于模型发展这一技能,但现实场景通常需要超出训练数据的知识。可以将其想象为基本烹饪技能与精通特定菜系之间的区别。两者都需要基础的烹饪知识,但后者需要针对更细致结果的专门学习。

为了帮助模型获取这种特定知识,存在几种方法:

  • 上下文学习:这种方法在推理时为通用模型提供提示、工具和少样本示例,使其能够在特定任务中“即时”学习如何以及何时使用这些工具。ReAct 框架是自然语言处理中这种方法的一个例子。

  • 基于检索的上下文学习:该技术通过从外部存储中检索最相关信息、工具和相关示例,动态填充模型提示。例如,Vertex AI 扩展中的“示例存储”或之前提到的基于 RAG 架构的数据存储。

  • 基于微调的学习:这种方法在推理之前使用更大的特定示例数据集训练模型。这有助于模型在接收到任何用户查询之前理解何时以及如何应用某些工具。

为了进一步深入了解每种针对性学习方法,让我们回顾一下我们的烹饪类比。

  • 假设有一位厨师收到了一份具体的食谱(提示)、一些关键食材(相关工具)以及一些示例菜肴(少量示例)。基于这些有限的信息和厨师对烹饪的普遍知识,他们需要“即兴”想出如何准备一道最符合食谱和顾客偏好的菜肴。这就是上下文学习。

  • 现在,让我们想象一下,这位厨师在一个备有丰富食材的厨房(外部数据存储)中,里面装满了各种食材和烹饪书(示例和工具)。厨师现在能够从储藏室中动态选择食材和烹饪书,从而更好地符合顾客的食谱和偏好。这使得厨师能够利用现有和新知识,制作出更明智和精致的菜肴。这就是基于检索的上下文学习。

  • 最后,假设我们把这位厨师送回学校学习一种或多种新的菜系(在更大的特定示例数据集上进行预训练)。这使得厨师能够以更深入的理解来应对未来未见过的顾客食谱。如果我们希望厨师在特定菜系(知识领域)中表现出色,这种方法非常完美。这就是基于微调的学习。

每种方法在速度、成本和延迟方面都有独特的优势和劣势。然而,通过在代理框架中结合这些技术,我们可以利用各自的优势并最小化其劣势,从而实现更强大和适应性更强的解决方案。

4. 使用 LangChain 快速上手 Agent

为了提供一个真实的可执行代理示例,我们将使用 LangChain 和 LangGraph 库快速构建一个原型。这些流行的开源库允许用户通过“链接”逻辑、推理和工具调用的序列来构建自定义 Agent,以回答用户的查询。

我们将使用我们的 gemini-1.5-flash-001 模型和一些简单的工具来回答用户的多阶段查询,如代码片段 8 所示。我们使用的工具包括 SerpAPI(用于谷歌搜索)和 Google Places API。在代码片段 8 中执行我们的程序后,您可以在代码片段 9 中看到示例输出。

fromlanggraph.prebuiltimportcreate_react_agentfromlangchain_core.toolsimporttoolfromlangchain_community.utilitiesimportSerpAPIWrapperfromlangchain_community.toolsimportGooglePlacesToolos.environ["SERPAPI_API_KEY"]="XXXXX"os.environ["GPLACES_API_KEY"]="XXXXX"@tooldefsearch(query:str):"""UsetheSerpAPItorunaGoogleSearch."""search=SerpAPIWrapper()returnsearch.run(query)@tooldefplaces(query:str):"""UsetheGooglePlacesAPItorunaGooglePlacesQuery."""places=GooglePlacesTool()returnplaces.run(query)model=ChatVertexAI(model="gemini-1.5-flash-001")tools=[search,places]query="WhodidtheTexasLonghornsplayinfootballlastweek?Whatistheaddressoftheotherteam'sstadium?"agent=create_react_agent(model,tools)input={"messages":[("human",query)]}forsinagent.stream(input,stream_mode="values"):message=s["messages"][-1]ifisinstance(message,tuple):print(message)else:message.pretty_print()

代码片段 8 基于 LangChain 和 LangGraph 的带工具代理示例

===============================HumanMessage================================WhodidtheTexasLonghornsplayinfootballlastweek?Whatistheaddressoftheotherteam'sstadium?=================================AiMessage=================================ToolCalls:searchArgs:query:TexasLonghornsfootballschedule================================ToolMessage================================Name:search{...Results:"NCAADivisionIFootball,Georgia,Date..."}=================================AiMessage=================================TheTexasLonghornsplayedtheGeorgiaBulldogslastweek.ToolCalls:placesArgs:query:GeorgiaBulldogsstadium================================ToolMessage================================Name:places{...SanfordStadiumAddress:100Sanford...}=================================AiMessage=================================TheaddressoftheGeorgiaBulldogsstadiumis100SanfordDr,Athens,GA30602,USA.

代码片段 9 代码片段 8 中程序的输出结果

尽管这是一个相当简单的代理示例,但它展示了模型、编排和工具共同协作以实现特定目标的基础组件。在最后一部分,我们将探讨这些组件如何在谷歌规模的托管产品中结合,例如 Vertex AI 代理和生成式 Playbooks。

5. 带有 Vertex AI Agents 的生产应用

?Vertex AI:一个 Agent 搭建平台

虽然本白皮书探讨了代理的核心组件,但构建生产级应用程序需要将它们与用户界面、评估框架和持续改进机制等其他工具集成。

谷歌的 Vertex AI 平台通过提供一个完全托管的环境,涵盖了前面提到的所有基本元素,简化了这一过程。使用自然语言界面,开发人员可以快速定义其 Agent 的关键元素——目标、任务指令、工具、任务委派的子 Agent 和示例——从而轻松构建所需的系统行为。

此外,该平台还配备了一套开发工具,允许进行测试、评估、测量代理性能、调试以及提高开发 Agent 的整体质量。这使得开发人员可以专注于构建和优化其 Agent ,而基础设施、部署和维护的复杂性则由平台本身管理。

在图 15 中,我们展示了一个在 Vertex AI 平台上构建的 Agent 的示例架构,该架构使用了 Vertex Agent Builder、Vertex Extensions、Vertex Function Calling 和 Vertex Example Store 等诸多功能。该架构包含了生产级应用程序所需的各种组件。

图15. 基于Vertex AI平台构建的端到端代理架构示例

您可以尝试从我们的官方文档中体验这个预构建的代理架构示例。

6. 总结

在本白皮书中,我们讨论了生成式 AI Agent 的基础构建模块、它们的组成以及实现这些 Agent 的有效方法,即认知架构。本白皮书的一些关键要点包括:

  1. Agent 通过利用工具访问实时信息、建议现实世界的行动以及自主规划和执行复杂任务,扩展了语言模型的能力。 Agent 可以利用一个或多个语言模型来决定何时以及如何通过状态转换,并使用外部工具来完成任何数量的复杂任务,这些任务对于模型本身来说可能是困难或不可能完成的。

  2. Agent 操作的核心是编排层,这是一种结构化推理、规划、决策并指导其行动的认知架构。各种推理技术,如 ReAct、Chain-of-Thought 和 Tree-of-Thoughts,为编排层提供了一个框架,使其能够接收信息、进行内部推理并生成有根据的决策或响应。

  3. 工具,如扩展、函数和数据存储,是代理通向外部世界的关键,使它们能够与外部系统交互并访问超出其训练数据的知识。扩展在 Agent 和外部 API 之间架起了桥梁,使 API 调用得以执行并获取实时信息。函数通过分工提供了更细致的开发者控制,允许 Agent 生成可在客户端执行的函数参数。数据存储为 Agent 提供了对结构化或非结构化数据的访问,从而实现了数据驱动的应用。

Agent 的未来充满激动人心的进步,我们才刚刚开始触及可能性的表面。随着工具变得更加复杂且推理能力得到增强, Agent 将被赋予解决日益复杂问题的能力。此外,“代理链( Agent chaining)”的战略方法将继续获得势头。

通过结合专门化的 Agent ——每个 Agent 在特定领域或任务中表现卓越——我们可以创建一种“智能体专家混合(mixture of agent experts)”方法,能够跨多个行业和问题领域提供卓越成果。

重要的是要记住,构建复杂的 Agent 架构需要采用迭代方法。

实验和优化是找到特定业务案例和组织需求解决方案的关键。由于支撑其架构的基础模型具有生成性,因此没有两个 Agent 是完全相同的。然而,通过利用每个基础组件的优势,我们可以创建具有影响力的应用,扩展语言模型的能力并驱动实际价值。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ