AI API 成本事故通常不是“一夜之间发生”的。账单突然暴涨的背后,往往早就有信号:重试率升高、上下文越来越长、Agent 工具调用变多、批处理任务重复执行,或者某次模型切换没有同步预算上限。
真正的问题不是账单涨了,而是团队不知道为什么涨、谁触发了、怎么止血、怎样避免下次再发生。
什么算 AI API 成本事故
不是所有成本上涨都是事故。产品增长、用户变多、模型质量升级,都可能让账单增加。成本事故通常有三个特征:
| 信号 | 判断方式 |
|---|---|
| 增长不可解释 | 没有发布、活动或用户增长支撑 |
| 单位成本异常 | 单次成功任务成本明显升高 |
| 影响预算决策 | 已经超过日预算、月预算或客户毛利边界 |
| 无法快速归因 | 不知道是哪个功能、用户、模型或任务导致 |
如果只是总成本高,但每个功能的请求量和成功任务成本都符合预期,那是预算问题;如果成本突然高且无法解释,那就是事故。
第一步:先止血,不要先复盘
账单正在失控时,第一目标是止血。
可以按优先级执行:
- 暂停低价值批处理任务;
- 降级非核心功能模型;
- 暂停 Agent 自动执行;
- 限制最大输出 token;
- 限制重试次数;
- 关闭长上下文模式;
- 给免费用户或内部测试加临时额度。
不要一边事故继续发生,一边慢慢查日志。先把增长曲线压住,再做复盘。
第二步:还原事故时间线
复盘不要从“谁写错了代码”开始,先还原时间线。
| 时间 | 事件 | 证据 |
|---|---|---|
| T-7 天 | prompt 变长 | git diff / prompt 版本 |
| T-5 天 | 新增 RAG 检索片段 | release note |
| T-3 天 | Agent 加入工具调用 | 配置变更 |
| T-1 天 | 重试率升高 | 请求日志 |
| T | 账单告警 | 供应商账单 / 内部 dashboard |
如果没有时间线,就容易把真正根因归咎到最后一个改动上。
第三步:做成本归因表
至少按这些维度拆:
| 维度 | 问题 |
|---|---|
| feature | 哪个功能变贵? |
| model | 哪个模型消耗最多? |
| user_tier | 免费用户还是付费用户? |
| input_tokens | 输入是否增长? |
| output_tokens | 输出是否增长? |
| retry_count | 是否重复请求? |
| tool_calls | Agent 是否循环调用工具? |
| cache_hit | 缓存是否失效? |
| status | 成功还是失败请求在花钱? |
成本事故复盘的关键,不是找到“贵模型”,而是找到“贵的成功/失败路径”。
常见根因 1:上下文慢慢变长
最隐蔽的事故来自上下文增长。
常见原因:
- 聊天历史没有截断;
- RAG chunk 数越来越多;
- system prompt 越调越长;
- 工具返回完整 JSON,没有摘要;
- 每次请求都带上无关上下文。
排查方式:看事故前后平均 input tokens 和 P90 input tokens。
常见根因 2:输出没有上限
写作、报告、代码生成、总结类功能最容易输出过长。
止血方式:
- 设置 max output tokens;
- 默认给短回答;
- 长报告需要二次确认;
- 输出格式用表格或 JSON schema 收窄;
- 对重复生成加冷却时间。
常见根因 3:重试率失控
失败重试是最直接的成本放大器。
真实成本 = 正常成本 × (1 + 重试率)
如果重试率从 5% 变成 40%,账单会明显上升,而且用户体验也会下降。
需要检查:
- 是上游 timeout;
- 还是 JSON 解析失败;
- 还是工具调用参数错;
- 还是应用层没有幂等控制。
常见根因 4:Agent 工具循环
Agent 事故最常见的形态是:模型不断观察、调用工具、再观察、再调用。
必须限制:
- 最大轮数;
- 最大工具调用次数;
- 单任务预算;
- 写操作人工确认;
- 工具失败后的重试次数。
如果 Agent 没有停止条件,它就不是自动化,而是预算风险。
常见根因 5:批处理重复执行
后台任务也常导致成本事故。
例如:
- cron 重复触发;
- 队列消息没有 ack;
- 失败重跑整批;
- 同一文件被多次总结;
- 多个 worker 处理同一任务。
这种事故不一定来自模型,而是任务系统没做幂等。
成本事故复盘模板
可以直接复制:
## 事故摘要
- 时间:
- 影响范围:
- 预计额外成本:
- 当前状态:已止血 / 仍在增长
## 时间线
- T-7:
- T-3:
- T:
## 成本归因
- 主要功能:
- 主要模型:
- 输入/输出 token 变化:
- 重试率:
- Agent 工具调用:
## 根因
- 直接原因:
- 系统性原因:
## 已采取措施
- 暂停:
- 降级:
- 限额:
## 防复发
- 日预算告警:
- 单请求成本上限:
- 重试上限:
- 上线评审清单:
预防清单
- 每个 AI 功能有功能级预算;
- 每次请求记录输入/输出 token;
- 所有重试有上限;
- Agent 有最大轮数;
- 批处理任务有幂等键;
- 日预算和周预算有告警;
- prompt 变更需要记录版本;
- 模型切换要重新估算成本;
- 上线后一周必须复盘。
相关指南
FAQ
成本暴涨后第一步是查账单吗?
不是。第一步是止血:暂停低价值任务、限制输出、降低重试、暂停 Agent 自动执行。账单复盘放在止血之后。
成本事故一定是模型太贵吗?
不一定。更常见的是输入变长、输出变长、重试率上升、缓存失效、Agent 循环或批处理重复执行。
没有完整日志还能复盘吗?
可以,但会很慢。至少从供应商账单、应用访问日志、发布记录、队列任务和 prompt 版本里还原时间线。之后必须补请求级成本日志。
总结
AI API 成本事故不是单纯的财务问题,而是工程可观测性问题。只要团队能快速止血、还原时间线、归因到功能、限制高风险路径,并把复盘结果写进上线清单,下一次账单异常就不会再变成盲查。