首页/AI/AI 应用速查/usage 用量对账:成本监控第一步

usage 用量对账:成本监控第一步

每次响应都带 usage 字段(输入/输出/缓存明细 token 数),把它按用户、功能、模型维度落库聚合,才能回答“钱花在哪了”——没有用量数据一切降本都是盲调。

AI 应用速查AI更新于 2026-10-13

usage 用量对账是什么

每次响应的 usage 字段都带着输入、输出与缓存明细的 token 数,按用户、功能、模型、渠道等维度落库聚合,才能回答「钱到底花在哪了」。没有用量数据,一切降本都是盲调:既不知道哪个功能在增长,也无法验证优化是否奏效。落地要点有三个:单价放配置表,便于厂商调价后按当时价格重算历史账单;缓存命中部分单独统计,用于核算缓存收益;按日看输出的中位数与 P95,成本长尾通常藏在分布尾部而不是平均值里。

基本信息

prompt_tokens输入总数,用于上下文规模监控
completion_tokens输出总数,用于输出长度治理
cached_tokens缓存命中部分,用于核算缓存收益
total_tokens合计,用于配额与预算控制
聚合维度用户、功能、模型、渠道、租户
单价管理放配置表,调价后可重算历史账单

典型使用场景

  • 成本归因:找出本月账单增长来自哪个功能或租户
  • 配额管理:按用户或部门统计用量并设限额
  • 优化验证:对比优化前后的同口径用量变化
  • 缓存收益核算:确认折扣是否真的落到账单上
  • 预算预测:按近期用量趋势推算下月支出

用量落库与聚合

用量落库与聚合
for resp in stream_responses:
    log_usage(
        user_id=resp.user,
        feature=resp.route,          # 功能维度的标签
        model=resp.model,
        channel=resp.channel,
        prompt=resp.usage.prompt_tokens,
        completion=resp.usage.completion_tokens,
        cached=resp.usage.get("cached_tokens", 0),
    )
# 按日聚合:成本 = 各类 token 数 × 当日单价(单价从配置读)
# 输出分布看 P50 与 P95,只盯平均值会漏掉成本长尾

常见 usage 字段读法

字段含义用途
prompt_tokens输入 token 总数上下文规模与压缩收益监控
completion_tokens输出 token 总数输出长度治理与上限校准
cached_tokens命中缓存的输入部分缓存折扣核算
total_tokens本次调用合计配额与预算对账
单价放配置表而不是写在代码里:厂商调价时只需改数据,历史账单还能按当时价格重算,避免新旧口径混算。
聚合维度要在埋点时一次设计好:事后想按租户或渠道拆分,却发现日志里根本没有该字段,只能重新埋点再等数据积累。

易错点

  • 只统计调用次数不统计 token:成本模型与真实账单脱节,优化方向全靠猜
  • 单价硬编码在代码里:调价后新旧数据混算,账单解释不清
  • 只看总量不看分布:P95 才反映成本长尾,平均值掩盖异常调用
  • 缓存命中量不做单独统计:以为吃了折扣,实际命中率接近零
  • 埋点维度缺失:想按租户或功能拆分时无数据可用,只能重新采集

数据来源与参考

  • OpenAI/Anthropic 响应 usage 字段文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