Capstone: Build Your Private AI Assistant Product

Updated on 4/8/2026

[Translation Pending]\n\n# 第 15 期 | 终局实战:构建你的私有 AI 助手产品

副标题:综合前 14 期所学,用微调 Gemma + vLLM 后端 + Hermes Agent 前端 + Telegram 网关,搭建一个完整的、私有化部署的 AI 助手产品。

🎯 学习目标

  • 掌握构建一个端到端私有化 AI 助手产品的整体架构设计。
  • 学会利用 vLLM 部署 Gemma 模型,实现高效、低延迟的推理服务。
  • 理解并实践 Agent 模式,为 Gemma 模型添加记忆、工具调用等高级能力。
  • 能够将 AI 助手集成到 Telegram 等主流 IM 平台,提供便捷的用户交互体验。

📖 核心概念讲解

15.1 私有 AI 助手产品:终局架构概览

构建一个私有化部署的 AI 助手产品,意味着我们需要掌控从模型推理到用户交互的每一个环节。本期课程将整合之前学到的 Gemma 模型微调、部署等知识,构建一个完整的系统。其核心优势在于数据隐私、定制化能力和成本控制。

核心组件与架构图:

我们的私有 AI 助手产品将由以下四个主要组件构成,形成一个清晰的分层架构:

  1. 用户界面 (UI): Telegram Bot,作为用户与 AI 助手的交互入口。
  2. AI 助手核心 (Hermes Agent): 一个基于 FastAPI 构建的后端服务,负责处理用户请求、管理对话状态、调用外部工具,并与 LLM 推理服务通信。
  3. LLM 推理服务 (vLLM + Gemma): 使用 vLLM 部署我们微调过的 Gemma 模型,提供高效、并发的文本生成能力。
  4. 数据存储 (Memory/Tools): 用于存储对话历史和管理工具调用。
+-------------------+       +-------------------+       +-------------------+       +-------------------+
|                   |       |                   |       |                   |       |                   |
|   用户 (User)     | <---> |  Telegram Bot     | <---> |  Hermes Agent     | <---> |  vLLM Inference   |
|                   |       |   (Python)        |       |    (FastAPI)      |       |  (Gemma Model)    |
|                   |       |                   |       |                   |       |                   |
+-------------------+       +-------------------+       +-------------------+       +-------------------+
                                   ^     |                   ^    |                          ^
                                   |     |                   |    |                          |
                                   |     +-------------------+    |                          |
                                   |       (HTTP API)             |                          |
                                   |                              |                          |
                                   |                              +--------------------------+
                                   |                                     (HTTP API)
                                   |
                                   +-------------------------------------------------------------+
                                                                 (可选:数据库/外部工具 API)

各组件职责:

  • Telegram Bot: 监听用户消息,将消息转发给 Hermes Agent,并将 Hermes Agent 的回复发送给用户。
  • Hermes Agent:
    • 接收来自 Telegram Bot 的用户消息。
    • 维护每个用户的对话历史(记忆)。
    • 根据预设的 Agent 逻辑和提示词,决定是直接回复用户,还是需要调用外部工具。
    • 调用 vLLM 推理服务生成回复或工具调用指令。
    • 如果需要,执行外部工具(如 Web 搜索、计算器等)。
    • 将最终的回复发送回 Telegram Bot。
  • vLLM Inference (Gemma Model):
    • 加载预训练或微调过的 Gemma 模型。
    • 提供高性能的 LLM 推理 API,响应 Hermes Agent 的文本生成请求。
    • 利用其优化技术(如 PagedAttention、Continuous Batching)提高吞吐量和降低延迟。

15.2 vLLM:高性能 Gemma 推理后端

