Skip to content

ADK 智能体的 Agent Platform 托管模型

对于企业级可扩展性、可靠性以及与 Google Cloud MLOps 生态系统的集成,你可以使用部署到 Agent Platform 端点的模型。这包括来自 Model Garden 的模型或你自己的微调模型。

集成方法: 将完整的 Agent Platform 端点资源字符串 (projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID) 直接传递给 LlmAgentmodel 参数。

Agent Platform 设置

确保你的环境已为 Agent Platform 配置完成:

  1. 身份验证: 使用应用程序默认凭据 (ADC):

    gcloud auth application-default login
    
  2. 环境变量: 设置你的项目和位置:

    export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
    export GOOGLE_CLOUD_LOCATION="YOUR_VERTEX_AI_LOCATION" # 例如,us-central1
    
  3. 启用 Agent Platform 后端: 关键步骤,确保 google-genai 库指向 Agent Platform:

    export GOOGLE_GENAI_USE_VERTEXAI=TRUE
    

Model Garden 部署

Supported in ADKPython v0.2.0Java v0.1.0

你可以从 Model Garden 将各种开源和专有模型部署到端点。

示例:

from google.adk.agents import LlmAgent
from google.genai import types # 用于配置对象

# --- 使用从 Model Garden 部署的 Llama 3 模型的示例智能体 ---

# 替换为你的实际 Agent Platform 端点资源名称
llama3_endpoint = "projects/YOUR_PROJECT_ID/locations/us-central1/endpoints/YOUR_LLAMA3_ENDPOINT_ID"

agent_llama3_vertex = LlmAgent(
    model=llama3_endpoint,
    name="llama3_vertex_agent",
    instruction="你是一个基于 Llama 3 的得力助手,托管在 Agent Platform 上。",
    generate_content_config=types.GenerateContentConfig(max_output_tokens=2048),
    # ... 其他智能体参数
)
import com.google.adk.agents.LlmAgent;
import com.google.adk.models.Gemini;
import com.google.genai.types.GenerateContentConfig;

// ...

// 替换为你的实际 Agent Platform 端点资源名称
String llama3Endpoint = "projects/YOUR_PROJECT_ID/locations/us-central1/endpoints/YOUR_LLAMA3_ENDPOINT_ID";

LlmAgent agentLlama3Vertex = LlmAgent.builder()
    .model(Gemini.builder()
        .modelName(llama3Endpoint)
        .build())
    .name("llama3_vertex_agent")
    .instruction("你是一个基于 Llama 3 的得力助手,托管在 Agent Platform 上。")
    .generateContentConfig(GenerateContentConfig.builder()
        .maxOutputTokens(2048)
        .build())
    // ... 其他智能体参数
    .build();

微调模型端点

Supported in ADKPython v0.2.0Java v0.1.0

部署你的微调模型(无论是基于 Gemini 还是 Agent Platform 支持的其他架构)会生成一个可直接使用的端点。

示例:

from google.adk.agents import LlmAgent

# --- 使用微调后的 Gemini 模型端点的示例智能体 ---

# 替换为你微调模型的端点资源名称
finetuned_gemini_endpoint = "projects/YOUR_PROJECT_ID/locations/us-central1/endpoints/YOUR_FINETUNED_ENDPOINT_ID"

agent_finetuned_gemini = LlmAgent(
    model=finetuned_gemini_endpoint,
    name="finetuned_gemini_agent",
    instruction="你是一个经过特定数据训练的专业助手。",
    # ... 其他智能体参数
)
import com.google.adk.agents.LlmAgent;
import com.google.adk.models.Gemini;

// ...

// 替换为你微调模型的端点资源名称
String finetunedGeminiEndpoint = "projects/YOUR_PROJECT_ID/locations/us-central1/endpoints/YOUR_FINETUNED_ENDPOINT_ID";

LlmAgent agentFinetunedGemini = LlmAgent.builder()
    .model(Gemini.builder()
        .modelName(finetunedGeminiEndpoint)
        .build())
    .name("finetuned_gemini_agent")
    .instruction("你是一个经过特定数据训练的专业助手。")
    // ... 其他智能体参数
    .build();

Agent Platform 上的 Anthropic Claude

Supported in ADKPython v0.2.0Java v0.1.0

一些提供商(如 Anthropic)使其模型可直接通过 Agent Platform 使用。

示例:

集成方法: 使用直接模型字符串 (例如,"claude-3-sonnet@20240229"),但需要在 ADK 内手动注册

为什么需要注册? ADK 的注册表会自动识别 gemini-* 字符串和标准的 Agent Platform 端点字符串 (projects/.../endpoints/...),并通过 google-genai 库进行路由。对于通过 Agent Platform 直接使用的其他模型类型(如 Claude),你必须明确告诉 ADK 注册表哪个特定的包装类(在本例中是 Claude)知道如何使用 Agent Platform 后端处理该模型标识符字符串。

