微信扫码
添加专属顾问
我要投稿
谷歌AI Agent如何突破限制,实现与现实世界交互? 核心内容: 1. 语言模型与现实世界交互的局限 2. 工具(Functions、Extensions、Data Stores、Plugins)如何增强模型能力 3. Google模型支持的三种主要工具类型与应用场景
尽管语言模型擅长处理信息,但它们缺乏直接感知和影响现实世界的能力。这限制了它们在需要与外部系统或数据交互的场景中的实用性。这意味着,在某种意义上,语言模型的能力仅限于其从训练数据中学到的内容。但无论我们向模型输入多少数据,它们仍然缺乏与外界交互的基础能力。那么,我们如何让模型具备与外部系统实时、上下文感知的交互能力?函数(Functions)、扩展(Extensions)、数据存储(Data Stores)和插件(Plugins)都是为模型提供这一关键能力的途径。
尽管这些技术有不同名称,工具(tools)才是建立基础模型与外部世界之间桥梁的核心。这种与外部系统和数据的连接,使智能体能够执行更广泛的任务,并提高准确性与可靠性。例如,工具可使智能体完成以下操作:
调节智能家居设置
更新日历
从数据库获取用户信息
根据特定指令发送电子邮件
截至本文发布时,Google模型支持交互的主要工具类型有三种:
扩展(Extensions)
函数(Functions)
数据存储(Data Stores)
通过为智能体配备工具,我们不仅释放其理解世界的潜力,更赋予其改造世界的能力,从而开启无数新应用场景与可能性。
扩展(Extensions)
理解扩展(Extensions)的最简单方式,是将其视为以标准化方法连接API与智能体的桥梁,使得智能体能够无缝执行API,而无需关心其底层实现细节。例如:假设您构建了一个以帮助用户预订航班为目标的智能体。您确定需使用Google Flights API获取航班信息,但不确定如何让智能体调用此API端点。
一种可能的解决方案是编写自定义代码,其流程如下:
接收用户查询
解析查询以提取关键信息
执行API调用
例如,在航班预订场景中,用户可能提出请求:“我想预订从奥斯汀(Austin)到苏黎世(Zurich)的航班。”在此情况下,自定义代码需从查询中提取“奥斯汀”(出发城市)和“苏黎世”(目的地城市)作为关键实体,再发起API调用。
但如果用户说“我想预订去苏黎世的航班”且未提供出发城市,会发生什么?
API调用将因缺少必要数据而失败
开发者需编写更多代码来处理此类边缘与极端情况(edge and corner cases)
这种方法存在严重缺陷:
不可扩展:每发现一个新问题都需修改代码
脆弱性:任何超出预设逻辑的场景都会导致系统崩溃
更稳健的方法是使用扩展(Extension)。扩展通过以下两个步骤连接智能体(agent)与API:
通过示例教导智能体如何使用API端点
明确告知智能体成功调用API端点所需的参数(arguments/parameters)
扩展(Extensions) 可独立于智能体(agent)开发,但需作为智能体配置的一部分提供。在运行时,智能体利用模型(model)和示例(examples)决定应选择哪个扩展(Extension)(如果有的话)来解决用户查询。这凸显了扩展的一个关键优势:其内置的示例类型(built-in example types),使智能体能够动态选择最适合当前任务的扩展。
类比理解:这如同软件开发者在解决用户问题时决定使用哪些API端点。例如:
若用户需预订航班,开发者可能调用Google Flights API
若用户需查找附近的咖啡店,开发者可能调用Google Maps API
同理,智能体/模型堆栈(agent/model stack) 通过一组已知的扩展(Extensions),选择最适合用户查询的选项。
实操演示: 若想体验扩展功能,可在Gemini应用中按以下路径操作:
前往 Settings(设置) > Extensions(扩展)
启用需测试的扩展(例如勾选 Google Flights扩展)
向Gemini提问:“显示下周五从奥斯汀(Austin)到苏黎世(Zurich)的航班”
示例拓展
为简化扩展(Extensions)的使用,Google提供了若干开箱即用(out of the box)的扩展,这些扩展可快速导入项目并仅需最少配置即可使用。例如,代码片段1中的Code Interpreter扩展允许您根据自然语言描述生成并运行Python代码。
总结而言,扩展(Extensions)为智能体(Agents)提供了以下能力:
多维度交互外部世界
感知(Perceive):通过API/数据库获取实时数据
交互(Interact):执行外部系统操作(如发送邮件、更新日历)
影响(Influence):触发现实世界动作(如控制智能设备)
选择与调用机制
指引依据:通过示例(Examples)定义扩展的适用场景与参数规范
配置集成:所有示例均作为扩展配置(Extension Configuration)的一部分,确保智能体在运行时能动态匹配最优扩展
技术价值:将开放世界的复杂性抽象为可编程接口,使智能体突破训练数据限制,实现环境感知-决策-行动闭环。
Functions函数
在软件工程领域,函数(Functions)被定义为可完成特定任务并能按需复用的自包含代码模块。当软件开发者编写程序时,通常会创建多个函数来执行不同任务,同时定义以下逻辑:
何时调用function_a
而非function_b
函数的预期输入与输出
在智能体领域,函数的工作方式非常相似,但决策主体从开发者变为模型(Model):
模型可根据预定义函数规范(specification),决定何时使用特定函数及其所需参数
函数与扩展(Extensions)的主要区别:
模型会输出函数及其参数,但不会直接执行实时API调用。
函数在客户端(client-side)执行,而扩展在代理端(agent-side)执行。
仍以Google Flights为例,函数的简单配置可能如图7(Figure 7)所示。
关键区别:函数(Function)与智能体(agent)均不直接与Google Flights API交互。那么API调用实际如何发生?
对于函数,调用实际API端点的逻辑和执行过程会从智能体到客户端应用程序(client-side application),如图8(Figure 8)和图9(Figure 9)所示。这为开发者提供了对应用数据流的更精细控制。
开发者选择函数而非扩展(Extensions)的常见原因:
API调用需在应用栈的其他层级执行,脱离智能体架构的直接流程(例如中间件系统、前端框架等)
安全或认证限制阻止智能体直接调用API(例如API未暴露在互联网,或智能体基础设施无法访问)
时序或操作顺序限制使智能体无法实时调用API(例如批量操作、人工审核流程等)
需对API响应应用额外数据转换逻辑,而智能体无法执行此类操作
示例:若API端点未提供结果数量限制的过滤机制,开发者可在客户端通过函数添加此类处理
开发者希望迭代智能体开发,而无需为API端点部署额外基础设施(即函数调用可模拟API“桩”功能)
尽管这两种方法在内部架构上的差异如图8所示般微妙,但额外的控制权及与外部基础设施的解耦依赖,使得函数调用(Function Calling)成为开发者青睐的选择。
用例
开发者可利用模型调用函数(Function Calling),以处理面向终端用户的复杂客户端执行流程——尤其当开发者不希望语言模型直接管理API执行(如扩展/Extensions的场景)时。
以下以旅行礼宾代理(travel concierge agent)为例说明:该代理旨在与计划度假旅行的用户交互,目标是为其中间件(middleware)应用生成城市列表,以便下载旅行规划所需的图片、数据等。
用户输入示例:“我想和家人一起滑雪旅行,但不确定去哪里。”
模型的典型响应:
好的,以下是一些适合家庭滑雪旅行的城市推荐:
• 美国科罗拉多州克雷斯特德比特(Crested Butte)
• 加拿大不列颠哥伦比亚省惠斯勒(Whistler)
• 瑞士采尔马特(Zermatt)
此输出虽包含所需数据(城市名称),但格式不利于解析。
函数调用的优化方案: 通过函数调用,可训练模型将输出格式化为结构化数据(如JSON),便于其他系统处理。针对同一用户输入,函数可能输出如代码片段5(Snippet 5)所示的JSON格式
此JSON有效载荷由模型生成,随后发送至我们的客户端服务器(Client-side server),我们可用它做我们想做的任何事。在此特定案例中,我们将调用Google Places API,通过模型提供的城市查询图片,再将结果以格式化的富媒体内容(formatted rich content)返回给用户。请参考图9(Figure 9)的序列图(sequence diagram),该图逐步展示了上述交互过程。
图9(Figure 9)示例的结果是:模型被用于“填补空白”,为客户端UI(Client side UI)调用Google Places API提供所需参数。客户端UI使用模型在返回函数中提供的参数管理实际API调用。这仅是函数调用(Function Calling)的一个用例,其他常见场景包括:
• 您希望语言模型建议可在代码中使用的函数,但不想在代码中包含凭证。由于函数调用不会执行函数本身,因此无需在代码中随函数信息附带凭证。
• 您需要运行耗时超过数秒的异步操作。此类场景适合函数调用,因其本质为异步操作。
• 您希望在与生成函数调用及参数的系统不同的设备上运行函数。
关于函数的关键要点是:它们旨在让开发者不仅对API调用执行,更对应用整体的数据流拥有更高控制权。在图9示例中,开发者选择不将API信息返回给智能体,因其与智能体后续行动无关。但根据应用架构,将外部API调用数据返回智能体以影响其未来推理、逻辑与行动选择可能更合理。最终,由应用开发者根据具体需求决定最佳方案。
Function sample code函数示例代码
为实现滑雪度假场景的上述输出,我们将逐步构建各个组件以适配gemini-1.5-flash-001模型:
首先,定义一个简单的Python方法
接下来,我们将实例化模型、构建工具(Tool),然后将用户查询与工具传入模型。执行以下代码将产生如代码片段底部所示的输出。
总结而言,函数(Functions)提供了一种直观的框架,为应用开发者赋能以下能力:
数据流与系统执行的精细控制
可精确管理API调用时机、参数格式与结果处理流程
智能体/模型的核心价值聚焦
利用模型生成关键输入(如参数填充、结构化数据生成),避免其直接操作外部系统
架构灵活性
选择性闭环控制:开发者可决定是否将外部API返回的数据回传至智能体,以影响后续推理与行动
按需解耦:根据应用架构需求,动态调整智能体在数据流中的参与程度
数据存储
比喻理解:将语言模型视为一座庞大的图书馆,其馆藏即其训练数据。但与持续购入新书的图书馆不同,这座图书馆的藏书静止不变,仅包含初始训练时的知识。这带来一个挑战:现实世界的知识在不断演进。
数据存储(Data Stores)通过以下方式突破此限制:
接入动态更新信息:连接实时数据源(如数据库、API流)。
保障回答的可靠性:确保模型的回答保持事实性与相关性。
典型应用场景示例:
当开发者需为模型提供少量新增数据时(例如电子表格或PDF文档),数据存储可高效完成此任务。
数据存储(Data Stores)使开发者能够以原始格式向智能体(agent)提供额外数据,从而省去以下耗时步骤的需求:
数据转换(如格式标准化)
模型重新训练(retraining)
微调(fine-tuning)
其核心机制为:数据存储将输入文档转换为向量数据库嵌入(vector database embeddings),智能体利用这些嵌入提取所需信息,以补充其后续行动或对用户的响应。
实现与应用
在生成式AI智能体(Generative AI agents)的语境中,数据存储(Data Stores)通常被实现为开发者希望智能体在运行时访问的向量数据库(vector database)。尽管此处不深入探讨向量数据库,但其核心机制是:以向量嵌入(vector embeddings)形式存储数据——即数据的高维向量/数学表示。
近年来,数据存储在语言模型中最典型的应用案例是检索增强生成(Retrieval Augmented Generation, RAG)类应用。这类应用通过让模型访问多种格式的数据,扩展其知识广度与深度(超越基础训练数据),支持的数据类型包括:
• 网站内容
• 结构化数据:PDF、Word文档、CSV、电子表格等
• 非结构化数据:HTML、PDF、TXT等
如图13(Figure 13)所示,用户请求与智能体响应循环的底层流程通常按以下步骤建模:
生成查询嵌入用户查询(query)发送至嵌入模型(embedding model),生成对应的查询嵌入(query embeddings)
向量数据库匹配使用SCaNN等匹配算法,将查询嵌入与向量数据库(vector database)中的内容进行相似度匹配
检索关联内容从向量数据库中以文本格式检索匹配内容,回传至智能体(agent)
响应生成与决策智能体同时接收用户原始查询和检索内容,据此生成响应或执行操作
返回最终结果向用户返回最终响应
最终结果是一个应用程序,其使智能体(agent)能够通过以下流程响应用户:
向量搜索匹配:将用户查询与已知数据存储(data store)进行向量搜索匹配
原始内容检索:从数据存储中检索原始内容(如文档段落)
编排层与模型处理:将检索内容传递至编排层(orchestration layer)和模型进行后续处理
后续动作可能是:
向用户提供最终答案
执行额外向量搜索以进一步优化结果
示例交互:采用RAG(检索增强生成)与ReAct推理/规划(ReAct reasoning/planning)的智能体交互流程可参见图14(Figure 14)。
工具概览
总结而言,扩展(Extensions)、函数(Functions)与数据存储(Data Stores)构成了智能体(Agents)在运行时(runtime)可用的几种工具类型。每类工具均有其独特用途,且可由智能体开发者(agent developer)自行决定独立使用或组合使用。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-25
微信聊天框内置元宝,超级 App 又一轮进化开始
2025-03-25
万字长文,聊聊下一代AI Agent的新范式
2025-03-25
从FP8到安全张量,DeepSeek‑V3‑0324 重塑大模型生态的秘密武器
2025-03-25
体验实在Agent,这才是当前形成生产力的企业级通用智能体
2025-03-25
Tokens与大语言模型:你真的懂它们的关系吗?
2025-03-25
法律助手:LexisNexis助力法律AI
2025-03-25
Cherry Studio 入门 MCP:为你的大模型插上翅膀
2025-03-25
【AIOps】Prometheus/夜莺接入DeepSeek大模型
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-03-25
2025-03-23
2025-03-22
2025-03-22
2025-03-22
2025-03-22
2025-03-22
2025-03-21