把每月四位数的大模型账单砍到三位数
去年有个项目,月度模型账单稳定在四位数。老板问能不能降,我先做了一件事:按功能维度把 token 消耗拆开。
拆完发现,一个"智能摘要"功能吃掉了 62% 的额度,而它每天只有 40 个用户用。这就是典型的"没人管的地方最费钱"。
一、先把账算清楚
至少要能按这几个维度拆:功能、模型、输入/输出。很多平台的账单只有总额,那就自己在调用处埋点,记 token 数。
埋点成本很低,收益很大。你会立刻发现哪些调用是"顺手加的",哪些是真正在产生价值。
二、系统提示词瘦身
我们的系统提示词原来有 1800 token,里面写公司介绍、产品线、语气要求、格式要求、二十条禁忌。
现在拆成三层:core(300 token,必带)、task(按任务带)、knowledge(走检索)。平均每次请求的输入从 1800 降到 500。
这一项单独降了 38% 的成本。
三、分级路由
不是所有任务都需要最强的模型。我们把调用分成三档:
- 分类、抽取、格式转换 → 小模型(便宜 10 倍以上)
- 常规生成、改写 → 中档模型
- 复杂推理、长文分析 → 大模型
分类任务全部走小模型之后,那部分成本几乎归零,准确率只掉了 2 个百分点。
四、输出长度控制
输出 token 比输入贵 3 到 4 倍。很多提示词没写长度要求,模型就爱写长。
加上"不超过 200 字""用要点回答,最多 5 条"这类约束,输出平均缩短 40%。用户反馈反而更好——没人想读六段话找一个结论。
五、缓存
两类缓存:
- 完全相同的输入:直接返回上次结果,加个短 TTL
- 语义相同:用 embedding 做近似匹配,相似度超过 0.95 就复用
第二类有风险,我们在"常见问题"场景用,命中率 15% 左右,但每次命中省一次完整调用。
六、别在用户看不见的地方烧钱
有几个隐蔽的消耗点:
- 用户改一个字就触发一次重新生成(加重试防抖)
- 同一段内容在页面里被三个组件各自请求一次(改成共享请求)
- 定时任务对所有数据无差别处理(改成增量)
最后一条砍掉了一个每天跑全表的任务,成本直接少了两成。
上面六项加起来,账单降到原来的 27%。没有一项需要牺牲核心体验。大部分成本都花在没人注意的地方。