设置:

  1. Agent Platform 环境: 确保完整的 Agent Platform 设置(ADC、环境变量、GOOGLE_GENAI_USE_VERTEXAI=TRUE)已完成。

  2. 安装提供商库: 安装为 Agent Platform 配置的必要客户端库。

    pip install "anthropic[vertex]"
    
  3. 注册模型类: 在应用程序开始附近添加此代码,使用 Claude 模型字符串创建智能体之前:

    ```python

    Required for using Claude model strings directly via Agent Platform with LlmAgent

通过 Agent Platform 与 LlmAgent 直接使用 Claude 模型字符串所需的导入

    from google.adk.models.anthropic_llm import Claude
    from google.adk.models.registry import LLMRegistry

    LLMRegistry.register(Claude)
    ```

   ```python
   from google.adk.agents import LlmAgent
   from google.adk.models.anthropic_llm import Claude # 注册所需的导入
   from google.adk.models.registry import LLMRegistry # 注册所需的导入
   from google.genai import types

   # --- 注册 Claude 类 (在启动时执行一次) ---
   LLMRegistry.register(Claude)

   # --- 使用 Agent Platform 上的 Claude 3 Sonnet 的示例智能体 ---

   # Agent Platform 上 Claude 3 Sonnet 的标准模型名称
   claude_model_vertexai = "claude-3-sonnet@20240229"

   agent_claude_vertexai = LlmAgent(
       model=claude_model_vertexai, # 注册后传递直接字符串
       name="claude_vertexai_agent",
       instruction="你是一个由 Agent Platform 上的 Claude 3 Sonnet 驱动的助手。",
       generate_content_config=types.GenerateContentConfig(max_output_tokens=4096),
       # ... 其他智能体参数
   )
   ```

集成方法: 直接实例化特定于提供商的模型类(例如 com.google.adk.models.Claude)并使用 Agent Platform 后端进行配置。

为什么直接实例化? Java ADK 的 LlmRegistry 默认主要处理 Gemini 模型。对于 Agent Platform 上的第三方模型(如 Claude),你可以直接将 ADK 包装类(例如 Claude)的实例提供给 LlmAgent。此包装类负责通过其特定的客户端库与模型交互,并针对 Agent Platform 进行了配置。

设置:

  1. Agent Platform 环境:

    • 确保你的 Google Cloud 项目和区域已正确设置。
    • 应用程序默认凭据 (ADC): 确保在你的环境中正确配置了 ADC。通常通过运行 gcloud auth application-default login 完成。Java 客户端库使用这些凭据与 Agent Platform 进行身份验证。有关详细设置,请遵循 关于 ADC 的 Google Cloud Java 文档
  2. 提供商库依赖项:

    • 第三方客户端库(通常为传递性依赖): ADK 核心库通常将 Agent Platform 上常见第三方模型(如 Anthropic 所需的类)的必要客户端库作为传递性依赖项包含在内。这意味着你可能不需要在 pom.xmlbuild.gradle 中显式添加 Anthropic Vertex SDK 的独立依赖项。
  3. 实例化和配置模型: 创建 LlmAgent 时,实例化 Claude 类 (或其他提供商的等效类) 并配置其 VertexBackend

import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.vertex.backends.VertexBackend;
import com.google.adk.agents.LlmAgent;
import com.google.adk.models.Claude; // ADK 的 Claude 包装器
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;

// ... 其他导入

public class ClaudeVertexAiAgent {

    public static LlmAgent createAgent() throws IOException {
        // Model name for Claude 3 Sonnet on Agent Platform (or other versions)
        String claudeModelVertexAi = "claude-3-7-sonnet"; // Or any other Claude model

        // 使用 VertexBackend 配置 AnthropicOkHttpClient
        AnthropicClient anthropicClient = AnthropicOkHttpClient.builder()
            .backend(
                VertexBackend.builder()
                    .region("us-east5") // Specify your Agent Platform region
                    .project("your-gcp-project-id") // Specify your GCP Project ID
                    .googleCredentials(GoogleCredentials.getApplicationDefault())
                    .build())
            .build();

        // 使用 ADK Claude 包装器实例化 LlmAgent
        LlmAgent agentClaudeVertexAi = LlmAgent.builder()
            .model(new Claude(claudeModelVertexAi, anthropicClient)) // 传递 Claude 实例
            .name("claude_vertexai_agent")
            .instruction("你是一个由 Agent Platform 上的 Claude 3 Sonnet 驱动的助手。")
            // .generateContentConfig(...) // Optional: Add generation config if needed
            // ... other agent parameters
            .build();

        return agentClaudeVertexAi;
    }

    public static void main(String[] args) {
        try {
            LlmAgent agent = createAgent();
            System.out.println("成功创建智能体:" + agent.name());
            // 在这里你通常会设置 Runner 和 Session 来与智能体交互
        } catch (IOException e) {
            System.err.println("创建智能体失败:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

Agent Platform 上的开源模型

Supported in ADKPython v0.1.0Java v0.1.0

Agent Platform 通过模型即服务 (MaaS) 提供精心挑选的开源模型,例如 Meta Llama。这些模型可通过托管 API 访问,使你能够部署和扩展而无需管理底层基础设施。有关可用选项的完整列表,请参阅 Agent Platform MaaS 开源模型 文档。

你可以使用 LiteLLM 库来访问 Agent Platform MaaS 上的开源模型,如 Meta 的 Llama

集成方法: 使用 LiteLlm 包装类并将其设置为 LlmAgentmodel 参数。请确保阅读了 ADK 智能体的 LiteLLM 模型连接器 文档,了解如何在 ADK 中使用 LiteLLM 访问。

设置:

  1. Agent Platform 环境: 确保完整的 Agent Platform 设置(ADC、环境变量、GOOGLE_GENAI_USE_VERTEXAI=TRUE)已完成。

  2. 安装 LiteLLM:

    pip install litellm
    

示例:

from google.adk.agents import LlmAgent
from google.adk.models.lite_llm import LiteLlm

# --- 使用 Meta Llama 4 Scout 的示例智能体 ---
agent_llama_vertexai = LlmAgent(
    model=LiteLlm(model="vertex_ai/meta/llama-4-scout-17b-16e-instruct-maas"), # LiteLLM 模型字符串格式
    name="llama4_agent",
    instruction="你是一个由 Llama 4 Scout 驱动的得力助手。",
    # ... 其他智能体参数
)