Agent开发面试最容易被问挂的3个问题后续
1、工具调用失败或 LLM 幻觉,怎么办?
"我会把这个问题拆成两个子问题,因为工具失败和 LLM 幻觉是完全不同的故障模式,解法不能混用。
工具失败有明确信号——异常、超时、错误码——我的处理是三层:先用指数退避重试,重试前让 LLM 反思上次参数哪里出了问题,相当于让模型自我纠错;重试耗尽后降级到备用逻辑,比如换一个工具或走规则引擎;如果涉及写操作,每次执行前必须记 Checkpoint,失败后能回滚到上一个干净状态,且写操作要做幂等,防止重放。
LLM 幻觉更难检测,因为没有报错。我的做法是:对关键推理结果做 Self-consistency 验证,同一问题采样三次,少数服从多数;对外部事实型问题,用第二个模型做交叉 Fact-check;对于高风险操作,强制加 Human-in-the-loop 确认节点,不管模型多确定都要过人工。
生产上我会为每个 Agent 实例暴露健康度指标:工具失败率、幻觉拦截率、平均重试次数,超阈值自动熔断并告警。这样从 demo 到上线,容错体系才是完整的。"
2、Agent 的 Memory 怎么设计?
"我把 Agent Memory 设计成三层,对应人类记忆的三种形式。
第一层是 Working Memory,就是当前 LLM 的 Context Window,存当前任务的执行状态和工具调用历史。它的核心问题是容量管理——超出 window 时我不会直接截断,而是对老的消息做摘要压缩,保留语义但压缩 token。
第二层是 Episodic Memory,存历史任务轨迹和用户偏好,用向量数据库按相似度检索。写入是任务结束后异步进行,不阻塞主链路。这层需要遗忘机制——我用一个重要性评分:访问频率乘以时效性衰减再乘以任务相关度,低分记录定期压缩,避免向量库无限膨胀。
第三层是 Semantic Memory,存领域知识。这里有一个选型决策点:非结构化知识用向量检索,强结构化的多跳实体关系用 Knowledge Graph——向量库做多跳关系推理效率很差,这是实际踩过的坑。
多 Agent 场景还要解决共享 Memory 的一致性问题:写操作加版本号做乐观锁,读操作做版本校验,防止多个 Agent 并发写入产生脏数据。"
"我会把这个问题拆成两个子问题,因为工具失败和 LLM 幻觉是完全不同的故障模式,解法不能混用。
工具失败有明确信号——异常、超时、错误码——我的处理是三层:先用指数退避重试,重试前让 LLM 反思上次参数哪里出了问题,相当于让模型自我纠错;重试耗尽后降级到备用逻辑,比如换一个工具或走规则引擎;如果涉及写操作,每次执行前必须记 Checkpoint,失败后能回滚到上一个干净状态,且写操作要做幂等,防止重放。
LLM 幻觉更难检测,因为没有报错。我的做法是:对关键推理结果做 Self-consistency 验证,同一问题采样三次,少数服从多数;对外部事实型问题,用第二个模型做交叉 Fact-check;对于高风险操作,强制加 Human-in-the-loop 确认节点,不管模型多确定都要过人工。
生产上我会为每个 Agent 实例暴露健康度指标:工具失败率、幻觉拦截率、平均重试次数,超阈值自动熔断并告警。这样从 demo 到上线,容错体系才是完整的。"
2、Agent 的 Memory 怎么设计?
"我把 Agent Memory 设计成三层,对应人类记忆的三种形式。
第一层是 Working Memory,就是当前 LLM 的 Context Window,存当前任务的执行状态和工具调用历史。它的核心问题是容量管理——超出 window 时我不会直接截断,而是对老的消息做摘要压缩,保留语义但压缩 token。
第二层是 Episodic Memory,存历史任务轨迹和用户偏好,用向量数据库按相似度检索。写入是任务结束后异步进行,不阻塞主链路。这层需要遗忘机制——我用一个重要性评分:访问频率乘以时效性衰减再乘以任务相关度,低分记录定期压缩,避免向量库无限膨胀。
第三层是 Semantic Memory,存领域知识。这里有一个选型决策点:非结构化知识用向量检索,强结构化的多跳实体关系用 Knowledge Graph——向量库做多跳关系推理效率很差,这是实际踩过的坑。
多 Agent 场景还要解决共享 Memory 的一致性问题:写操作加版本号做乐观锁,读操作做版本校验,防止多个 Agent 并发写入产生脏数据。"
全部评论
相关推荐
查看23道真题和解析