vLLM 是一个用于 LLM 推理的开源库,以其卓越的性能而闻名。它通过以下关键技术显著提高了 LLM 的吞吐量和降低了延迟:

  • PagedAttention: 一种内存管理算法,灵感来源于操作系统中的分页机制,用于高效管理注意力键值 (KV) 缓存,避免内存碎片化,提高 GPU 利用率。
  • Continuous Batching: 动态地将新的请求添加到正在处理的批次中,而不是等待当前批次完成,从而最大化 GPU 的并行计算能力。
  • 优化过的 CUDA 内核: 针对 LLM 推理任务定制的高性能 CUDA 内核。

使用 vLLM 部署 Gemma 的优势:

  • 高吞吐量: 能够同时处理更多的并发请求。
  • 低延迟: 快速响应每个推理请求。
  • 易用性: 提供兼容 OpenAI API 的接口,方便集成。

部署步骤概览:

  1. 环境准备: 确保你的系统安装了 Docker 和 NVIDIA GPU 驱动 (CUDA)。
  2. 拉取 Gemma 模型: 从 Hugging Face Hub 下载你希望部署的 Gemma 模型权重(例如 google/gemma-2b-itgoogle/gemma-7b-it)。如果你有自己微调的 Gemma 模型,也可以使用。
  3. 启动 vLLM 服务: 使用 Docker 运行 vLLM 容器,并挂载模型权重。

15.3 Hermes Agent:智能决策与业务逻辑核心

Hermes Agent 是我们 AI 助手的“大脑”,负责所有的智能决策和业务逻辑。它将用户输入转化为模型可理解的指令,管理对话历史,并根据需要调用外部工具。

Agent 核心组件:

  • LLM 接口封装: 负责与 vLLM 推理服务进行 HTTP 通信,发送提示词并解析模型输出。
  • 记忆模块 (Memory): 存储与用户的多轮对话历史。在生产环境中,这通常会是一个数据库(如 Redis、PostgreSQL),但在演示中,我们可以使用内存字典。
  • 工具集 (Tools): 定义 AI 助手可以执行的外部功能。每个工具都是一个 Python 函数,例如:
    • web_search(query): 调用搜索引擎 API。
    • calculator(expression): 执行数学计算。
    • database_query(sql): 查询业务数据库。
  • Agent 核心逻辑 (Orchestration): 这是 Agent 的决策中心。它将:
    1. 接收用户消息。
    2. 结合对话历史和可用的工具描述,构建一个完整的提示词 (Prompt)。
    3. 将提示词发送给 vLLM (Gemma)。
    4. 解析 Gemma 的响应。响应可能是一个直接的文本回复,也可能是一个工具调用指令。
    5. 如果检测到工具调用指令,则执行相应的工具,并将工具的执行结果再次反馈给 Gemma,让 Gemma 生成最终的用户友好回复。
    6. 将最终回复返回给用户。

Agent Prompt 设计(以 Gemma 指令微调格式为例):

为了让 Gemma 能够理解并执行工具调用,我们需要精心设计 Agent 的提示词。它通常包含:

  • 系统指令: 告诉 Gemma 它的角色、能力和如何进行工具调用。
  • 工具描述: 详细说明每个工具的名称、功能和参数。
  • 对话历史: 上下文信息,帮助 Gemma 理解当前对话的语境。
  • 当前用户消息: 用户最新的输入。

示例 Prompt 结构 (Gemma Chat Format):

<bos>
<start_of_turn>user
你是一个名为 Hermes 的AI助手,能够使用以下工具:
- web_search(query: str): 用于在互联网上搜索信息。
- calculator(expression: str): 用于执行数学计算。

请根据对话和工具,决定是直接回答,还是调用工具。
如果调用工具,请使用以下格式:
<tool_code>
{{
    "tool_name": "tool_function_name",
    "tool_args": {{
        "arg1": "value1",
        "arg2": "value2"
    }}
}}
</tool_code>

如果直接回答,请直接给出回答。

<end_of_turn>
<start_of_turn>model
好的,我明白了。有什么可以帮助你的吗?
<end_of_turn>
<start_of_turn>user
帮我计算 123 * 456
<end_of_turn>
<start_of_turn>model
<tool