Agent 平台开发一面面经
完整信息
本篇目录
开场第一句是"我不太关心你业务怎么跑,我想知道你这些东西为什么这么设计"。所以我准备的那套业务背景,一句没用上。
下面是我能记起来的 20 道,按当时的顺序。答案部分是我事后补的,当时说得比这乱。
自我介绍,一分钟。 我讲了实习做的风控归因 Agent,三级架构、工具 40 多个、日均调用 2 万。
为什么是三级,主 Agent 直接调工具不行吗。 答:工具太多,40 个 schema 一次塞进上下文,光工具描述就 6k token,模型选错率高。加一层编排,主 Agent 只看 6 个"域",编排层再往下选具体工具。 追问:那你这层编排,本质上是个人工写的路由表吧? 我说是,加了一点模型判断。他说那这层的价值就不在"Agent",在"缩小候选集"。
编排层单独做成一个 Agent,代价是什么。 答:多一跳,延迟增加 300 到 800 毫秒,还有一层上下文丢失。 追问:那你为什么不用规则路由。 我说规则覆盖不了长尾。他问长尾占比多少,我说大概 15%。他说 15% 用模型、85% 用规则,是不是更划算。我没答上来。
上下文从主 Agent 传到子 Agent,怎么保证不丢。 答:结构化 slot,主 Agent 填,子 Agent 只读。 追问:slot 谁定义的。 我说人。他说那新场景来了怎么办。
上下文太长怎么裁。 答:滑动窗口 + 关键信息抽取。追问:抽取本身用模型,模型抽错了呢。我说加一层校验。他问校验错了呢。这一串到此为止。
工具 schema 你写多细,description 多长。 答:名称、用途、参数、类型、枚举、两个示例,平均 150 字。 他说太长了,模型对超过 80 字的描述注意力就散了,问我信不信。我说没测过。
两个工具名字很像、语义不同,模型老选错,怎么办。 答:改名字、加反例。追问:改名字会不会影响已有 prompt。我说会。
工具升级,参数加了一个必填字段,历史会话怎么办。 答:版本号,工具注册表里同时挂 v1 v2。追问:模型怎么知道该用哪个版本。
工具调用超时,重试几次,重试的时候幂等怎么保证。 答:最多两次,幂等键用 trace_id + 工具名 + 参数哈希。
参数哈希里有一个时间戳字段,每次都变,幂等键就失效了,怎么办。 答:把易变字段排除。追问:排除了两个不同请求就可能撞键。
高危操作(退款、改价、发券)怎么拦。 答:三道,模型层禁止、编排层白名单、执行层二次确认。 追问:二次确认是人点还是模型点。我说人。他问一天两万单,人点得过来吗。
权限模型怎么做的,RBAC 还是 ABAC。 答:RBAC 加数据行级过滤。追问:Agent 以谁的身份调工具,用户还是系统。我说系统。他说那越权怎么防。
Agent 越权有哪几种,你防住了哪几种。 我列了三种:调用未授权工具、拿到越权数据、伪造身份。他说还有一种,Agent 把 A 用户的结论用到 B 用户身上。我说这个真没防。
Prompt injection,用户让 Agent 忽略之前指令,怎么防。 答:输入侧检测、输出侧过滤、系统提示隔离。追问:文档里藏一句注入呢。我说这个防不住。
子 Agent 返回的结论,你怎么知道是对的。 答:结构化输出 + 规则校验 + 抽样人工。 追问:抽样比例多少,发现问题怎么回溯。我说 5%,回溯靠日志。
评测集怎么造,多少条,覆盖哪些场景。 答:1200 条,人工写的 400,线上回流 800。追问:回流的数据有偏吗。我说有,都是出过问题的。
上线怎么灰度,看什么指标。 答:5% 流量,看任务完成率、平均轮次、人工接管率、P99 延迟。
成本怎么算,一次任务多少钱。 答:平均 4.2 轮,输入 18k token,输出 1.2k,按当时价格算大概 3 毛。追问:毛利呢。我说不知道。
延迟 8 秒,用户等不了,怎么优化。 答:并发工具调用、流式输出、缓存常见意图。追问:并发调用会不会让工具侧压力翻倍。
这套东西如果明天让你重写,你会改哪。 我说会砍掉编排层,改成规则 + 小模型分类。他笑了一下,说"那你今天讲了 70 分钟,讲了个该删的东西"。
手撕:工具调度器。给一批工具,每个工具有依赖列表和并发配额,实现一个调度器,按依赖顺序执行,同时不超过总并发上限,返回每个工具的结果。要求处理环检测和单个工具失败时的下游跳过。
我写了 25 分钟,拓扑排序写对了,配额那块用了信号量但没处理"父工具占着配额等子工具"的死锁。他提示了一句"你把等待和执行分开",我改成了两阶段。
这场面完我就知道没戏。答错的其实不多,多数是每一层追问都停在我没想过的地方。平台侧的人不看你功能跑没跑通,他看你每个设计决策的代价算没算过。
出来的时候我在楼下站了会儿。想明白一件事:我做的是"能跑",他问的是"为什么不是另一种"。这两件事之间差着一整套权衡。
—— AIGC小白入门记
本篇目录
当前问题0143
- 01
自我介绍,一分钟。
- 02
为什么是三级,主 Agent 直接调工具不行吗。
- 03
那你这层编排,本质上是个人工写的路由表吧?
- 04
编排层单独做成一个 Agent,代价是什么。
- 05
那你为什么不用规则路由。
- 06
他问长尾占比多少
- 07
15% 用模型、85% 用规则,是不是更划算。
- 08
上下文从主 Agent 传到子 Agent,怎么保证不丢。
- 09
slot 谁定义的。
- 10
那新场景来了怎么办。
- 11
上下文太长怎么裁。
- 12
抽取本身用模型,模型抽错了呢。
- 13
他问校验错了呢。
- 14
工具 schema 你写多细,description 多长。
- 15
他说太长了,模型对超过 80 字的描述注意力就散了,问我信不信。
- 16
两个工具名字很像、语义不同,模型老选错,怎么办。
- 17
改名字会不会影响已有 prompt。
- 18
工具升级,参数加了一个必填字段,历史会话怎么办。
- 19
模型怎么知道该用哪个版本。
- 20
工具调用超时,重试几次,重试的时候幂等怎么保证。
- 21
参数哈希里有一个时间戳字段,每次都变,幂等键就失效了,怎么办。
- 22
排除了两个不同请求就可能撞键。
- 23
高危操作(退款、改价、发券)怎么拦。
- 24
二次确认是人点还是模型点。
- 25
一天两万单,人点得过来吗。
- 26
权限模型怎么做的,RBAC 还是 ABAC。
- 27
Agent 以谁的身份调工具,用户还是系统。
- 28
那越权怎么防。
- 29
Agent 越权有哪几种,你防住了哪几种。
- 30
Agent 把 A 用户的结论用到 B 用户身上。
- 31
Prompt injection,用户让 Agent 忽略之前指令,怎么防。
- 32
文档里藏一句注入呢。
- 33
子 Agent 返回的结论,你怎么知道是对的。
- 34
抽样比例多少,发现问题怎么回溯。
- 35
评测集怎么造,多少条,覆盖哪些场景。
- 36
回流的数据有偏吗。
- 37
上线怎么灰度,看什么指标。
- 38
成本怎么算,一次任务多少钱。
- 39
毛利呢。
- 40
延迟 8 秒,用户等不了,怎么优化。
- 41
并发调用会不会让工具侧压力翻倍。
- 42
这套东西如果明天让你重写,你会改哪。
- 43
手撕:工具调度器。给一批工具,每个工具有依赖列表和并发配额,实现一个调度器,按依赖顺序执行,同时不超过总并发上限,返回每个工具的结果。要求处理环检测和单个工具失败时的下游跳过。
