Skip to content

ADK 智能体的 LiteLLM 模型连接器

Supported in ADKPython v0.1.0
ADK Python 安全公告:LiteLLM 供应链漏洞

2026 年 3 月 24 日,在 PyPI 上的 LiteLLM 1.82.7 和 1.82.8 版本中发现了未经授权的代码。如果你在使用 ADK Python 时包含了 evalextensions 额外依赖项,请立即更新到 ADK Python 的最新版本。如果你在此期间安装或升级了 LiteLLM,请更换所有密钥和凭据。有关详细信息和所需操作,请参阅 ADK 安全公告LiteLLM 安全更新:疑似供应链事件

LiteLLM 是一个 Python 库,充当模型和模型托管服务的转换层,为 100 多种大语言模型 (LLM) 提供标准化的、兼容 OpenAI 的接口。ADK 通过 LiteLLM 库提供集成,使你能够访问来自 OpenAI、Anthropic (非 Vertex AI)、Cohere 等供应商的各种大模型。你可以本地运行开源模型或进行私有化部署,并通过 LiteLLM 集成它们,以实现运行控制、成本节约、隐私保护或离线使用场景。

你可以使用 LiteLLM 库访问远程或本地托管的 AI 模型:

  • 远程模型托管: 使用 LiteLlm 包装类并将其设置为 LlmAgentmodel 参数。
  • 本地模型托管: 使用配置为指向你本地模型服务器的 LiteLlm 包装类。有关本地模型托管协议的示例,请参阅 OllamavLLM 文档。
Windows 下使用 LiteLLM 的编码问题

在 Windows 上将 ADK 智能体与 LiteLLM 一起使用时,你可能会遇到 UnicodeDecodeError。发生此错误是因为 LiteLLM 可能会尝试使用默认的 Windows 编码 (cp1252) 而不是 UTF-8 来读取缓存文件。通过将 PYTHONUTF8 环境变量设置为 1 可防止此错误。这会强制 Python 对所有文件 I/O 使用 UTF-8。

示例 (PowerShell):

# 为当前会话设置
$env:PYTHONUTF8 = "1"

# 为用户持久设置
[System.Environment]::SetEnvironmentVariable('PYTHONUTF8', '1', [System.EnvironmentVariableTarget]::User)

设置

  1. 安装 LiteLLM:
    pip install litellm
    
  2. 设置提供商 API 密钥: 将 API 密钥配置为你打算使用的特定提供商的环境变量。

    • OpenAI 示例:

      export OPENAI_API_KEY="你的_OPENAI_API_KEY"
      
    • Anthropic (非 Vertex AI) 示例:

      export ANTHROPIC_API_KEY="你的_ANTHROPIC_API_KEY"
      
    • 有关其他提供商的正确环境变量名称,请参阅 LiteLLM 提供商文档

示例实现

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

# --- 使用 OpenAI GPT-4o 的示例智能体 ---
# (需要配置 OPENAI_API_KEY)
agent_openai = LlmAgent(
    model=LiteLlm(model="openai/gpt-4o"), # LiteLLM 模型字符串格式
    name="openai_agent",
    instruction="你是一个由 GPT-4o 驱动的得力助手。",
    # ... 其他智能体参数
)

# --- 使用 Anthropic Claude Haiku (非 Vertex) 的示例智能体 ---
# (需要配置 ANTHROPIC_API_KEY)
agent_claude_direct = LlmAgent(
    model=LiteLlm(model="anthropic/claude-3-haiku-20240307"),
    name="claude_direct_agent",
    instruction="你是一个由 Claude Haiku 驱动的助手。",
    # ... 其他智能体参数
)