地图体验智能体工具

地图体验智能体工具(以前称为 Maps Grounding Lite)是一项 Google Maps Platform 服务,支持 Model Context Protocol (MCP) 和 REST,可使用来自 Google 地图的可信地理空间数据为 AI 应用提供接地。其工具可让 LLM 访问地点、天气、空气质量、花粉和路线数据。其他工具会将地点名称和 Google 地图网址解析为地点 ID。您可以在任何支持 MCP 服务器的工具中启用 Maps Experience 智能体工具的 MCP 服务器,从而试用这些工具。您还可以将每个工具作为 REST 方法进行调用。如需了解详情,请参阅使用 REST 调用工具。

地图体验智能体工具是一款产品,包含两个 SKU:Essentials 和 Pro。除非使用 Pro 选项,否则每个请求都会按 Essentials 计费。 Pro 选项增加了沿路线进行地点搜索、扩展地点详情、每次搜索更多地点、每条路线更多中间经停点、实时路况路线规划、花粉预报和历史空气质量等功能。这两个 SKU 使用相同的工具、MCP 服务器、REST 方法和凭证。如需了解详情,请参阅基本功能版和专业版。

工具

借助地图体验智能体工具,LLM 可以访问以下 Google 地图功能:

  • 搜索地点:请求获取地点信息,并获取 AI 生成的摘要。响应还包含摘要中每个地点的地点 ID、纬度/经度坐标和 Google 地图链接。您可以将地点 ID 和经纬度坐标与其他 Google Maps Platform API 搭配使用,以便在地图上显示地点。如需使用 Places UI Kit 显示这些地点,而无需支付额外费用,请使用智能体数据可视化令牌(预览版)。使用 Pro 版,您可以请求扩展的地点详情(例如评价中的数据分析),每次请求最多可查询 10 个地点。
  • 沿路线搜索:查找沿行程路线(使用 compute_routes、route_endpoints 或 encoded_polyline 中的 retrieval_token 指定)的地点,并获取 AI 生成的摘要、地点详情、绕行距离和行程时间,以及智能体数据可视化令牌(预览版)。每个 search_along_route 请求都按 Pro SKU 结算。
  • 查询天气:请求获取某个地点的环境状况,包括天气(当前状况、24 小时历史记录以及最多 10 天的每小时和每日预报)和当前或最多 4 天的空气质量预报。借助 Pro,您还可以请求最多 5 天的每日花粉预测(包含植物物种详细信息)和最多 30 天的每小时空气质量历史记录。
  • 计算路线:请求起点和终点之间的路线(可选择经过中间停靠点),并返回路线的距离、时长以及 DRIVE 路线的 retrievalToken,您可以将其传递给 search_along_route。借助 Pro 版,路线可以考虑实时路况,并包含更多中间经停点。

  • 解析名称和解析地图网址:将地点名称、地址和 Google 地图网址解析为地点 ID。如需了解详情,请参阅 Resolution API。

启用 MCP 服务器后,LLM 可以调用其工具来获取这些数据类型的接地信息。LLM 可以使用这些信息作为上下文。 不过,其最终回答可能不包含 MCP 服务器返回的确切信息。验证生成的回答是否准确。

基本功能版和专业版

Essentials 和 Pro 是同一产品的两个 SKU,而不是单独的产品或方案。如果请求使用 Pro 选项,则会按 Pro 计费。所有其他请求均按 Essentials 计费。Pro 选项是工具请求中的普通字段,因此 LLM 可以代表您使用这些选项。代理还可以在同一对话中使用这两个 SKU。例如,智能体可能会使用 Essentials 查找地标附近的咖啡店。然后,它可能会使用 Pro 来回答有关其招牌饮品和座位的后续问题。Pro 没有单独的 MCP 服务器、端点或凭证。

比较基本功能版、专业版和 Grounding with Google Maps

Grounding with Google Maps 是一款单独的产品。它已内置于 Gemini API、Google AI Studio 和 Gemini Enterprise Agent Platform 中的 Gemini 模型中。模型会决定何时查询 Google 地图,并返回带有引用的接地回答。如果您在 Gemini 上构建应用,并希望模型处理 Grounding with Google Maps,请选择 Grounding with Google Maps。如果您使用的是其他模型或智能体框架,或者希望直接控制每个工具调用,请选择地图实验专区智能体工具。

