首页 › cost-hacks › 折扣相乘不相加:账单从三千砍到三百

一句话信息差

你的API账单之所以降不下来,不是因为没用省钱技巧——而是你把这些技巧当加法用,而真正省钱的人在用乘法。一篇文档处理流水线,基线3000刀/月,叠加四层正交折扣后只剩300刀。更关键的是:90%的开发者都在死磕"省输入",但输出token才是真正的成本黑洞,而能砍它的折扣,全行业只有一类——批处理(Batch)。


一、先看一组让人不舒服的数字:输出比输入贵5倍

我直接从 BerriAI 维护的 model_prices_and_context_window.json(业界最全的实时定价库)拉了 2026年6月的主流模型定价,这是未经粉饰的原始数据:

模型 输入 $/M tokens 输出 $/M tokens 输出÷输入 缓存读 $/M 缓存读折扣
Claude Opus 4.8 $5.00 $25.00 5× $0.50 90% off
Claude Sonnet 4.6 $3.00 $15.00 5× $0.30 90% off
Claude Haiku 4.5 $1.00 $5.00 5× $0.10 90% off
GPT-5 $1.25 $10.00 8× $0.12 ~90% off
Gemini 2.5 Pro $1.25 $10.00 8× $0.12 ~90% off
DeepSeek Chat $0.28 $0.42 1.5× $0.03 —

看出门道了吗?两点:

  1. 输出token的定价是输入的5到8倍。GPT-5和Gemini 2.5 Pro甚至达到8倍。
  2. 每一家的"缓存读"价格,都精确地是标准输入价的1/10(90%折扣)。这不是巧合,这是2026年大模型API的标配游戏规则。

但这里藏着一个绝大多数人没想通的逻辑陷阱——Prompt Caching(上下文缓存)只能帮你省输入,永远省不了输出。因为缓存存的是"前缀"(系统提示、工具定义、固定文档),而输出token是每次重新生成的,独一无二,根本没法缓存。

所以如果你的账单结构是"小输入 + 大输出"(比如代码生成、长文写作),你把缓存玩出花也只能动到账单的一小块。真正吃掉你预算的输出token,必须用另一把刀——Batch API。

这就是本轮信息差的灵魂:不同折扣作用在不同的token上,必须正交叠加,用乘法,不是加法。


二、四层折扣栈:每一层砍的是不同的肉

我把"省钱"重新拆成四层互相独立的折扣。记住一个原则:层数越多、彼此越正交,相乘后的折扣越恐怖。

flowchart TD
    A["原始请求流<br/>每月10万次 × 8000in/400out<br/>基线 = $3,000/月"] --> L1
    subgraph L1["第1层  Prompt Caching 上下文缓存"]
        A1{"固定前缀是否<br/>命中缓存?"}
        A1 -->|"命中:缓存读"| A2["5000 tokens × $0.30/M<br/>而非 $3.00/M<br/>→ 输入省90%"]
        A1 -->|"未命中:首写"| A3["一次性缓存写<br/>$3.75/M,5分钟内复用"]
    end
    L1 --> L2
    subgraph L2["第2层  Batch API 异步批处理"]
        B1["整单直接半价 50% off<br/>24h内异步返回<br/>⚡ 唯一能砍【输出token】的折扣"]
    end
    L2 --> L3
    subgraph L3["第3层  输出Token瘦身"]
        C1["输出贵输入5倍<br/>JSON模式 + max_tokens + 简洁提示<br/>400 → 200 tokens"]
    end
    L3 --> L4
    subgraph L4["第4层  模型分级路由"]
        D1{"任务难度评估"}
        D1 -->|"简单 60%"| D2["Haiku 4.5<br/>$1 / $5"]
        D1 -->|"复杂 40%"| D3["Sonnet / Opus"]
    end
    L4 --> R["最终账单 ≈ $300/月<br/>vs 基线 $3,000/月<br/>省 90%"]

下面逐层拆解,每层都给你可立刻抄的操作。


第1层:Prompt Caching(上下文缓存)—— 砍"可复用的输入"

这是厂商白送的90%折扣,但很多人要么不知道,要么只知道手动加断点。

