Skip to content

ADK 智能体的 Google Gemini 模型

Supported in ADKPython v0.1.0Typescript v0.2.0Go v0.1.0Java v0.2.0Kotlin v0.1.0

ADK 支持 Google Gemini 系列生成式 AI 模型,这些模型提供了一系列功能强大的模型,具有广泛的功能。ADK 支持许多 Gemini 功能,包括代码执行Google 搜索上下文缓存Computer USE以及 Interactions API

入门

以下代码示例展示了在你的智能体中使用 Gemini 模型的基本实现:

from google.adk.agents import LlmAgent

# --- 使用稳定的 Gemini Flash 模型的示例 ---
agent_gemini_flash = LlmAgent(
    # 使用最新的稳定 Flash 模型标识符
    model="gemini-flash-latest",
    name="gemini_flash_agent",
    instruction="你是一个快速且得力的 Gemini 助手。",
    # ... 其他智能体参数
)
import {LlmAgent} from '@google/adk';

// --- 示例:定义一个基本的 Gemini Flash 智能体 ---
export const rootAgent = new LlmAgent({
  name: 'hello_time_agent',
  model: 'gemini-flash-latest',
  description: 'Gemini flash agent',
  instruction: `你是一个快速且得力的 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 Flash 模型 ---
LlmAgent agentGeminiFlash =
    LlmAgent.builder()
        // 使用最新的稳定 Flash 模型标识符
        .model("gemini-flash-latest") // Set ENV variables to use this model
        .name("gemini_flash_agent")
        .instruction("你是一个快速且得力的 Gemini 助手。")
        // ... 其他智能体参数
        .build();
import com.google.adk.kt.agents.Instruction
import com.google.adk.kt.agents.LlmAgent
import com.google.adk.kt.models.Gemini

// --- 示例:使用稳定的 Gemini Flash 模型 ---
val agentGeminiFlash = LlmAgent(
    // 使用最新的稳定 Flash 模型标识符
    name = "gemini_flash_agent",
    model = Gemini(name = "gemini-flash-latest"),
    instruction = Instruction("你是一个快速且得力的 Gemini 助手。"),
    // ... 其他智能体参数
)
注意:Gemini 模型选择器 gemini-flash-latest

ADK 文档中的大多数代码示例使用 gemini-flash-latest 来选择最新可用的 Gemini Flash 版本。但是,如果你是从区域端点(如 us-central1)访问 Gemini,此选择字符串可能无法生效。在这种情况下,请使用 Gemini 模型页面或 Google Cloud Gemini 模型列表中的特定模型版本字符串。

本节介绍如何通过 Google AI Studio 进行快速开发,或通过 Google Cloud Vertex AI 进行企业级应用来对 Google 的 Gemini 模型进行身份验证。这是在 ADK 中使用 Google 旗舰模型的最直接方式。

当通过服务使用 AI 模型时,例如 Gemini API 或 Google Cloud 上的 Gemini Enterprise Agent Platform,你必须提供 API 密钥或向服务进行身份验证。提供此信息的最直接方式是使用环境变量或 .env 文件。以下示例展示了配置智能体以使用 Gemini API 或 Gemini Enterprise Agent Platform 的最常见方式。

# .env configuration file
GOOGLE_API_KEY="PASTE_YOUR_GEMINI_API_KEY_HERE"
# .env configuration file
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=location-code        # example: us-central1
GOOGLE_GENAI_USE_ENTERPRISE=True

有关将 ADK 智能体连接到 Google Cloud 托管模型和服务(包括 Gemini Enterprise Agent Platform)的更多详情,请参阅连接 Google Cloud 和 Agent Platform指南。

语音和视频流式支持

为了在 ADK 中使用语音/视频流式处理,你需要使用支持 Live API 的 Gemini 模型。你可以在文档中找到支持 Gemini Live API 的模型 ID

Gemini Interactions API

Supported in ADKPython v1.21.0

Gemini Interactions APIgenerateContent 推理 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-flash-latest",
        use_interactions_api=True,  # Enable Interactions API
    ),
    name="interactions_test_agent",
    tools=[
        GoogleSearchTool(bypass_multi_tools_limit=True),  # Converted to function tool
        get_current_weather,  # Custom function tool
    ],
)

有关完整代码示例,请参阅 Interactions API 示例

已知限制

Interactions API 不支持在同一智能体中将自定义函数调用工具与内置工具(如 Google 搜索工具)混合使用。你可以通过使用 bypass_multi_tools_limit 参数将内置工具配置为自定义工具来解决此限制:

# Use bypass_multi_tools_limit=True to convert google_search to a function tool
GoogleSearchTool(bypass_multi_tools_limit=True)

在此示例中,此选项将内置的 google_search 转换为函数调用工具(通过 GoogleSearchAgentTool),使其可以与自定义函数工具一起使用。

当你的请求数量超过了模型分配的处理容量时,通常会发生此错误。

要缓解此问题,你可以尝试以下操作:

  1. 为你尝试使用的模型请求更高的配额限制。
  2. 启用客户端重试。重试允许客户端在延迟后自动重新发送请求,如果配额问题是暂时的,这可能会有所帮助。

有两种方法可以设置重试选项:

选项 1:在智能体上设置重试选项(作为 generate_content_config 的一部分)。

如果你是自行实例化此模型适配器,则应使用此选项。

=== "Python"

    ```python
    root_agent = Agent(
        model='gemini-flash-latest',
        # ...
        generate_content_config=types.GenerateContentConfig(
            # ...
            http_options=types.HttpOptions(
                # ...
                retry_options=types.HttpRetryOptions(initial_delay=1, attempts=2),
                # ...
            ),
            # ...
        )
    )
    ```

=== "Java"

    ```java
    import com.google.adk.agents.LlmAgent;
    import com.google.genai.types.GenerateContentConfig;
    import com.google.genai.types.HttpOptions;
    import com.google.genai.types.HttpRetryOptions;

    // ...

    LlmAgent rootAgent = LlmAgent.builder()
        .model("gemini-flash-latest")
        // ...
        .generateContentConfig(GenerateContentConfig.builder()
            // ...
            .httpOptions(HttpOptions.builder()
                // ...
                .retryOptions(HttpRetryOptions.builder().initialDelay(1.0).attempts(2).build())
                // ...
                .build())
            // ...
            .build())
        .build();
    ```
    ```

**选项 2:在此模型适配器上设置重试选项。**

如果你是自行实例化适配器实例,则应使用此选项。

=== "Python"

    ```python
    from google.genai import types

    root_agent = Agent(
        model='gemini-flash-latest',
        # ...
        generate_content_config=types.GenerateContentConfig(
            # ...
            http_options=types.HttpOptions(
                # ...
                retry_options=types.HttpRetryOptions(initial_delay=1, attempts=2),
                # ...
            ),
            # ...
        )
    )
    ```

=== "Java"

    ```java
    import com.google.adk.agents.LlmAgent;
    import com.google.genai.types.GenerateContentConfig;
    import com.google.genai.types.HttpOptions;
    import com.google.genai.types.HttpRetryOptions;

    LlmAgent agent = LlmAgent.builder()
        .model(Gemini.builder()
            .modelName("gemini-flash-latest")
            .apiClient(Client.builder()
                .httpOptions(HttpOptions.builder()
                    .retryOptions(HttpRetryOptions.builder().initialDelay(1.0).attempts(2).build())
                    .build())
                .build())
            .build())
        .build();
    ```

=== "Kotlin"

    在 Kotlin 中,你可以通过自己创建 `Client` 实例并将其传递给 `Gemini` 构造函数来实现这一点。

    ```kotlin
    import com.google.adk.kt.agents.LlmAgent
    import com.google.adk.kt.models.Gemini
    import com.google.genai.Client
    import com.google.genai.types.HttpOptions
    import com.google.genai.types.HttpRetryOptions

    val client = Client.builder()
        .apiKey("YOUR_API_KEY")
        .httpOptions(HttpOptions.builder()
            .retryOptions(HttpRetryOptions.builder().initialDelay(1.0).attempts(2).build())
            .build())
        .build()

    val model = Gemini(client = client, name = "gemini-flash-latest")

    val agent = LlmAgent(
        name = "my_agent",
        model = model
        // ...
    )
    ```