下表比较了 Essentials SKU、Pro SKU 和 Grounding with Google Maps:

地图体验智能体工具 依托 Google 地图进行接地
Essentials SKU
(以前称为 Maps Grounding Lite)
Pro SKU
请求的结算方式 每个不使用 Pro 选项的工具请求 每个 search_along_route 请求,或向使用 Pro 选项的其他工具发出的任何请求。请参阅专业版 SKU 下的结算内容。 每个 Google 地图查询或接地提示,具体取决于平台和模型
模型和平台 任何支持 MCP 或可调用 REST API 的模型或智能体框架。两个 SKU 使用同一套工具和相同的凭据 Gemini API、Google AI Studio 和 Gemini Enterprise Agent Platform 中的 Gemini 模型
工具返回的内容 核心事实:每次搜索最多可提供 5 个地点的地点详情、不含实时路况的路线距离和时长、当前天气和天气预报(以及 24 小时逐小时天气历史记录),以及当前或预报的空气质量 包含 Essentials 中的所有功能,以及沿途地点(含绕行时间和距离)、扩展的地点详情(例如评价中的数据分析)、每次搜索最多 10 个地点、包含实时路况的路线、最多 25 个中间航点、花粉预报和最多 30 天的历史空气质量 地点详情、评价中的数据洞见以及包含实时路况的路线信息
示例请求 事实和物流问题:查找商店或商家、营业时间、地址、距离或行程时间估算、当前天气、10 天天气预报以及当前或 4 天空气质量预报 主观、宽泛或专业的问题:沿途地点、氛围、招牌菜、游客提示、6 到 10 个地点的比较、当前路况下的行程时间、花粉和过敏预测,以及过去 30 天的空气质量历史记录 Gemini 中的对话式搜索、行程规划和本地探索
Places UI Kit 可视化 包含在智能体数据可视化令牌(预览版)中,无需额外付费 单独计费
每月免费用量 10,000 个请求 5,000 次请求 取决于平台和型号。例如,在 Gemini API 中,Gemini 3 及更新的模型每月包含 5,000 次免费搜索查询。超出后,搜索查询费用为每 1,000 次 14 美元。
随用随付价格 每 1,000 次请求 7.00 美元,提供批量折扣 每 1,000 次请求 14.00 美元,提供批量折扣
订阅即可省钱 包含在基本功能版和 Pro 版方案中 Pro 方案中包含 不可用
开始使用 两种 SKU 的设置相同:请参阅将 LLM 配置为使用 MCP 服务器或使用 REST 调用工具。 Gemini API 或 Agent Platform

以下选项在两种 SKU 中的运作方式相同:出行方式、出发和到达时间、备选路线、路线多段线、天气查询、当前和预测空气质量查询(包括污染物浓度和本地 AQI 标度)、天气单位制和 Resolution API。它们不会更改请求的结算 SKU。

Pro SKU 下的结算内容

下表总结了 Essentials 中包含的功能以及需要 Pro SKU 的功能:

工具 能力 基本功能版 Pro
搜索地点 每个请求的地点数 最多 5 个 6 到 10(page_size,从 6 到 10)
搜索摘要中的扩展地点详情(评价中的数据分析、菜单亮点、氛围、地点繁忙程度、访客提示,以及邻近查询的距离或行程时间) 不可用 include_extended_details提供
沿路线搜索 沿途地点、绕行距离和行程时间,以及可选的扩展地点详情或考虑路况的绕行时间 不可用 每个请求
计算路线 路线偏好设置 未考虑实时路况 使用 ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL 考虑实时路况或公交路线的实时公交数据
每条路线的中间航点数 最多 10 个 11 到 25(超过 10 个intermediate_waypoints)
查询天气 天气 当前天气、每小时和每日预报(最多 10 天)以及最多 24 小时的每小时历史记录(capabilities 中的 WEATHER,或省略 capabilities、weather_options、air_quality_options 和 language_code 的旧版请求) 无 Pro 选项(所有 WEATHER 数据都包含在 Essentials 中)
空气质量 当前天气状况、今日全天每小时天气结果,以及最多 4 天的每小时天气预报(capabilities中的 AIR_QUALITY) 过去最多 30 天的历史空气质量(capabilities 中的 AIR_QUALITY,具有今天之前的 date 或地点时区中过去的 hour),在响应中返回
花粉 不可用 最长 5 天的每日花粉预测和植物种类详情(capabilities中的 POLLEN),在响应中返回
Resolution API 没有 Pro 选项。所有请求均按 Places API 文本搜索基本功能版(仅 ID)SKU 免费结算。