官方原文(来自 Anthropic cookbook):Prompt caching 能"reducing latency by >2x and costs by up to 90% for repetitive tasks"。也就是说,它同时降本和提速,这是它比你自己做语义缓存更香的地方——语义缓存省的是钱,但提不了速,还得自己维护向量库;上下文缓存是厂商底层KV缓存复用,零维护。

2026年的新玩法(这是认知差):现在有两种开启方式,自动缓存和显式断点。

关键参数(已从官方文档核实): - TTL默认5分钟,而且"refreshed on each hit"——每次命中就刷新5分钟倒计时。意思是只要你的流量持续,缓存几乎不会过期。 - 1小时TTL可选,但写入要按 2倍基础输入价收费(trade-off:低频任务才划算)。

代码(自动缓存,Python,3行核心改动):

import anthropic
client = anthropic.Anthropic()

resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    extra_headers={"anthropic-beta": "extended-cache-ttl-2025-04-11"},  # 想用1小时TTL再加
    system=[{
        "type": "text",
        "text": SYSTEM_PROMPT,  # 你的固定大system + 工具定义 + few-shot
        "cache_control": {"type": "ephemeral"}  # ← 关键,就这一行
    }],
    messages=[{"role": "user", "content": user_doc}]  # 每次变化的部分
)

适用场景:system prompt很大(带工具/few-shot)、多轮对话、Agent反复调用同一套工具定义、RAG里反复喂同一份长文档。反过来:如果每次请求的输入几乎全不一样(纯一次性任务),缓存帮不了你,别浪费时间。

💡 中国开发者补充:智谱GLM也提供"上下文缓存(Context Caching)",国内可直连、无需翻墙,API兼容,是合规场景下复刻这套打法的首选。OpenAI和Google DeepMind同样在2026年把缓存读价定在标准价的1/10左右,机制一致。


第2层:Batch API(异步批处理)—— 唯一能砍输出的半价刀

这是被严重低估的一层。 OpenAI和Anthropic都提供Batch API,规则高度一致:

为什么说它是"唯一能砍输出的刀"?回到第一节的表格——输出token贵输入5-8倍,而Prompt Caching救不了输出。Batch API的50%是"全单折扣",输入输出一起砍。 所以对"小输入+大输出"型任务(典型如代码生成评测、长文批量改写),Batch的威力远大于缓存。

操作(Anthropic Message Batches):

