将工具与 Gemini API 搭配使用

工具可扩展 Gemini 模型的功能,使其能够在现实世界中采取行动、访问实时信息并执行复杂的计算任务。模型可以通过标准请求-响应互动和使用 Live API 的实时流式传输会话来使用工具。

工具是模型可用于回答查询的特定功能(例如 Google 搜索或代码执行)。Gemini API 提供了一套全托管式内置工具,您也可以使用函数调用定义自定义工具。

如需构建多步骤、以目标为导向的系统,请参阅代理概览

可用的内置工具

工具 说明 使用场景
Google 搜索 根据当前事件和网络上的事实信息来提供回答,以减少幻觉。 - 回答有关近期事件的问题
- 通过各种来源核实事实
Google 地图 构建位置感知助理,该助理可以查找地点、获取路线,并提供丰富的本地背景信息。 - 规划包含多个经停点的旅游行程
- 根据用户条件查找本地商家
代码执行 允许模型编写和运行 Python 代码,以准确解决数学问题或处理数据。 - 求解复杂的数学方程式
- 精确处理和分析文本数据
网址上下文 指示模型读取和分析特定网页或文档中的内容。 - 根据特定网址或文档回答问题
- 检索不同网页中的信息
计算机使用(预览版) 使 Gemini 能够查看屏幕并生成与网络浏览器界面互动的操作(客户端执行)。 - 自动执行重复的基于 Web 的工作流
- 测试 Web 应用界面
文件搜索 为自己的文档编制索引并进行搜索,以实现检索增强生成 (RAG)。 - 搜索技术手册
- 基于专有数据回答问题

如需详细了解与特定工具相关的费用,请参阅价格页面

工具执行方式

借助工具,模型可以在对话期间请求执行操作。流程因工具是内置(由 Google 管理)还是自定义(由您管理)而有所不同。

内置工具流程

对于内置工具(Google 搜索、Google 地图、网址上下文、文件搜索、代码执行),整个过程都在一次 API 调用中完成:

  1. 发送提示:“GOOG 最新股价的平方根是多少?”
  2. Gemini 确定需要使用工具,并在 Google 的服务器上执行这些工具(例如,搜索股票价格,然后运行 Python 代码来计算平方根)。
  3. Gemini 会根据工具结果发送最终答案。

自定义工具流程(函数调用)

对于自定义工具和“计算机使用”,您的应用会处理执行:

  1. 发送提示以及函数(工具)声明。
  2. Gemini 可能会发回结构化 JSON 来调用特定函数(例如 {"name": "get_order_status", "args": {"order_id": "123"}}),并且始终带有唯一的 id
  3. 可以在应用或环境中执行该函数。
  4. 将函数结果(与函数调用具有相同的 id)发送回 Gemini。
  5. Gemini 会使用这些结果来生成最终回答或其他工具调用。

如需了解详情,请参阅函数调用指南

结合使用内置工具和自定义工具

对于结合使用内置工具和自定义工具(函数调用)的请求,模型会使用工具上下文循环来协调不同环境中的执行:

  1. 发送提示并声明要启用的内置工具和自定义函数,同时设置一个标志以开启组合支持。
  2. Gemini 会执行内置工具,并在生成任何客户端函数调用时将控制权交给用户(先执行哪个取决于提示和模型做出的决定)。它会发回包含以下内容的响应:
    • 确认工具调用
    • 工具响应的结果(如果模型生成了两个并行函数调用,则此结果可能位于 JSON 之后)
    • 用于调用函数的结构化 JSON
    • 加密的思考签名,用于保留上下文
  3. 可以在应用或环境中执行该函数。
  4. 返回 Gemini 回答的所有部分,以及函数调用结果。
  5. Gemini 会使用所有组合的上下文生成最终回答。

请参阅工具组合指南,了解如何启用对内置工具和自定义工具组合的支持,以及上下文循环的示例。

结构化输出与函数调用

Gemini 提供了两种生成结构化输出的方法。当模型需要通过连接到您自己的工具或数据系统来执行中间步骤时,请使用函数调用。如果您需要模型的最终回答严格遵循特定架构(例如用于呈现自定义界面),请使用结构化输出

使用工具生成结构化输出

您可以将结构化输出与内置工具相结合,以确保基于外部数据或计算结果的模型回答仍遵循严格的架构。

如需查看代码示例,请参阅使用工具生成结构化输出