大模型应用开发面试 • 每日三题|Day 002|记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)

0 阅读5分钟

大模型应用开发工程师-面试刷题系列|每日三题 · 第002期

ChatGPT Image 2026年5月12日 08_37_52.png

请仔细学习这张图片面试考点,主要涵盖了Agent开发的三大核心支柱:记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)

以下是对图中考点的详细解析,你可以将其作为复习大纲或面试准备素材:


核心模块一:Memory(记忆系统)—— Q4

1. 核心考点:为什么需要 Memory?

  • 背景: LLM 本身是“无状态”的(Stateless),它不记得上一轮对话,也没有长期经验。
  • 作用: 让 Agent 具备上下文管理能力,实现“持续学习”和“个性化服务”。

2. 记忆的分类与实现(重中之重)

  • 短期记忆 (Short-Term Memory)
    • 作用: 保存当前任务的上下文(如:刚才聊到了什么、现在的状态、工具返回的结果)。
    • 实现方式
      • Conversation Buffer: 保存完整对话历史(成本高,Token消耗大)。
      • Sliding Window: 只保留最近 N 轮对话(简单,但可能丢失早期关键信息)。
      • Summary Memory: 对旧消息做摘要压缩(平衡成本与信息保留)。
  • 长期记忆 (Long-Term Memory)
    • 作用: 保存用户偏好、历史经验、任务结果(跨越会话的记忆)。
    • 实现方式Embedding + 向量数据库检索 (RAG)。这是目前工业界的主流方案。

3. 系统架构与技术栈(加分项)

  • 架构流程: 用户输入 -> Agent (LLM核心) -> Memory Manager (记忆管理器) -> 外部存储与检索层。
  • 外部工具/技术选型
    • 向量数据库 (Vector DB): Milvus, FAISS, Weaviate, Pinecone(用于存长期记忆)。
    • 嵌入模型 (Embedding Model): BGE, E5, OpenAI Embedding(用于把文本转成向量)。
    • 缓存 (Cache): Redis(用于存短期记忆或热点数据,速度快)。
    • 图数据库 (Graph DB): Neo4j(用于存实体关系,如知识图谱)。
    • 对象存储 (Object Storage): S3 / OSS(用于存大文件、历史日志)。

4. 高级策略 (Memory Design Strategies)

  • Memory Retrieval: 动态检索最相关记忆,避免无关信息占用上下文。
  • Memory Compression: 摘要、合并、层级压缩,控制 Token 消耗。
  • Importance Scoring: 判断哪些信息值得长期保存。
  • Reflection Memory: 将错误经验反思写入记忆,持续优化。

核心模块二:Tool Use(工具使用)—— Q5

1. 核心考点:为什么需要 Tool Use?

  • LLM 的局限: 无法联网、无法执行代码、无法访问私有数据、无法实时获取信息(如天气、股价)。
  • 目标: 让 Agent 具备“手脚”,能操作外部世界。

2. Function Calling(函数调用)详解

  • 本质: 让 LLM 学会输出结构化的 JSON 格式(Tool Call),告诉外部系统“我要调用哪个工具,参数是什么”。
  • 工作流程
    1. 用户提问。
    2. LLM 判断是否需要工具。
    3. LLM 输出 tool_call (JSON格式)。
    4. 外部系统执行工具/API。
    5. 工具返回结果。
    6. LLM 结合结果生成最终回答。

3. LLM 如何学会调用工具?(训练方法)

  • SFT (Supervised Fine-Tuning): 使用大量 (问题 -> Tool Call -> 结果 -> 答案) 数据进行监督微调。
  • Instruction Tuning: 在 Prompt 中明确规则,要求输出标准 JSON。
  • RLHF / DPO: 通过人类反馈强化正确的工具选择和参数生成。
  • Context Learning (Few-shot): 给模型看几个例子,让它模仿。

4. 现代 Tool Use 关键技术

  • Tool Routing: 从多个工具中选择最合适的(类似路由器)。
  • Multi-step Planning: 支持多轮、多工具串联调用(复杂任务拆解)。
  • Parallel Tool Calling: 多个工具并行执行,提高效率。
  • MCP (Model Context Protocol): 统一工具协议,降低接入成本(这是目前的热点)。

5. 面临的挑战

  • 幻觉调用: 编造不存在的工具或参数。
  • 参数错误: JSON 格式错误或参数不匹配。
  • 长链路错误累积: 步骤越多,出错概率越大。

核心模块三:Agent Fine-tuning(Agent 微调)—— Q6

1. 核心考点:为什么要微调 Agent?

  • 基础 LLM 虽然通用能力强,但在 Tool Use, Planning, ReAct, Reflection 等 Agent 特定能力上表现不佳,需要通过微调增强。

2. 数据集如何收集?(数据工程能力)

  • 人工标注 (高质量): 人工编写 Thought -> Action -> Observation 轨迹(成本高,质量高)。
  • Self-Instruct (主流): 使用 GPT-4 强模型自动生成问题 + 工具调用轨迹。
  • Agent Rollout: 让已有 Agent 在环境中执行任务,记录完整轨迹。
  • Tool Simulation: 构造虚拟工具/API 环境,低成本生成大量训练数据。
  • 真实用户日志: 从生产环境中脱敏收集真实用户与 Agent 的交互。

3. 微调方法

  • SFT (监督微调): 最基础,模仿人类行为。
  • DPO / PPO: 偏好优化,让模型更喜欢正确的工具调用路径。
  • RL (强化学习): 在环境中获得奖励,优化长期任务表现。

4. 工业实践流程

  • 问题生成 (GPT-4等) -> 工具执行 -> 人工轨迹 -> 人工筛选/过滤 -> 格式化/标准化 -> 训练集构建。

5. 面临的挑战

  • Thought 难以标注: 思维链数据很难获取。
  • 工具环境不稳定: 外部 API 经常变,导致训练数据失效。
  • 评估标准不统一: 很难量化 Agent 的能力提升。

总结:如何回答这类问题?

如果在面试中遇到这些问题,建议采用 “总-分-总” 的结构:

  1. 定义与背景: 先解释为什么要做这个(例如:LLM无状态,所以需要Memory)。
  2. 核心方案: 详细阐述实现原理(例如:短期用Sliding Window,长期用RAG)。
  3. 技术选型: 列出具体的工具栈(例如:用Milvus存向量,Redis做缓存)。
  4. 进阶与优化: 提到高级策略或当前面临的挑战(例如:提到MCP协议或长链路错误累积),这能体现你的深度。