Agent 每轮都调大模型,太贵太慢,成本和延迟怎么优化?
谁在问:三面 / 业务负责人 / 技术负责人;用来看你能不能把技术方案翻译成一笔账
口语化问法
- 你们一次任务多少钱?怎么降下来的?
- Agent 慢在哪?除了换更快的模型还能做什么?
- 如果只能做三件事来降本,你做哪三件?
考察意图
面试官在验三层:
- 有没有成本模型。 会背优化手段的人很多,能写出"成本从哪来"这个式子的人少。没有模型就没有优先级,只能瞎试。
- 知不知道 Agent 成本对步数是超线性的。 这是 Agent 区别于普通 LLM 调用的关键,也是本题的分水岭。
- 敢不敢谈代价。 每一项降本都有对应的风险(路由错、缓存答错话、砍步数掉成功率),只讲收益不讲代价的方案不会被批准上线。
参考答案
60 分答案(及格线)
先看钱花在哪:单次任务成本 ≈ 各步骤的(输入 token × 单价 + 输出 token × 单价)之和。关键在于输入 token 每一轮都要重发完整上下文,而上下文还在随步数增长——所以成本对步数不是线性的,是超线性的。多两步不等于多两步的钱。
按性价比排的四类杠杆:
- 减少轮次:把稳定的多步组合固化成复合工具、独立调用并行化、把可枚举的路径退回 workflow;
- 减少每轮输入:prompt 缓存(稳定前缀)、工具定义按需装载、工具结果裁剪与句柄化、历史折叠;
- 降低单价:分级路由(简单意图走小模型)、编排者用强模型 / 执行者用弱模型、离线场景走批处理;
- 避免浪费:结果缓存、死循环拦截、失败快速降级、幂等避免重复执行。
延迟上另外还有:流式输出先给可见反馈、慢工具异步化、并行发起只读查询。
90 分答案(有生产经验的回答)
补三层。
1. 先统一口径再谈优化。 我不看"每次调用多少 token",看每成功完成一次任务的成本。原因很实际:砍步数能让单次调用变便宜,但如果成功率掉了、用户要重试两次,单位成本反而涨。这个口径也是和业务对话的唯一有效口径——和人工处理一单的成本可以直接比。
2. 每一项优化都要标注代价,这是能不能上线的关键。
| 手段 | 收益 | 代价 / 风险 | 什么时候不该用 |
|---|---|---|---|
| prompt 缓存 | 输入侧大幅降本、TTFT 变快 | 前缀一变就击穿,反而更贵 | 上下文天然高度动态的场景 |
| 分级路由 | 单价直降 | 路由错会掉质量;升级重跑等于双倍成本 | 意图难以判别、错判代价高的场景 |
| 结果/语义缓存 | 重复问法几乎零成本 | 可能省了钱答错话——近似命中返回旧答案 | 时效性强(库存、价格)、个性化、写操作前的查询 |
| 复合工具 / 退回 workflow | 减少轮次,效果最直接 | 灵活性下降,长尾场景覆盖不到 | 路径本来就不可枚举 |
| 收紧 max_steps | 立刻降本 | 复杂请求失败率上升 | 未观察触发率就一刀切 |
3. prompt 缓存的实操要点,最容易被忽视。 想吃到缓存,上下文要按"稳定 → 易变"排列:系统提示、工具定义放最前,会话历史和记忆注入放后面。会击穿缓存的常见动作有:改工具描述(哪怕只改一个字)、系统提示里带时间戳、每轮注入变动的记忆、以及做历史压缩时重写了前缀——所以压缩要"少次大压"而不是频繁小修(见 Q3-13)。
4. 延迟要拆开看,不能只盯模型。 一次任务的时延 = 轮次数 ×(排队 + prefill + 生成)+ 工具执行。上下文变长会让 prefill 变慢,这是"轮次没涨但总时延涨了"的隐藏原因。手段上:并行化独立调用(最快见效且不损质量)、裁剪上下文压 prefill、流式先出可见内容、慢工具异步化、以及投机预取——在模型还在想的时候,把大概率要用的只读查询先发出去(代价是可能白查,只对只读且便宜的工具做)。
5. 2026 的两个杠杆(截至 2026-08):prompt 缓存已经是主要降本手段之一,值得为它专门设计上下文布局;Agent Skills 的渐进式披露让常驻 token 大幅下降——每个 skill 的"广告"约 100 token,只有判断相关时才加载正文(见 Q3-24),比把所有规范塞进系统提示便宜一个量级。
追问链
为什么说 Agent 的成本对步数是超线性的?
期望每轮都要重发完整上下文,而上下文随步数增长(每步追加思考、工具调用、工具结果),第 N 轮的量正比于前 N-1 轮累积,加总接近平方级。实用推论:进入上下文的大结果要乘以它之后还会经历的轮次——3 万 token 的结果后面还跑 10 轮就是 30 万 token 的复利信号说得出「乘以剩余轮次」这个复利视角 → 算过账;只答「步数多了当然贵」→ 没有量化直觉prompt 缓存怎么用才有效?哪些行为会击穿它?
期望核心是前缀稳定:系统提示、工具定义、固定档案放最前,历史/检索结果/记忆放后面。击穿动作:改工具描述或新增工具、系统提示塞当前时间、每轮注入不同记忆、压缩时重写历史前段、第三方 MCP 更新了工具清单。工程上两件事:变更批量化走版本发布;发布后盯缓存命中率,骤降就是有人动了前缀信号提到「第三方工具清单更新也会击穿」和「发布后监控命中率」→ 踩过;只答「把 prompt 写固定一点」→ 不够具体分级路由怎么判断「简单」?路由错了怎么兜?
期望判别按成本从低到高:规则/关键词 → 小模型分类器 → 历史统计(同类请求的历史步数与成功率)。关键是升级机制:小模型过不了质量校验(格式不合、置信度低、无证据)就自动升大模型重跑。升级等于双倍成本,收益得算节省 × 命中率 − 重跑成本 × 错判率;金额、合规不做激进路由信号给出「升级重跑」机制并把它计入收益公式 → 做过路由;只答「用小模型判断简单问题」→ 没考虑错判成本语义缓存什么时候会「省了钱但答错话」?
期望三类高危:① 时效性强,库存、价格、余额缓存 10 分钟就可能错;② 个性化,同一问法不同用户答案不同,命中串号,是隐私事故;③ 写操作前的查询,拿缓存值做扣款依据即资损。隐性风险是「近似命中」:「A 型号有货吗」与「B 型号有货吗」向量很近;对策:短 TTL + 实体精确匹配信号点出「近似命中导致实体串了」和「缓存不能作为写操作依据」→ 吃过亏;只答「缓存可能过期」→ 风险认知不完整CFO 要下季度把 AI 成本砍一半,用户量还在涨,你怎么给方案?
期望总成本与单位成本先分开:量涨时总成本仍升,每单成本能降一半,承诺定「单位成本降 X%」→ 按代价排三档:立刻(收紧max_steps、裁工具输出、稳前缀吃缓存)→ 一季度(高频路径固化成 workflow、Skills 化降常驻 token)→ 结构性(分级自治)→ 附「不做什么」清单:合规护栏与不可逆动作的确认不撤 → 两周一复盘,成功率跌破阈值即回滚信号主动区分总成本与单位成本、给「不做什么」清单、把优化和成功率绑定复盘 → 向上汇报过;只罗列技术手段不谈质量影响 → 方案批不下来
评分要点
- 能写出成本构成,并指出输入侧每轮重发是大头
- 明确 Agent 成本对步数超线性,能解释复利效应
- 四类杠杆分清(减轮次 / 减输入 / 降单价 / 避免浪费)并有优先级
- 每项手段标注代价与不适用场景
- prompt 缓存的前缀布局与击穿行为说得清
- 分级路由要有升级机制并计入错判成本
- 语义缓存的三类高危场景与近似命中风险
- 延迟拆解到轮次 × 单轮 + 工具,知道 prefill 随上下文变慢
- 加分:统一到"每成功任务成本"口径
- 加分:知道 Skills 渐进式披露可大幅降低常驻 token(截至 2026-08)