llm-cost-audit

Category: Data Risk: Low risk niuwoai/skills CC-BY-4.0

name: llm-cost-audit
description: 大模型 API 调用成本审计与降本。当账单突然涨、想知道钱花在哪个模型哪个接口、要做用量预算、要设配额和熔断、或者被问「能不能便宜一半」时使用。触发词:token 成本、大模型账单、API 费用、降本、烧钱、用量分析、成本核算、配额、限额、熔断、缓存命中率、模型选型省钱。不负责自建模型的 GPU 成本核算,也不负责具体的 prompt 改写(走 prompt-token-diet)。

大模型调用成本审计

大模型账单失控,八成不是模型贵,是调用姿势不对。审计按「先看清、再归因、后动手」三步走,跳过前两步的降本都是瞎猜。

一、先把账算清楚

成本 = Σ(输入 token × 输入单价 + 输出 token × 输出单价),再叠加几个容易漏的:

  • 缓存写入通常按输入价的 1.25 倍计,缓存命中按 0.1 倍计。写多读少的场景,缓存是净亏。
  • 推理型模型的思考 token 按输出价计费,且通常不返回给你,只在用量字段里体现。这是账单最常见的黑洞。
  • 重试。超时重试、失败重试、流式中断重连,每次都全额计费。
  • 多模态。图片按分辨率折算 token,一张高清图可能顶几千字。

审计的最小数据集,从网关或日志里拉出来:

时间, 业务标识, 模型, 输入token, 输出token, 缓存命中token, 缓存写入token, 是否重试, 耗时, 状态

没有「业务标识」这一列,后面的归因全部做不了。如果现在没有,第一件事是给每次调用打上来源标签,别急着降本。

二、五张表定位问题

拉到数据后,按顺序出五张聚合表。每张表都只回答一个问题。

表 1:按模型分组的花费占比。 找出吃掉 80% 成本的那一两个模型。

表 2:按业务标识分组的花费占比。 通常会发现一个没人记得的后台任务在闷声烧钱。

表 3:输入输出 token 比例。

  • 输入远大于输出(比如 50:1),说明每次都在塞大量上下文,是缓存和检索裁剪的目标。
  • 输出远大于输入,检查是不是没设 max_tokens,或者模型在无限展开。

表 4:缓存命中率。 命中率低于 40% 说明前缀不稳定,缓存白写。命中率为 0 说明根本没开或者前缀里混进了时间戳、随机 ID 这类每次都变的东西。

表 5:重试率和失败率。 重试率超过 5% 就要查上游稳定性,这部分钱纯属打水漂。

三、按优先级动手

改动按「省得多、改得少、风险低」排序。下面这个顺序适用于绝大多数应用。

第一档:不改逻辑就能省

  1. 打开提示词缓存并稳定前缀。 把系统提示、工具定义、少样本示例全部放在最前面且逐字节固定,动态内容放最后。这一步经常能砍掉 50% 以上的输入成本,且不改任何业务逻辑。
  2. 设 max_tokens。 按实际需要设,不要留默认值。
  3. 关掉不需要的思考。 分类、抽取、格式转换这类任务不需要推理型模型的深度思考,把思考预算调到最低档或换非推理模型。
  4. 消灭重试风暴。 加指数退避,给重试次数封顶,超时时间设合理值。

第二档:小改逻辑

  1. 分级路由。 简单任务走小模型,复杂任务走大模型。判据用一个便宜的分类器或者规则,别用大模型去判断该不该用大模型。典型收益是总成本降三到六成。
  2. 裁剪上下文。 检索召回的文档,从 20 篇降到 5 篇通常不掉准确率。历史对话做滚动摘要而不是全量拼接。
  3. 批处理。 离线任务走批量接口,通常有折扣,代价是延迟。
  4. 结果缓存。 相同输入直接返回历史结果。做归一化后再算哈希,别用原始字符串。

第三档:需要评测支撑

  1. 换模型。 必须先有评测集,否则省下的钱会以质量事故的形式还回来。参见 llm-eval-set。
  2. 蒸馏或微调小模型接管高频固定任务。

四、把降本固化成护栏

省下来的钱很容易涨回去。上线三道护栏:

  • 配额:按业务标识设日/月上限,超了拒绝而不是继续跑。
  • 熔断:单位时间花费超阈值自动降级到小模型或直接报错。
  • 告警:日花费环比涨 50% 立刻通知,别等月底看账单。
  • 单次调用上限:单请求 token 超过阈值直接拒绝,防止一个畸形输入烧掉一天预算。

配额和熔断要在网关层做,不要指望每个业务方自觉。

五、常见的钱坑

  • 日志里打了完整 prompt 和 response,存储和传输成本被忽略,且有泄密风险。
  • 健康检查用真实模型调用,一分钟一次,一年就是五十多万次。用最小 token 的固定请求,或者干脆查网关自身状态。
  • 开发环境连生产模型,且没有配额。
  • 流式响应客户端提前断开但服务端没取消,token 照样生成照样计费。
  • 少样本示例塞了二十个,其中十五个对效果没有贡献。做消融实验删掉。
  • 每次请求重新上传同一份长文档,没走文件或缓存机制。

六、交付物

审计做完给出四样东西,缺一样都算没做完:

  1. 成本构成表:模型 × 业务 的二维花费矩阵,标出前三大项。
  2. 优化清单:每条写明预计节省比例、改动范围、风险、验证方式。
  3. 护栏配置:配额值、熔断阈值、告警规则,写成可直接落地的配置。
  4. 复核时间点:一般是两周后回看,确认省下来了且质量没掉。