如需了解启用各项功能的请求选项,请参阅地点搜索、沿路线搜索、计算路线和查询天气。

控制 Pro 用量

在 search_places、compute_routes 和 lookup_weather 上,专业选项默认处于关闭状态。当用户的请求需要这些参数,并且工具说明或您的指令允许时,LLM 会设置这些参数或调用 search_along_route。工具说明会告知模型哪些选项费用更高,以及何时使用这些选项:page_size 超过 5、扩展的地点详情、超过 10 个中间航点、路况感知路线规划和 search_along_route。如果您使用 REST 调用工具,则代码会设置每个选项。如需管理费用,请执行以下操作:

  • 告诉模型何时适合使用 Pro 选项。例如:“仅当用户询问评价、菜单或氛围时,才设置 include_extended_details。”或者:“仅当用户询问当前行程时间时,才使用 ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL。”或者:“仅当用户询问路线沿途的地点时,才调用 search_along_route。”或者:“仅当用户询问花粉、过敏或历史空气质量时,才包含 POLLEN 或 AIR_QUALITY 以及过去的 date 或 hour。”
  • 如需让代理继续使用 Essentials SKU,请指示模型绝不调用 search_along_route 或使用 Pro 选项。Pro 选项包括 include_extended_details、page_size(超过 5 个)、ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL、超过 10 个中间航点、capabilities 中的 POLLEN,以及 capabilities 中具有 AIR_QUALITY 的过去 date 或 hour。如果您的 MCP 客户端可以限制工具或工具参数,您还可以在其工具配置中屏蔽 search_along_route 和这些参数值。
  • 在结算报告中监控 Maps Grounding Pro SKU,并设置预算提醒。

Resolution API

地图实验专区智能体工具提供 Resolution API。它可将自由形式的位置文本和网址解析为结构化的 Google 地图地点标识符。Resolution API 可作为 REST 方法和 MCP 服务器上的工具使用:

  • 解析名称(REST、MCP):将一批位置名称或地址解析为 Google 地图上的特定地点实体。此工具有助于将非结构化用户查询接地到稳定的地点 ID。
  • 解析地图网址(REST、MCP):将一批 Google 地图网址解析为特定地点实体。支持的格式包括标准地点网址和短网址。

您可以将返回的地点 ID 与其他 Google Maps Platform API 搭配使用。每个回答还包含一个链接,用于将解析出的地点保存为 Google 地图中的列表。

如需了解详情,请参阅 Maps Tools Resolution API。

试用示例应用(在新标签页中打开)

结算和配额

结算方式

在 Google Maps Platform 随用随付定价模式下,地图体验智能体工具的使用量是按请求计算的。每个请求代表一个结算事件。用量按产品 SKU 进行跟踪。除了总费用之外,您的账单还会显示每个 SKU 的专列项。如需了解详情,请参阅报告概览。

通过 MCP 服务器或 REST 发出的每个“地点搜索”“沿路线搜索”“计算路线”或“查询天气”请求,都会根据一个 SKU 计费:Maps Grounding Essentials 或 Maps Grounding Pro。每个 search_along_route 请求以及使用 Pro 选项的任何请求都会按 Pro SKU 结算。系统绝不会同时按这两个 SKU 对请求计费,并且请求中的 Pro 选项数量不会改变费用。如需了解决定每个工具 SKU 的功能和选项,请参阅按 Pro SKU 结算的内容。

每月前 10,000 次请求免费,超出后,Maps Grounding Essentials 请求按每 1,000 次请求 7.00 美元的价格计费。Maps Grounding Pro 请求在每月前 5,000 次请求之后,按每 1,000 次请求 14.00 美元的价格计费。这两个 SKU 均提供月用量阶梯折扣。

