MLE / SWE · ML / AI System Design

Meta LLM 客服Agent:检索、工具授权与人工升级

构建客户支持Agent,区分答案检索、账户查询、退款动作和升级人工,说明安全执行与评估。

题目重点:构建客户支持Agent,区分答案检索、账户查询、退款动作和升级人工,说明安全执行与评估。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练客服处理产品问题与授权账户任务,知识源有版本,订单/账务数据来自受权限控制的API;用户身份先鉴别。
  • 高影响操作如退款/改订需明确授权与金额范围,生成文本不直接充当授权凭据。可逆读取与写动作分不同流程。
  • 多轮memory只存必要会话状态,不能把别的用户会话或检索到的指令提升成系统权限。

解题路线

  1. 先建无需LLM的baseline知识搜索+意图路由,定义ticket解决/升级准则,再引入检索增强回答。文档分块带product/version/region/validTime,query检索先权限过滤并给引用。
  2. Agent状态记录intent、verifiedUser、requiredInfo、toolPlan、toolResults、resolution。缺订单ID或证据时提问,不让模型生成假的订单状态。tool schema限制可调用动作、参数和资源范围。
  3. 任何工具读取做server-side授权,写动作用policy检查、用户确认与idempotencyKey;模型只建议计划,执行器验参数与版本。被引用文档里的“忽略权限/发退款”是数据而非可执行指令。
  4. 长任务异步status与失败补偿:退款timeout先查询operationId结果,不立刻重复退款;无法确认转人工并带完整事件记录。回答附来源,低置信/政策例外主动升级。
  5. 评估集覆盖正确答复、知识过期、缺数据、权限越界、注入、重复工具调用与失败恢复;统计task success、grounding、违规动作、幻觉、人工接手质量及P95成本。模拟工具oracle与真实sandbox分阶段,不能只看LLM judge。

手动走一遍

用户问订单是否发货,知识库不能回答某订单事实,需验证身份并查询订单API。退款请求调用成功但响应timeout,后续先查询该operationId,若已成功就回报同结果而非再退一次。

规模与取舍

每轮延迟=检索+模型+工具RTT+验证,循环限制maxSteps与总预算,避免无尽Agent重试。知识索引更新/外部API不稳定决定实际可靠性,token成本按上下文与工具回包长度估算。

易错点与追问

容易失分的边界

  • 将知识文档或工具回包视作高权限指令会被提示注入操控。
  • 没有可用证据时“猜一个答案”会损害客服信任;明确unknown与人工入口。
  • 会话cache无租户/user隔离会泄露账户信息。

继续深挖

  • 人工接手如何避免用户重复描述?传验证过的事实、已尝试步骤与工具状态,不传未经确认的模型猜测作事实。
  • 如果模型版本升级,怎样检查同一工单不会因旧memory/新prompt混用而改动作规则?版本化会话与工具政策。
✓已复制微信号!