大模型应用开发工程师-面试刷题系列|每日三题 · 第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),告诉外部系统"我要调用哪个工具,参数是什么"。
- 工作流程 :
- 用户提问。
- LLM 判断是否需要工具。
- LLM 输出
tool_call(JSON格式)。 - 外部系统执行工具/API。
- 工具返回结果。
- 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 的能力提升。
总结:如何回答这类问题?
如果在面试中遇到这些问题,建议采用 "总-分-总" 的结构:
- 定义与背景: 先解释为什么要做这个(例如:LLM无状态,所以需要Memory)。
- 核心方案: 详细阐述实现原理(例如:短期用Sliding Window,长期用RAG)。
- 技术选型: 列出具体的工具栈(例如:用Milvus存向量,Redis做缓存)。
- 进阶与优化: 提到高级策略或当前面临的挑战(例如:提到MCP协议或长链路错误累积),这能体现你的深度。