如需了解价格详情,请参阅主价格表和印度价格表。

Resolution API 请求(ResolveNames 和 ResolveMapsUrls)根据 Places API 文本搜索基本功能版(仅 ID) SKU 免费结算。

如果您使用 Places UI Kit 显示 search_places 或 search_along_route 响应中的地点,则可以使用智能体数据可视化令牌(预览版),这样这些 Places UI Kit 请求就不会被计费。

Essentials SKU 的用量包含在 Essentials 和 Pro 订阅即享优惠方案中。Pro SKU 的用量包含在 Pro 方案中。

配额

以下配额适用于 Maps Experience 智能体工具提供的工具和 API:

  • 搜索地点:每个项目每分钟 300 次查询。
  • 沿路线搜索:每个项目每分钟 300 次查询。
  • 查询天气:每个项目每分钟 300 次查询。
  • 计算路线:每个项目每分钟 300 次查询。
  • 解析名称:每个项目每分钟 600 次查询。
  • 解析地图网址:每个项目每分钟 600 次查询。

配额按工具计算,由 Essentials 和 Pro SKU 共享。 Pro 请求与对同一工具的 Essentials 请求消耗相同的配额。

每个 Resolution API 请求都算作一个查询,无论其中包含多少项。

政策和服务条款

地图实验专区智能体工具需遵守 Google Maps Platform 服务条款,包括服务专用条款。本部分介绍了 Maps Experience 代理工具的其他使用要求,包括兼容的 LLM 和来源归因。这些要求适用于所有结果,无论请求按哪个 SKU 计费。

兼容 LLM 的要求

您只能将地图体验智能体工具与符合《Google Maps Platform 服务条款》的大语言模型搭配使用。

例如,您有责任确保您选择使用的 LLM 不会缓存、存储或使用 Google 地图内容来改进自身。在使用地图体验智能体工具之前,您需要查看要与地图体验智能体工具搭配使用的所有模型的《服务条款》。您不得将 Maps Experience 代理工具与任何使用输入到模型中的数据进行模型训练或改进的模型搭配使用。您有责任确保您对模型的使用完全符合《Google Maps Platform 服务条款》(包括服务专用条款)中对 Google 地图内容的限制。

Google 地图来源的标明出处要求

地图体验智能体工具的每个工具回答都包含来源。当您展示地图实验专区工具的结果时,必须包含关联的 Google 地图来源,并满足以下要求:

  • Google 地图来源必须紧跟在这些来源所支持的生成内容之后。此类生成的内容也称为接地输出。
  • Google 地图来源必须在一次用户互动中可见。

“搜索地点”和“搜索沿途地点”工具的来源

search_places 工具 places 字段和 search_along_route 工具 results[].place 字段提供支持 summary 的来源。对于每个地点,系统都会返回以下元数据:

  • place(资源名称)
  • id
  • location
  • googleMapsLinks
  • attribution

对于每个地点,您必须生成符合以下要求的链接预览:

这些要求也适用于包含 Pro 提供的扩展地点详情(例如评价中的数据分析)的摘要。summary 使用从零开始的索引(例如 [0])引用每个地点,该索引会映射到 places 或 results 中的条目。 每个地点还包含 googleMapsLinks.reviewsUrl,用于链接到 Google 地图上该地点的评价。用户可以点击该链接,查看数据分析背后的评价。

语音优先界面

如果您的应用通过语音呈现地图体验智能体工具的结果,您还必须满足语音优先界面的要求。总结:

  • 来源:在随播界面中显示 Google 地图来源,该界面会显示语音对话的逐字历史记录。
  • 主动披露:在互动时,告知用户 AI 生成的内容可能包含来自 Google 地图的信息。同时告知他们,配套界面中提供了详细来源。您可以在屏幕上或通过语音执行此操作。
  • 持续披露:持续说明 AI 生成的内容可能包含 Google 地图内容,例如在语音设置菜单中。
  • 用户询问:准确回答用户关于内容来源的问题,并引导他们前往配套界面了解详情。

将 LLM 配置为使用 MCP 服务器

如需使用地图体验智能体工具,您需要有一个 Google Cloud 项目,并且该项目已启用地图体验智能体工具 API 服务。您还需要 API 密钥或 OAuth 客户端 ID。然后,您可以配置 LLM 以访问 MCP 服务器。MCP 服务器使用 Streamable HTTP 传输。

