<!-- title: 折扣相乘不相加：账单从三千砍到三百 -->
<!-- domain: 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上，必须正交叠加，用乘法，不是加法。**

---

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

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

```mermaid
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年的新玩法（这是认知差）**：现在有两种开启方式，**自动缓存**和**显式断点**。

- **自动缓存（推荐）**：只需在请求顶层加一个 `cache_control` 字段，系统自动帮你判断哪些该缓存。Anthropic官方明确把它标为"(recommended)"。对90%的场景，这就够了。
- **显式断点**：在单个content block上放 `cache_control: {"type": "ephemeral"}`，单次请求最多4个断点，适合你要精细控制"系统提示、工具定义、few-shot示例"分别缓存的情况。

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

**代码（自动缓存，Python，3行核心改动）**：

```python
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，规则高度一致：

- **整单50% off**，直接半价；
- **异步处理**，提交后在 **24小时窗口** 内返回结果；
- 适合**不需要实时响应**的批量任务：分类、摘要、数据清洗、评测打分、内容审核。

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

**操作（Anthropic Message Batches）**：

```bash
# 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做判断"是/否"的活**。

- 用一个便宜的分类模型（Haiku 4.5、甚至GLM-4.6 Flash）先给任务打难度标签；
- 简单的60%走Haiku（$1/$5），复杂的40%才上Sonnet/Opus；
- 这一层的折扣是"结构性"的——直接换了单价表。

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

---

## 三、实战账本：一条文档流水线，从3000刀砍到300刀

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

- 每次请求：8000输入（5000固定system+工具 / 3000变化文档）+ 400输出
- 模型：Claude Sonnet 4.6（$3/M in，$15/M out）

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

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

```mermaid
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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
