跳到内容
AI

AI API 月度成本复盘:从账单数字找到真正失控的功能

AI

AI Cost Calculator

3 分钟阅读

AI API 月度成本复盘不是看一眼总账单有没有超预算,而是把账单拆回到功能、模型、Token、重试、缓存和 Agent 工具调用这些可行动的变量。只有找到“为什么变贵”,下个月的预算、路由和告警才有调整依据。

如果你已经建立了 AI 成本治理 PlaybookAI API 成本预算表AI API 成本告警,月度复盘就是把这些机制闭环起来:预算负责预测,告警负责发现异常,复盘负责修正假设。

月度复盘要回答的 5 个问题

一次有效的 AI API 成本复盘,至少要回答五个问题:

  1. 本月真实成本和预算差多少?
  2. 偏差来自流量增长、输出变长、模型升级、重试、缓存失效,还是 Agent 多轮调用?
  3. 哪些功能的单次成功成本最高?
  4. 哪些成本增长是业务需要,哪些是浪费?
  5. 下个月要改预算、路由、上限、告警还是产品交互?

不要只写“本月成本上涨 20%”。这个结论没有用。你需要把上涨拆成可修改的原因。

先准备这些数据字段

复盘前,先确认日志或账单导出里能拿到这些字段。没有全部字段也可以开始,但缺失字段要记录为治理改进项。

字段用途如果缺失会怎样
feature按功能归因成本只能看到总账单,无法找到 owner
model对比模型路由成本不知道是否高价模型使用过多
input_tokens判断上下文是否膨胀无法解释输入成本增长
output_tokens判断回答是否过长无法定位输出成本主因
retry_count识别失败成本会把失败重试当成正常流量
cache_hit_tokens评估缓存命中率无法确认 prompt caching 是否有效
tool_call_count识别 Agent 放大成本看不到多轮工具循环
status区分成功、失败、fallback无法计算单次成功成本
estimated_cost做请求级排序只能看供应商汇总账单

如果你还没有请求级日志,先参考 如何核对 AI API 账单和模型价格 做最小账单核对,再逐步补字段。

第一步:总账单只做入口,不做结论

总账单适合回答“有没有异常”,不适合回答“为什么异常”。建议先做一张总览表:

指标本月上月变化是否需要拆解
总成本---
总请求量---
平均单次请求成本---
成功任务成本---
失败/重试成本占比---
Agent 任务成本占比---

这里不要急着下判断。比如总成本上涨,可能是用户增长,也可能是一次 prompt 改动让输出翻倍。只有拆到功能和请求级别,才能知道该优化哪里。

第二步:按功能拆成本

功能级复盘比模型级复盘更重要。业务团队关心的是“客服问答、文档总结、代码审查、Agent 自动化分别花了多少”,而不是单纯“Claude 花了多少、OpenAI 花了多少”。

建议复盘表这样设计:

功能成本占比请求占比单次成功成本环比变化初步判断
support_answer----看输出长度
rag_faq----看检索 chunk
code_review----看模型路由
batch_classify----看批处理和重跑
agent_workflow----看工具调用轮数

如果某个功能的成本占比远高于请求占比,优先排查这个功能。它可能输入长、输出长、重试多、模型贵,或者一次用户操作背后触发多次调用。

第三步:拆 Token,而不是只看请求量

AI API 成本经常不是请求量涨了,而是每次请求变重了。

重点看四组指标:

指标说明常见原因
平均输入 token每次请求带入多少上下文历史消息变长、RAG chunk 增多、工具 schema 变大
P95 输入 token高成本请求的输入上限少数长文档或异常用户拉高成本
平均输出 token模型平均生成长度prompt 要求变成长报告、JSON 太冗余
P95 输出 token长输出尾部风险失败重试、无限续写、报告模板过长

如果平均值正常但 P95 很高,说明不是全局问题,而是少数请求失控。此时不要盲目降模型,先加输入截断、输出上限或高成本请求告警。

第四步:检查重试和失败成本

重试成本很容易被隐藏,因为账单只看调用,不管调用是否成功。

复盘时至少统计:

重试成本占比 = 重试请求成本 / 总成本
失败成本占比 = 失败请求成本 / 总成本
成功任务成本 = 总成本 / 成功任务数

如果成功任务成本上涨,但请求量没有明显增长,常见原因是:

  • JSON 输出格式不稳定,导致自动重试;
  • 工具参数错误,Agent 重复调用;
  • 上游 timeout 后重跑整批任务;
  • fallback 到更贵模型比例升高;
  • 用户前端重复点击触发多次生成。

