阿里巴巴 · 淘天

Agent 平台开发一面面经

完整信息

43 条问法 · 31 道题

本篇目录

开场第一句是"我不太关心你业务怎么跑,我想知道你这些东西为什么这么设计"。所以我准备的那套业务背景,一句没用上。

下面是我能记起来的 20 道,按当时的顺序。答案部分是我事后补的,当时说得比这乱。

  1. 自我介绍,一分钟。 我讲了实习做的风控归因 Agent,三级架构、工具 40 多个、日均调用 2 万。

  2. 为什么是三级,主 Agent 直接调工具不行吗。 答:工具太多,40 个 schema 一次塞进上下文,光工具描述就 6k token,模型选错率高。加一层编排,主 Agent 只看 6 个"域",编排层再往下选具体工具。 追问:那你这层编排,本质上是个人工写的路由表吧? 我说是,加了一点模型判断。他说那这层的价值就不在"Agent",在"缩小候选集"。

  3. 编排层单独做成一个 Agent,代价是什么。 答:多一跳,延迟增加 300 到 800 毫秒,还有一层上下文丢失。 追问:那你为什么不用规则路由。 我说规则覆盖不了长尾。他问长尾占比多少,我说大概 15%。他说 15% 用模型、85% 用规则,是不是更划算。我没答上来。

  4. 上下文从主 Agent 传到子 Agent,怎么保证不丢。 答:结构化 slot,主 Agent 填,子 Agent 只读。 追问:slot 谁定义的。 我说人。他说那新场景来了怎么办。

  5. 上下文太长怎么裁。 答:滑动窗口 + 关键信息抽取。追问:抽取本身用模型,模型抽错了呢。我说加一层校验。他问校验错了呢。这一串到此为止。

  6. 工具 schema 你写多细,description 多长。 答:名称、用途、参数、类型、枚举、两个示例,平均 150 字。 他说太长了,模型对超过 80 字的描述注意力就散了,问我信不信。我说没测过。

  7. 两个工具名字很像、语义不同,模型老选错,怎么办。 答:改名字、加反例。追问:改名字会不会影响已有 prompt。我说会。

  8. 工具升级,参数加了一个必填字段,历史会话怎么办。 答:版本号,工具注册表里同时挂 v1 v2。追问:模型怎么知道该用哪个版本。

  9. 工具调用超时,重试几次,重试的时候幂等怎么保证。 答:最多两次,幂等键用 trace_id + 工具名 + 参数哈希。

  10. 参数哈希里有一个时间戳字段,每次都变,幂等键就失效了,怎么办。 答:把易变字段排除。追问:排除了两个不同请求就可能撞键。

  11. 高危操作(退款、改价、发券)怎么拦。 答:三道,模型层禁止、编排层白名单、执行层二次确认。 追问:二次确认是人点还是模型点。我说人。他问一天两万单,人点得过来吗。

  12. 权限模型怎么做的,RBAC 还是 ABAC。 答:RBAC 加数据行级过滤。追问:Agent 以谁的身份调工具,用户还是系统。我说系统。他说那越权怎么防。

  13. Agent 越权有哪几种,你防住了哪几种。 我列了三种:调用未授权工具、拿到越权数据、伪造身份。他说还有一种,Agent 把 A 用户的结论用到 B 用户身上。我说这个真没防。

  14. Prompt injection,用户让 Agent 忽略之前指令,怎么防。 答:输入侧检测、输出侧过滤、系统提示隔离。追问:文档里藏一句注入呢。我说这个防不住。

  15. 子 Agent 返回的结论,你怎么知道是对的。 答:结构化输出 + 规则校验 + 抽样人工。 追问:抽样比例多少,发现问题怎么回溯。我说 5%,回溯靠日志。

  16. 评测集怎么造,多少条,覆盖哪些场景。 答:1200 条,人工写的 400,线上回流 800。追问:回流的数据有偏吗。我说有,都是出过问题的。

  17. 上线怎么灰度,看什么指标。 答:5% 流量,看任务完成率、平均轮次、人工接管率、P99 延迟。

  18. 成本怎么算,一次任务多少钱。 答:平均 4.2 轮,输入 18k token,输出 1.2k,按当时价格算大概 3 毛。追问:毛利呢。我说不知道。

  19. 延迟 8 秒,用户等不了,怎么优化。 答:并发工具调用、流式输出、缓存常见意图。追问:并发调用会不会让工具侧压力翻倍。

  20. 这套东西如果明天让你重写,你会改哪。 我说会砍掉编排层,改成规则 + 小模型分类。他笑了一下,说"那你今天讲了 70 分钟,讲了个该删的东西"。

手撕:工具调度器。给一批工具,每个工具有依赖列表和并发配额,实现一个调度器,按依赖顺序执行,同时不超过总并发上限,返回每个工具的结果。要求处理环检测和单个工具失败时的下游跳过。

我写了 25 分钟,拓扑排序写对了,配额那块用了信号量但没处理"父工具占着配额等子工具"的死锁。他提示了一句"你把等待和执行分开",我改成了两阶段。

这场面完我就知道没戏。答错的其实不多,多数是每一层追问都停在我没想过的地方。平台侧的人不看你功能跑没跑通,他看你每个设计决策的代价算没算过。

出来的时候我在楼下站了会儿。想明白一件事:我做的是"能跑",他问的是"为什么不是另一种"。这两件事之间差着一整套权衡。

—— AIGC小白入门记

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
    手撕:工具调度器。给一批工具,每个工具有依赖列表和并发配额,实现一个调度器,按依赖顺序执行,同时不超过总并发上限,返回每个工具的结果。要求处理环检测和单个工具失败时的下游跳过。

同作者面经

展开其余 13 篇收起其余 13 篇

相关公司