ADK 智能体的 Google Gemini 模型¶
ADK 支持 Google Gemini 系列生成式 AI 模型,这些模型提供了一套功能强大且功能广泛的模型。ADK 支持许多 Gemini 功能,包括 代码执行、Google 搜索、上下文缓存、Computer Use 和 Interactions API。
入门¶
以下代码示例展示了在你的智能体中使用 Gemini 模型的基本实现:
import (
"google.golang.org/adk/agent/llmagent"
"google.golang.org/adk/model/gemini"
"google.golang.org/genai"
)
// --- Example using a stable Gemini Flash model ---
modelFlash, err := gemini.NewModel(ctx, "gemini-2.0-flash", &genai.ClientConfig{})
if err != nil {
log.Fatalf("failed to create model: %v", err)
}
agentGeminiFlash, err := llmagent.New(llmagent.Config{
// Use the latest stable Flash model identifier
Model: modelFlash,
Name: "gemini_flash_agent",
Instruction: "You are a fast and helpful Gemini assistant.",
// ... other agent parameters
})
if err != nil {
log.Fatalf("failed to create agent: %v", err)
}
Gemini 模型身份验证¶
本节介绍如何通过 Google AI Studio 进行快速开发或通过 Google Cloud Vertex AI 进行企业应用来对 Google 的 Gemini 模型进行身份验证。这是在 ADK 中使用 Google 旗舰模型的最直接方式。
集成方法: 使用以下方法之一进行身份验证后,你可以将模型的标识符字符串直接传递给 LlmAgent 的 model 参数。
Tip
ADK 内部用于 Gemini 模型的 google-genai 库可以通过 Google AI Studio 或 Vertex AI 进行连接。
语音/视频流的模型支持
为了在 ADK 中使用语音/视频流,你需要使用支持 Live API 的 Gemini 模型。你可以在文档中找到支持 Gemini Live API 的模型 ID:
Google AI Studio¶
这是最简单的方法,建议用于快速入门。
- 身份验证方法: API 密钥
-
设置:
- 获取 API 密钥: 从 Google AI Studio 获取你的密钥。
-
设置环境变量: 在项目的根目录中创建一个
.env文件 (Python) 或.properties文件 (Java),并添加以下行。ADK 将自动加载此文件。(或)
在模型初始化期间通过
Client传递这些变量(请参见下面的示例)。
-
模型: 在 Google AI for Developers 网站 上查找所有可用模型。
Google Cloud Vertex AI¶
对于可扩展和面向生产的用例,Vertex AI 是推荐的平台。Vertex AI 上的 Gemini 支持企业级功能、安全性和合规性控制。根据你的开发环境和用例,选择以下方法之一进行身份验证。
前置条件: 一个启用了 Vertex AI 的 Google Cloud 项目。
方法 A: 用户凭据(用于本地开发)¶
- 安装 gcloud CLI: 遵循官方 安装说明。
- 使用 ADC 登录: 此命令会打开浏览器以对你的用户帐户进行身份验证,用于本地开发。
-
设置环境变量:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID" export GOOGLE_CLOUD_LOCATION="YOUR_VERTEX_AI_LOCATION" # 例如,us-central1明确告诉库使用 Vertex AI:
-
模型: 在 Vertex AI 文档 中查找可用的模型 ID。
方法 B: Vertex AI Express 模式¶
Vertex AI Express 模式 提供了一种简化的、基于 API 密钥的设置,用于快速原型设计。
- 注册 Express 模式 以获取你的 API 密钥。
- 设置环境变量:
方法 C: 服务帐户(用于生产和自动化)¶
对于已部署的应用程序,服务帐户是标准方法。
- 创建服务帐户 并授予其
Vertex AI User角色。 - 向你的应用程序提供凭据:
- 在 Google Cloud 上: 如果你在 Cloud Run、GKE、VM 或其他 Google Cloud 服务中运行智能体,环境可以自动提供服务帐户凭据。你不必创建密钥文件。
- 在其他地方: 创建一个 服务帐户密钥文件 并使用环境变量指向它: 除了密钥文件之外,你还可以使用 Workload Identity 对服务帐户进行身份验证。但这超出了本指南的范围。
保护你的凭据
服务帐户凭据或 API 密钥是强大的凭据。切勿公开暴露它们。使用密钥管理器(如 Google Cloud Secret Manager)在生产环境中安全地存储和访问它们。
Gemini 模型版本
始终查看官方 Gemini 文档以获取最新的模型名称,包括所需的特定预览版本。预览模型可能具有不同的可用性或配额限制。
故障排除¶
错误代码 429 - RESOURCE_EXHAUSTED¶
如果你的请求数量超过了分配用于处理请求的容量,通常会发生此错误。
为了缓解这种情况,你可以执行以下操作之一:
-
为你尝试使用的模型请求更高的配额限制。
-
启用客户端重试。重试允许客户端在延迟后自动重试请求,如果配额问题是暂时的,这可能会有所帮助。
有两种方法可以设置重试选项:
选项 1: 在 Agent 上设置重试选项,作为 generate_content_config 的一部分。
如果你自己实例化此模型适配器,则可以使用此选项。
root_agent = Agent( model='gemini-2.5-flash', ... generate_content_config=types.GenerateContentConfig( ... http_options=types.HttpOptions( ... retry_options=types.HttpRetryOptions(initial_delay=1, attempts=2), ... ), ... )选项 2: 在此模型适配器上设置重试选项。
如果你自己实例化适配器的实例,则可以使用此选项。
Gemini Interactions API¶
Gemini Interactions API 是 generateContent 推理 API 的替代方案,它提供有状态的对话功能,允许你使用 previous_interaction_id 链接交互,而不是在每个请求中发送完整的对话历史记录。对于长对话,使用此功能可以更高效。
你可以通过在 Gemini 模型配置中设置 use_interactions_api=True 参数来启用 Interactions API,如以下代码片段所示:
from google.adk.agents.llm_agent import Agent
from google.adk.models.google_llm import Gemini
from google.adk.tools.google_search_tool import GoogleSearchTool
root_agent = Agent(
model=Gemini(
model="gemini-2.5-flash",
use_interactions_api=True, # 启用 Interactions API
),
name="interactions_test_agent",
tools=[
GoogleSearchTool(bypass_multi_tools_limit=True), # 转换为函数工具
get_current_weather, # 自定义函数工具
],
)
有关完整的代码示例,请参阅 Interactions API 示例。
已知限制¶
Interactions API 不 支持在同一智能体中混合使用自定义函数调用工具和内置工具,例如 Google 搜索 工具。你可以通过使用 bypass_multi_tools_limit 参数将内置工具配置为作为自定义工具运行来解决此限制:
# 使用 bypass_multi_tools_limit=True 将 google_search 转换为函数工具
GoogleSearchTool(bypass_multi_tools_limit=True)
在此示例中,此选项将内置的 google_search 转换为函数调用工具(通过 GoogleSearchAgentTool),这使其可以与自定义函数工具一起使用。