Skip to content

ADK 智能体的 LiteRT-LM 模型托管

Supported in ADKPython v0.1.0Kotlin v0.4.0

你可以使用 LiteRT-LM 库在本地各种计算设备上高效运行语言模型,无需 GPU 或 TPU 等专用处理器。LiteRT-LM 支持许多模型,包括 Google Gemma 模型以及第三方模型。

Python

以下说明描述了如何使用 LiteRT-LM 服务器与 ADK Python 和 Gemma 开源权重模型,包括使用 LiteRT-LM 的本地托管模型服务器 lit

安装资源

你需要下载一个模型来配合 LiteRT-LM 使用,以及 lit CLI 工具来帮助你查找和下载模型。

安装 lit CLI 工具

按照 LiteRT-LM GitHub 仓库中的说明下载并安装 lit CLI 工具。

下载模型

在启动服务器之前,你需要下载一个模型。你需要一个 Hugging Face 用户访问令牌才能使用 lit 下载 LiteRT-LM 模型。你可以在此处获取你的 Hugging Face 账户的令牌。

要查看可供下载的模型列表,使用 lit list 命令:

lit list --show_all

使用 lit pull 命令下载模型:

export HUGGING_FACE_HUB_TOKEN="**your Hugging Face token**"
lit pull gemma3n-e2b

配置你的智能体

配置你的智能体以连接到 LiteRT-LM 和托管的模型。 使用 LiteRT-LM 运行 Gemma 模型时,你需要使用模型标识符和本地网络地址配置 Gemini 模型类。

要将 LiteRT-LM 与 ADK 和 Gemma 模型一起使用:

  1. base_url 设置为 LiteRT-LM 服务器 URL,例如:localhost:8001
  2. model 设置为 LiteRT-LM 模型名称,例如:gemma3n-e2b

以下示例代码展示了如何配置一个智能体, 连接到本地托管的 LiteRT-LM 实例以运行上述 Gemma 模型配置:

from google.adk.agents import Agent
from google.adk.models import Gemini

root_agent = Agent(
    model=Gemini(
        model="gemma3n-e2b",
        base_url="http://localhost:8001",
    ),
    name="dice_agent",
    description=(
        "一个可以掷 8 面骰子并检查素数的"
        " hello world 智能体。"
    ),
    instruction="""
      你掷骰子并回答关于掷骰结果的问题。
    """,
    tools=[
        roll_die,
        check_prime,
    ],
)

然后像往常一样运行智能体:

adk web

运行 LiteRT-LM 服务器

LiteRT-LM 服务器是一个独立的进程,用于提供 LiteRT-LM 模型服务。它由 LiteRT-LM CLI 工具 lit 启动。

运行服务器

下载模型后,通过运行以下命令在本地启动 LiteRT-LM 服务器:

lit serve --port 8001

本地服务器端口号

你可以为 LiteRT-LM 服务器选择任意端口号,只要它与你在智能体代码的 Gemini 类中设置的 base_url 匹配即可。

调试

要查看发送到 LiteRT-LM 服务器的请求以及发送给模型的精确输入,请使用 --verbose 标志:

lit serve --port 8001 --verbose

Kotlin

以下说明描述了如何使用 com.google.adk.kt.litertlm 包在 Kotlin 中将 LiteRT-LM 与 ADK 配合使用。

安装资源

你需要下载一个模型来配合 LiteRT-LM 使用,以及 litert-lm CLI 工具来帮助你查找和下载模型。

安装 LiteRT-LM CLI

前提条件:Python 3.10 或更高版本

要安装 CLI,运行:

pip install --upgrade litert-lm

如需其他安装方式(例如使用 uv),请参阅 LiteRT-LM CLI 安装指南

下载模型

下载一个与 LiteRT-LM 兼容的模型以使用 litert-lm CLI 工具。 使用 litert-lm 直接从 Hugging Face 下载模型:

litert-lm import \
  --from-huggingface-repo litert-community/gemma-4-E2B-it-litert-lm \
  gemma-4-E2B-it.litertlm

下载完成后,模型将存储在本地:

~/.litert-lm/models/gemma-4-E2B-it.litertlm/model.litertlm

有关 litert-lm 的更多详情,请参阅 LiteRT-LM CLI 使用指南

添加依赖

ADK Kotlin 通过适配器包 com.google.adk:google-adk-kotlin-litertlm 与 LiteRT-LM 配合工作。

在你的 build.gradle.kts 中,将 com.google.adk:google-adk-kotlin-litertlmcom.google.ai.edge.litertlm:litertlm-jvm 添加到依赖项中:

repositories {
    mavenCentral()
    google()
}

dependencies {
    implementation("com.google.adk:google-adk-kotlin-core:0.5.0")
    implementation("com.google.adk:google-adk-kotlin-litertlm:0.5.0")
    implementation("com.google.ai.edge.litertlm:litertlm-jvm:0.13.1")
    // 其他依赖...
}

配置智能体模型

通过将 LiteRtLmModel 对象配置为 LlmAgent 对象的一部分,使用 LiteRT-LM 为你的智能体运行本地模型。如果你还没有 ADK Kotlin 项目,请按照 Kotlin 快速入门指南进行操作。以下代码示例展示了如何 配置一个 LlmAgent,并将 model 参数设置为 LiteRtLmModel

 object HelloTimeAgent {

    // 从环境变量获取模型路径。
    private val modelPath: String by lazy {
        System.getenv("LITERT_LM_MODEL_PATH")
            ?: throw IllegalStateException(
                "必须设置 LITERT_LM_MODEL_PATH 环境变量,指向一个 .litertlm 文件。"
            )
    }

    @JvmField
    val rootAgent =
        LlmAgent(
            name = "hello_time_agent",
            description = "告知指定城市的当前时间。",
            model =
                LiteRtLmModel.create(
                    EngineConfig(modelPath = modelPath, backend = Backend.CPU())
                ),
            instruction =
                Instruction(
                    "你是一个可以告知城市当前时间的有用助手。" +
                        "使用 'getCurrentTime' 工具来实现此目的。"
                ),
            tools = TimeService().generatedTools(),
        )
}

在这个示例中,LiteRT-LM 模型文件的路径从环境变量 LITERT_LM_MODEL_PATH 中读取。模型将在 CPU 上运行。 你可以通过设置 backend = Backend.GPU() 来在 GPU 上运行模型。

当你运行智能体时,将 LITERT_LM_MODEL_PATH 设置为模型文件的位置, 例如:~/.litert-lm/models/gemma-4-E2B-it.litertlm/model.litertlm

运行你的智能体

如果你按照 Kotlin 快速入门指南 进行了上述修改,你可以使用命令行 REPL 运行你的 ADK 智能体,同时将环境变量 LITERT_LM_MODEL_PATH 设置为模型文件的路径:

LITERT_LM_MODEL_PATH=~/.litert-lm/models/gemma-4-E2B-it.litertlm/model.litertlm ./gradlew run

交互示例:

智能体 hello_time_agent 已就绪。输入 'exit' 退出。

You > 你叫什么名字?

hello_time_agent > 我是 Gemma 4,一个由 Google DeepMind 开发的大型语言模型。

You > 巴黎现在几点?

hello_time_agent > 调用工具:getCurrentTime

hello_time_agent > 巴黎现在是上午 10:30。