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

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

请仔细学习这张图片面试考点,主要涵盖了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协议或长链路错误累积),这能体现你的深度。
相关推荐
神奇小汤圆1 小时前
深入源码:Hermes Agent 如何实现 "Self-Improving"
后端
Carl_奕然1 小时前
【智能体】Agent的四种设计模式之:Plan-and-Execute
人工智能·python·设计模式
纤纡.1 小时前
从课堂视频转写结构化数据:Python + 讯飞 + 通义千问全流程实战
python·阿里云·语言模型·讯飞
YuanDaima20481 小时前
动态规划基础原理与题目说明
数据结构·人工智能·python·算法·动态规划·手撕代码
悟空码字1 小时前
别再让大模型吃灰!Ollama 从安装到生产级调优,一篇搞定
llm·aigc·ollama
Metaphor6921 小时前
使用 Python 加密或解密 Word 文档
python·安全·word
铭毅天下1 小时前
当搜索引擎遇上 Rust——深度解读下一代实时搜索引擎 INFINI Pizza
开发语言·后端·搜索引擎·rust
用户298698530141 小时前
Java 后端处理 Word 修订:批量接受与拒绝的自动化方案
java·后端
IT策士1 小时前
Python 中间件系列:文件存储minio操作操
开发语言·python·中间件