在 Google Cloud 项目中启用地图体验智能体工具

如需在项目中启用该 API,请执行以下操作:

  1. 在 Google Cloud 控制台中,选择要用于 Maps Experience 代理工具的项目。
  2. 在 Google Cloud 控制台中为项目启用结算功能。
  3. 在 Google Cloud 控制台 API 库中启用 Maps Experience 代理工具。

使用 API 密钥进行身份验证

您可以将现有 API 密钥与地图体验智能体工具搭配使用,也可以创建新的 API 密钥。无论采用哪种方式,都请在 Google Cloud 项目和密钥上启用 Maps Experience 代理工具 API 服务。

如需使用 API 密钥进行身份验证,请执行以下操作:

  1. 按照 Google Maps Platform 使用入门中的步骤创建或配置 API 密钥。
  2. 使用 X-Goog-Api-Key 标头将密钥传递给 MCP 服务器。您需要在 LLM 的 MCP 工具配置中将其指定为自定义 HTTP 标头。

使用 OAuth 进行身份验证

您可以通过创建 OAuth 凭证并将其传递给 MCP 主机或 MCP 服务器应用,使用 OAuth 进行身份验证。

如需使用 OAuth 进行身份验证,请执行以下操作:

  1. 在 Google Cloud 控制台中,选择要用于 Maps Experience 代理工具的项目。
  2. 在 API 和服务菜单中,选择凭证。
  3. 在顶部菜单中,依次选择创建凭据 > OAuth 客户端 ID。
  4. 如果项目没有配置的权限请求页面,请点击配置权限请求页面,然后按照屏幕上的说明操作。
  5. 在指标部分中,点击创建 OAuth 客户端。
  6. 在创建 OAuth 客户端 ID 页面上,选择应用类型并输入客户端 ID 的名称。
  7. 指定与您的应用类型相关的其他详细信息。 例如,如果您要创建 Web 应用,请为浏览器和服务器请求添加授权 URI。
  8. 创建客户端后,请保存客户端 ID 和密钥。
  9. 配置 MCP 主机或 MCP 服务器应用时,请传递 OAuth 客户端 ID 和密钥。您还必须请求以下范围:https://www.googleapis.com/auth/maps-platform.mapstools。

如需了解详情,请参阅使用 OAuth 2.0 访问 Google API。

将大语言模型配置为访问地图实验专区智能体工具 MCP 服务器

启用 Maps Experience agent tools 服务并创建凭证后,您可以配置 LLM 以访问 MCP 服务器。请按照 LLM 的 MCP 配置文档操作,并使用 MCP 服务器网址:https://mapstools.googleapis.com/mcp

如需了解详情,请参阅在 AI 应用中配置 MCP。

使用 Gemini CLI 配置地图实验专区智能体工具

本部分提供了一个示例,说明如何使用 Gemini CLI 配置 Maps Experience 智能体工具 MCP 服务器。如需了解详情,请参阅将 MCP 服务器与 Gemini CLI 搭配使用。

  1. 安装 Gemini CLI 后,运行 gemini mcp add 以配置 MCP 服务器:

    gemini mcp add -s user -t http -H 'X-Goog-Api-Key: API_KEY' maps-experience-agent-tools-mcp https://mapstools.googleapis.com/mcp
    

    如果配置成功,您应该会看到一条确认消息,表明服务器已添加到您的用户设置中。

  2. 如需验证服务器是否正常运行,请运行 /mcp list 命令:

    > /mcp list
    
    Configured MCP servers:
    
    maps-experience-agent-tools-mcp - Ready (6 tools)
    Tools:
    -   compute_routes
    -   lookup_weather
    -   resolve_maps_urls
    -   resolve_names
    -   search_along_route
    -   search_places
    
  3. 开始使用 CLI 问问地图相关的问题。例如,尝试输入“推荐山景城的一些餐厅”,这会代表您调用 search_places 工具。

使用智能体开发套件 (ADK) 配置地图实验专区智能体工具

本部分介绍了如何在 Python、Java 或 TypeScript 中使用智能体开发套件 (ADK) 配置 MCP 服务器。

