Skip to content

ADK 智能体的 vLLM 模型托管

Supported in ADKPython v0.1.0

诸如 vLLM 之类的工具允许你高效地托管模型并将它们作为兼容 OpenAI 的 API 端点提供服务。你可以通过 LiteLLM 库在 Python 中使用 vLLM 模型。

设置

  1. 部署模型: 使用 vLLM(或类似工具)部署你选择的模型。记下 API 基础 URL(例如,https://your-vllm-endpoint.run.app/v1)。
    • 对于 ADK 工具很重要: 部署时,确保服务工具支持并启用兼容 OpenAI 的工具/函数调用。对于 vLLM,这可能涉及诸如 --enable-auto-tool-choice 之类的标志,并可能需要特定的 --tool-call-parser,具体取决于模型。请参阅 vLLM 关于工具使用的文档。
  2. 身份验证: 确定你的端点如何处理身份验证(例如,API 密钥、bearer 令牌)。

集成示例

以下示例展示了如何将 vLLM 端点与 ADK 智能体一起使用。

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

# --- 使用托管在 vLLM 端点上的模型的示例智能体 ---

# 由你的 vLLM 部署提供的端点 URL
api_base_url = "https://your-vllm-endpoint.run.app/v1"

# 由*你的* vLLM 端点配置识别的模型名称
model_name_at_endpoint = "hosted_vllm/google/gemma-3-4b-it" # 来自 vllm_test.py 的示例

# 身份验证(示例:为 Cloud Run 部署使用 gcloud 身份令牌)
# 根据你的端点的安全性调整此部分
try:
    gcloud_token = subprocess.check_output(
        ["gcloud", "auth", "print-identity-token", "-q"]
    ).decode().strip()
    auth_headers = {"Authorization": f"Bearer {gcloud_token}"}
except Exception as e:
    print(f"Warning: Could not get gcloud token - {e}. Endpoint might be unsecured or require different auth.")
    auth_headers = None # 或适当地处理错误

agent_vllm = LlmAgent(
    model=LiteLlm(
        model=model_name_at_endpoint,
        api_base=api_base_url,
        # 如果需要,传递身份验证标头
        extra_headers=auth_headers
        # 或者,如果端点使用 API 密钥:
        # api_key="YOUR_ENDPOINT_API_KEY"
    ),
    name="vllm_agent",
    instruction="You are a helpful assistant running on a self-hosted vLLM endpoint.",
    # ... 其他智能体参数
)