这类问题不应该只靠“换便宜模型”解决。更有效的是修错误处理、限制重试、做幂等键,并把失败类型写进复盘表。

第五步:复盘缓存命中率

提示词缓存、上下文缓存或供应商缓存机制只有在真实命中时才省钱。月度复盘要把缓存假设和实际命中率对齐。

缓存指标要看什么
cache_hit_rate本月真实命中率是否接近预算假设
cacheable_tokens哪些 token 理论上可缓存
dynamic_prefix_rate固定前缀里是否混入动态字段
cache_savings_estimate实际节省是否足以支撑实现复杂度

如果缓存命中率低,不要只怪模型供应商。先检查 system prompt、工具说明、日期、用户 ID、随机排序的上下文是否破坏了稳定前缀。可以结合 Prompt Caching 预算检查清单 调整。

第六步:单独复盘 Agent 和批处理

Agent 和批处理不能和普通聊天混在一起复盘。它们的成本结构不同。

Agent 复盘字段

字段为什么要看
steps_per_task一次任务用了多少模型轮次
tool_calls_per_task工具调用是否过多
repeated_tool_calls是否出现循环或重复读取
human_confirmation_rate高风险动作是否有人工确认
cost_per_successful_task比单次请求成本更真实

如果 Agent 成本变高,优先看停止条件和工具调用上限。更多规划方法可以参考 Agent 工具调用成本规划

批处理复盘字段

字段为什么要看
batch_size批量大小是否导致超长上下文
rerun_count是否因为少量失败重跑整批
idempotency_key是否能避免重复处理
low_value_model_ratio低价值任务是否用了高价模型

批处理成本失控时,通常不是单次调用太贵,而是失败重跑和并发放大。

第七步:把复盘结论转成下月动作

复盘报告不要只写现象,要写动作。建议每条结论都落到一个治理项:

发现下月动作Owner
RAG 输入 P95 过高限制 top_k 和单 chunk 长度产品/工程
输出 token 占比升高为报告类功能设置默认短版产品
重试率超过 10%修 JSON schema 和错误分类工程
Agent 工具调用过多设置 max_steps 和重复工具告警工程
缓存命中率低于预算稳定 system prompt 前缀工程
某功能持续亏损调整额度、定价或关闭免费入口业务

如果动作没有 owner 和验证方式,下个月复盘还会看到同样的问题。

月度 AI 成本复盘模板

可以复制下面的模板:

AI API 月度成本复盘

1. 总览
- 本月总成本:
- 相比预算:
- 相比上月:
- 是否触发告警:

2. 功能拆解
- 成本最高功能:
- 增长最快功能:
- 单次成功成本最高功能:

3. 成本驱动因素
- 请求量变化:
- 输入 token 变化:
- 输出 token 变化:
- 重试/失败成本:
- 缓存命中率:
- Agent / 批处理成本:

4. 结论
- 合理增长:
- 浪费或异常:
- 数据缺口:

5. 下月动作
- 预算调整:
- 路由调整:
- 上限/告警调整:
- 产品或交互调整:
- Owner 和验证方式:

常见错误

只按供应商看账单

供应商维度适合财务对账,但不适合产品治理。你需要知道哪个功能在花钱,而不是只知道哪个模型厂商收费。

把用户增长和成本浪费混在一起

成本上涨不一定是坏事。如果成功任务增长更快、单次成功成本下降,说明效率可能更好。复盘要看单位经济,而不是只看总额。

忽略失败请求

失败请求也会计费。任何复盘都应该把失败、重试和 fallback 单独列出来。

复盘后不更新预算表

预算表不是一次性文档。每次月度复盘后,都应该更新请求量、token、重试率、缓存命中率和峰值系数假设。

FAQ

AI API 成本复盘多久做一次?

线上产品建议每月做一次完整复盘,每周做一次轻量检查。刚上线或成本波动大的功能,可以按周复盘。

没有请求级日志还能复盘吗?

可以先从供应商账单、功能调用量和应用日志开始,但要把“缺少请求级 estimated_cost”列为治理改进项。没有请求级日志,很多成本原因只能猜。

成本超预算时第一步是降模型吗?

不一定。先判断原因。如果是重试、长输出、RAG chunk 或 Agent 循环导致,降模型可能只会降低质量,不能解决根因。

总结

AI API 月度成本复盘的目标不是责备某个模型太贵,而是把账单数字翻译成可执行的工程和产品动作。按功能拆成本,按 token、重试、缓存和 Agent 调用找原因,再把结论更新到预算、告警和上线评审里,AI 成本治理才会越做越稳。

推荐阅读