Python

您可以在 GitHub 上的 adk-samples 代码库中找到此示例的完整实现。

第 1 步:使用 McpToolset 为地图实验专区智能体工具定义智能体

修改 agent.py 文件。将 YOUR_GOOGLE_MAPS_API_KEY 替换为您的实际 API 密钥。

# ./adk_agent_samples/mcp_agent/agent.py
import os
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams

# Retrieve the API key from an environment variable or directly insert it.
GOOGLE_MAPS_API_KEY = os.getenv("GOOGLE_MAPS_API_KEY")
if not GOOGLE_MAPS_API_KEY:
    GOOGLE_MAPS_API_KEY = "YOUR_GOOGLE_MAPS_API_KEY_HERE"

if GOOGLE_MAPS_API_KEY == "YOUR_GOOGLE_MAPS_API_KEY_HERE":
    print("WARNING: GOOGLE_MAPS_API_KEY is not set.")

root_agent = Agent(
    model='gemini-flash-latest',
    name='travel_planner_agent',
    description='A helpful assistant for planning travel routes.',
    tools=[
        McpToolset(
            connection_params=StreamableHTTPConnectionParams(
                url="https://mapstools.googleapis.com/mcp",
                headers={
                    "X-Goog-Api-Key": GOOGLE_MAPS_API_KEY,
                    "Content-Type": "application/json",
                    "Accept": "application/json, text/event-stream"
                }
            )
        )
    ]
)
    
第 2 步:确保 __init__.py 存在

确保 agent.py 所在的目录中有一个 __init__.py:

from . import agent
    
第 3 步:运行 adk web 并进行互动
  1. 设置环境变量:
    在终端中将 Google 地图 API 密钥设置为环境变量:
    export GOOGLE_MAPS_API_KEY="YOUR_ACTUAL_GOOGLE_MAPS_API_KEY"
            
  2. 运行 adk web:
    运行以下命令以启动 ADK 网页界面:
    adk web
            
  3. 在界面中互动:
    • 选择相应的 travel_planner_agent。
    • 尝试使用以下提示:
      • “我明天要去旧金山。天气怎么样?”
      • “查找金门公园附近的咖啡馆。”
      • “获取从 GooglePlex 到旧金山国际机场的路线。”

Java

定义一个在 Java 中初始化 McpToolset 的代理。 如果您不使用环境变量,请将 YOUR_GOOGLE_MAPS_API_KEY_HERE 替换为您获取的实际 API 密钥。

package agents;

import com.google.adk.agents.LlmAgent;
import com.google.adk.runner.InMemoryRunner;
import com.google.adk.sessions.SessionKey;
import com.google.adk.tools.mcp.McpToolset;
import com.google.adk.tools.mcp.StreamableHttpServerParameters;
import com.google.genai.types.Content;
import com.google.genai.types.Part;
import java.util.HashMap;
import java.util.Map;

