乐于分享
好东西不私藏

月活 1 万、AI 账单 26 万:我们用"三把刀"砍掉了 43%

月活 1 万、AI 账单 26 万:我们用"三把刀"砍掉了 43%

月活 1 万、AI 账单 26 万:我们用"三把刀"砍掉了 43%

读完这篇,你脑子里会装下一张图:成本公式 · 三把刀 · 一段路由代码 · 5 句口诀。下次老板问"AI 是不是太烧钱",你能 3 分钟讲明白省钱的路径。


一、那张让 CFO 找上门的账单

朋友的 SaaS 公司上线了一个企业 RAG 客服助手。

两个月后,CFO 拿着账单直接走到了 CTO 工位

  • • 月活:1 万人
  • • 日均问答:3.2 万次
  • • 当月模型账单:¥26 万
  • • 超预算:+42%

更崩溃的是产品同学的那句话:

"功能没变化,调用量也没暴涨啊。"

打开 Trace 一看真相——调用量没涨,是每次调用都太贵了

那次复盘会上,CTO 在白板写了一句话:

"模型便宜,不等于账单便宜。"

这就是本文的灵魂。


二、为什么"单价便宜"也能被账单干翻?

很多团队盯着的是这个:

"GPT-4o-mini 每百万 token 才 ¥1.x,多便宜啊。"

但他们忽略了真正的成本公式——记住这个5 项公式

月成本 = 请求数
      × ( 输入 token × 输入单价
        + 输出 token × 输出单价
        - 缓存命中折扣 )

单价只是一个变量。真正决定账单的,是另外 3 件事

  1. 1. 每次输入塞了多少 token(Prompt + RAG 上下文)
  2. 2. 所有请求是不是都打到最贵的模型
  3. 3. 有没有缓存和批处理

90% 的成本失控,都是这 3 件事。


三、记忆点①:成本三角形——"长、贵、重"

把账单失控的真凶画成一个三角形,记成**"长、贵、重"**:

                  💰 账单失控
                 /      |      \
                /       |       \
               长       贵       重
              (上下文长) (模型贵) (输出重)
            压缩↓      路由↓     限长↓
  • • :上下文太长 →  (Prompt 压缩 + Top-K 减半)
  • • :全打贵模型 →  (小/中/大三层路由)
  • • :输出没限 →  (max_output_tokens 强制约束)

砍、分、限——这就是省钱三把刀


四、记忆点②:三把刀,按顺序砍

🔪 第一刀:砍(无损降本 10%~35%)

最容易被低估,但最安全

  • • System Prompt 抽离成模板,不再每次重复发送
  • • RAG Top-K 从 10 降到 4(配合 rerank,质量基本不掉)
  • • 输出长度强制约束(客服 256~512 token 足够)

省钱不一定要换模型,先砍上下文。

🔪 第二刀:分(最大收益 20%~50%)

绝对不要让所有请求都走 GPT-4o。把模型当成饭店点菜,按需点。

def route_model(intent, complexity):
    if
 intent in {"faq", "policy_lookup"}:
        return
 "small-model"      # 麦当劳
    if
 complexity < 0.7:
        return
 "mid-model"        # 必胜客
    return
 "large-model"          # 米其林(留给真正复杂的)

实操中常见结构:70% 小模型 + 20% 中模型 + 10% 大模型

你不会用米其林米饭做盖浇饭,凭啥每个请求都给 GPT-4o?

🔪 第三刀:缓存 + 批处理(命中场景 15%~60%)

  • • 高重复前缀(系统指令 + 知识库块)开 Prompt Cache
  • • 非实时任务(审核、批量摘要)走批窗口聚合

同样的话不该付两次钱。


五、记忆点③:那家公司是怎么砍到 14.8 万的?

他们没换模型供应商、没改架构,只做了 3 件事:

# ① 分(路由):70/20/10
if
 intent in {"faq", "policy_lookup"}:
    model = "small-model"
elif
 confidence < 0.7:
    model = "mid-model"
else
:
    model = "large-model"

# ② 砍(压缩):上下文截断

prompt = trim_prompt(prompt, max_tokens=2800)

# ③ 限(出口):输出长度封顶

answer = call_llm(model, prompt, max_output_tokens=350)

两周后看数据

指标
优化前
优化后
变化
大模型流量占比
100%
28%
⬇️ 72pp
平均输入 token
3,180
1,880
⬇️ 41%
月成本
¥26 万¥14.8 万⬇️ 43%
准确率
87.4%
85.6%
⬇️ 1.8%(业务可接受)

省了 11.2 万/月 = 一年 134 万——足够多招一个高级工程师。


六、记忆点④:5 个最常见的坑

❌ 坑 1:上来就换便宜模型

对策:先做"无损优化"(砍、缓存、限长),换模型放最后。
口诀先剪枝,再换刀。

❌ 坑 2:RAG Top-K 默认 10

对策:Top-K 从 3 开始,按指标加。
口诀召回越多越贵,噪声还越多。

❌ 坑 3:输出长度不约束

对策:业务侧强制 max_output_tokens
口诀输出 token 通常贵 3~5 倍——不限长 = 自己烧自己。

❌ 坑 4:没按租户/场景拆账

对策:建 FinOps 看板,按租户/路由/模型核算。
口诀不分账,永远找不到失控点。

❌ 坑 5:降本不做回归

对策:每次降本都跑离线评测 + 线上灰度。
口诀砍了成本砍了准确率,比不优化更亏。


七、记忆点⑤:5 句口诀,贴在工位上

  1. 1. 模型便宜,不等于账单便宜
  2. 2. 省钱三把刀:砍、分、限
  3. 3. 70/20/10 路由法则
  4. 4. 输出 token 是贵的,必须限长
  5. 5. 降本必带灰度 + 评测,否则等于赌博

八、那位 CFO 后来又找了一次

——这次是给团队点赞,还顺手批了下半年的预算。

他在邮件里说了一句让我印象很深的话:

"我以前以为 AI 是花钱的,现在我才知道——AI 不是花得多就好,而是看你把每一块钱花在哪里。"

模型每 6 个月就便宜一次。
但能不能用好它,是工程能力的事,不是采购能力的事。


九、结尾:你的 AI 账单,能砍 30% 吗?

把这三个问题问一遍:

  1. 1. 我所有请求是不是都打到了最贵的模型?
  2. 2. 我每次 RAG 的 Top-K 是不是 ≥ 8?
  3. 3. 我的输出长度是不是没限?

只要有一个"是",账单里就有 30% 是白烧的


💡 原始笔记:成本优化:Token 经济学
觉得有用就转发给正在管 AI 预算的同事和领导——
让他们知道:AI 的成本,从来不是模型决定的,是工程决定的。