# 1. 把请求打包成JSONL,每行一个独立请求
cat > /tmp/requests.jsonl <<EOF
{"custom_id": "req-1", "params": {"model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [{"role":"user","content":"总结文档A..."}]}}
{"custom_id": "req-2", "params": {"model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [{"role":"user","content":"总结文档B..."}]}}
EOF

# 2. 提交批处理任务(异步,24h内返回)
curl https://api.anthropic.com/v1/messages/batches \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"requests": ...}'   # 或上传文件

什么时候该用:夜里跑的批处理、T+1报表、离线评测、知识库构建、RAG语料预处理。反过来:实时客服、流式对话、用户等结果的前台请求——不能用,响应太慢。

一个真实组合:第1层的缓存 + 第2层的批处理,叠加在"缓存命中的输入"上,理论价格 = 标准价 × 10%(缓存)× 50%(批处理)= 标准价的5%。这就是标题里"乘法"的威力。


第3层:输出Token瘦身 —— 砍那个"谁也救不了的黑洞"

既然输出贵、又没法缓存、批处理也只是半价,那直接少生成输出就是最直接的杠杆。这是认知差最大的一层,因为大家都盯着输入。

具体动作,每个都能立刻落地:

  1. 强制JSON / 结构化输出:让模型只吐字段,不吐废话。一句话解释比一段话便宜,JSON比散文省token。
  2. 设 max_tokens 上限:很多人不设,任由模型"想写多少写多少"。给个硬上限,既省token又防失控。
  3. 提示词里加"简洁"约束:"回答不超过50字"、"只输出代码,不要解释"。看似朴素,实测能砍30-50%输出。
  4. 控制推理预算:带推理(reasoning)的模型,"思考过程"也算输出token。OpenAI的reasoning.effort、Anthropic的thinking budget都能设上限,别让模型想太久。
  5. 复用模板:固定格式部分别让模型生成,你本地拼接。

举个数:把输出从400 token压到200 token,按Sonnet 4.6算,100万次请求直接省 $1,500——这比任何缓存技巧都来得猛。


第4层:模型分级路由 —— 让贵的模型只干难活

前面讲过的路由层("七成请求错喂最贵模型")就是这一层。核心:别让Opus做判断"是/否"的活。

和前三层完全正交,可以叠加。


三、实战账本:一条文档流水线,从3000刀砍到300刀

把四层叠起来,算一笔真实的账。场景:客服文档智能摘要,每月10万份文档。

优化阶段 月账单 本层省 累计省
🔴 基线(裸调API) $3,000 — 0%
+ 第1层 Prompt Caching
(5000固定前缀走缓存读)
$1,650 −$1,350 45%
+ 第2层 Batch API半价
(全单×0.5,含输出)
$825 −$825 73%
+ 第3层 输出瘦身
(400→200 token)
$540 −$285 82%
+ 第4层 模型路由
(60%简单任务下放Haiku)
≈$300 −$240 90%

90%。 从3000刀到300刀。而且这2700刀的省法,没有任何一层是"玄学"——每一层都是官方文档写明的功能,互相正交,可以同时开。

xychart-beta
    title "四层叠加省钱曲线(月账单 $)"
    x-axis ["基线", "+缓存", "+批处理", "+输出瘦身", "+路由"]
    y-axis "月账单 USD" 0 --> 3200
    bar [3000, 1650, 825, 540, 300]

四、信息差总结:你以为的 vs 别人没告诉你的

你以为的省钱 真正的信息差
Prompt Caching最猛,开就完了 缓存只能省输入,输出才是5-8倍成本黑洞
用一个省钱技巧就够了 技巧之间是乘法:90%×50%×70%×80% ≈ 省到3%
缓存要手动加一堆断点 2026年有自动缓存,顶层一行cache_control搞定
实时调用才专业 不等结果的活全塞Batch,直接半价
token多少无所谓 输出max_tokens不设 = 让模型刷你的信用卡
贵模型=质量好 60%的活Haiku就能干,Opus只留20%硬骨头

五、行动指南(今晚就能动手)

  1. 打开你的API用量面板,看一眼"输入token vs 输出token"占比。如果输出占比>30%,第2、3层是你的主战场。
  2. 给所有固定system prompt / 工具定义加缓存。用自动缓存,改动就一行。改完观察账单48小时,输入费用应肉眼可见下降。
  3. 把所有非实时任务改成Batch。盘点一下:哪些请求是"用户不需要立刻看到结果"的?统统异步化,立省一半。
  4. 给每个请求设 max_tokens + 加"简洁"提示。零成本改动,输出费用降30%。
  5. 在入口加一层难度路由:先Haiku分类,再分流到对应模型。
  6. 每周看一次缓存命中率。命中率<50%说明前缀不稳定,要么固定化system prompt,要么调短TTL。

预算分档推荐: - < $50/月:只做第3层(输出瘦身)+ 用GLM-4.6/DeepSeek等低价模型,几乎零成本。 - $50-500/月:加上第1层缓存 + 第4层路由,覆盖90%场景。 - > $500/月:四层全开,重点压榨第2层Batch,这是大账单里最大的一块肉。


六、参考来源

  1. Anthropic 官方 Prompt Caching Cookbook(验证90%省钱、5min/1h TTL、自动缓存)— https://github.com/anthropics/anthropic-cookbook/blob/main/misc/prompt_caching.ipynb
  2. Anthropic Prompt Caching 文档 — https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
  3. OpenAI Batch API 指南(50%异步折扣、24h窗口)— https://platform.openai.com/docs/guides/batch
  4. Anthropic Message Batches 文档 — https://docs.anthropic.com/en/docs/build-with-claude/batch-processing
  5. BerriAI litellm 实时模型定价库(验证输出/输入5-8倍、缓存读10倍折扣)— https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入