public class MapsAgentCreator {
    public static void main(String[] args) {
        String googleMapsApiKey = System.getenv("GOOGLE_MAPS_API_KEY");
        if (googleMapsApiKey == null || googleMapsApiKey.trim().isEmpty()) {
            googleMapsApiKey = "YOUR_GOOGLE_MAPS_API_KEY_HERE";
            if ("YOUR_GOOGLE_MAPS_API_KEY_HERE".equals(googleMapsApiKey)) {
                System.out.println("WARNING: GOOGLE_MAPS_API_KEY is not set.");
            }
        }

        Map<String, String> headers = new HashMap<>();
        headers.put("X-Goog-Api-Key", googleMapsApiKey);
        headers.put("Content-Type", "application/json");
        headers.put("Accept", "application/json, text/event-stream");

        StreamableHttpServerParameters serverParams =
                StreamableHttpServerParameters.builder("https://mapstools.googleapis.com/mcp")
                        .headers(headers)
                        .build();

        try (McpToolset toolset = new McpToolset(serverParams)) {
            LlmAgent agent = LlmAgent.builder()
                    .model("gemini-flash-latest")
                    .name("travel_planner_agent")
                    .description("A helpful assistant for planning travel routes.")
                    .tools(toolset)
                    .build();

            System.out.println("Agent created: " + agent.name());

            InMemoryRunner runner = new InMemoryRunner(agent);
            String userId = "maps-user-" + System.currentTimeMillis();
            String sessionId = "maps-session-" + System.currentTimeMillis();
            String promptText =
                    "Please give me directions to the nearest pharmacy to Madison Square Garden.";

            SessionKey sessionKey = runner.sessionService()
                    .createSession(runner.appName(), userId, null, sessionId)
                    .blockingGet()
                    .sessionKey();
            System.out.println("Session created: " + sessionId + " for user: " + userId);

            Content promptContent = Content.fromParts(Part.fromText(promptText));
            System.out.println("\nSending prompt: \"" + promptText + "\" to agent...\n");

            runner.runAsync(sessionKey, promptContent)
                    .blockingForEach(event -> {
                        System.out.println("Event received: " + event.toJson());
                    });
        } catch (Exception e) {
            System.err.println("An error occurred: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
    

TypeScript

定义一个在 TypeScript 中初始化 MCPToolset 的智能体:

import 'dotenv/config';
import {LlmAgent, MCPToolset} from "@google/adk";

const googleMapsApiKey = process.env.GOOGLE_MAPS_API_KEY;
if (!googleMapsApiKey) {
    console.warn("WARNING: GOOGLE_MAPS_API_KEY is not set.");
    throw new Error(
        'GOOGLE_MAPS_API_KEY is not provided, please run "export GOOGLE_MAPS_API_KEY=YOUR_ACTUAL_KEY" to add that.'
    );
}

export const rootAgent = new LlmAgent({
    model: "gemini-flash-latest",
    name: "travel_planner_agent",
    description: "A helpful assistant for planning travel.",
    tools: [
        new MCPToolset({
            type: "StreamableHTTPConnectionParams",
            url: "https://mapstools.googleapis.com/mcp",
            transportOptions: {
                requestInit: {
                    headers: {
                        "X-Goog-Api-Key": googleMapsApiKey,
                        "Content-Type": "application/json",
                        "Accept": "application/json, text/event-stream"
                    }
                }
            }
        })
    ],
});
    

使用 REST 调用工具

地图体验智能体工具中的每个工具也作为 REST 方法提供。 如果您想将工具连接到自己的智能体或应用,请直接调用 REST 方法,例如,为模型声明您自己的函数、选择模型可以设置的选项,或在代码中设置默认值。

下表列出了每个工具的 REST 方法:

工具 REST 方法
search_places POST https://mapstools.googleapis.com/v1:searchText
search_along_route POST https://mapstools.googleapis.com/v1:searchAlongRoute
lookup_weather POST https://mapstools.googleapis.com/v1:lookupWeather
compute_routes POST https://mapstools.googleapis.com/v1:computeRoutes
resolve_names POST https://mapstools.googleapis.com/v1:resolveNames
resolve_maps_urls POST https://mapstools.googleapis.com/v1:resolveMapsUrls

REST 请求采用与相应工具相同的选项,并返回相同的响应。在 REST 请求和响应正文中,字段名称使用小驼峰命名法,例如 textQuery,而不是 text_query。REST 请求会根据相同的 SKU 计费,遵循相同的 Pro 选项规则,并计入与 MCP 工具调用相同的配额。

如需进行身份验证,请使用与 MCP 服务器相同的 Google Cloud 项目和凭证。如需了解设置步骤,请参阅将 LLM 配置为使用 MCP 服务器。 在 X-Goog-Api-Key 标头中传递 API 密钥,或在 Authorization 标头中传递具有 https://www.googleapis.com/auth/maps-platform.mapstools 范围的 OAuth 访问令牌。

以下示例调用了 searchText 方法:

curl -X POST \
-H "Content-Type: application/json" \
-H "X-Goog-Api-Key: API_KEY" \
-d '{
  "textQuery": "coffee shops near Golden Gate Park"
}' \
"https://mapstools.googleapis.com/v1:searchText"

将 API_KEY 替换为您的 API 密钥。

响应包含与 search_places 工具结果相同的 summary、places 和 contentToken 字段。每个工具的指南都会显示其示例的 REST 版本。

分享反馈

如需分享有关地图体验智能体工具的反馈,请使用以下表单: