为什么这两条折扣能叠加

Anthropic Batch Processing 文档(访问于 2026-05-19),Batches 内部仍走 Messages API 协议,cache_control 字段照常解析。这意味着同一段 system prompt 在 batch 内仍能触发 cache_write / cache_read 区分计费,只是最终结算价在 Messages API 原价基础上再 ×0.5。

单价测算表(Claude Sonnet 4.6 为例)

Anthropic Pricing(访问于 2026-05-19),Sonnet 4.6 input base 单价 $3/MTok。1M token system prompt 在不同模式下的实际花费:

模式单价(每 1M input token)vs base 价
实时调用、无 cache$3.00100%
实时 + cache write(首次)$3.75125%
实时 + cache read(命中)$0.3010%
Batch + 无 cache$1.5050%
Batch + cache write(首次)$1.87562.5%
Batch + cache read(命中)$0.155%

注:Batch 折扣按 Anthropic Batches 2026 年 5 月公开规则计算,实际以官方页为准。

叠加后实测:SEO 批量生成场景

应用:Solopreneur 每周生成 200 篇 SEO 长文(每篇 1500 字),system prompt 4K token(品牌语气 + 站点风格 + 选题清单)。

不优化:
  input: (4K + 500 user) × 200 = 900K token
  output: 1500 token × 200 = 300K token
  成本 ≈ 900K×$3 + 300K×$15 = $2.7 + $4.5 = $7.2/M token 加权 ≈ $6.84

只开 Prompt Caching(实时):
  4K system 缓存,200 次中 199 次走 cache_read
  input 成本 ≈ 4K×1.25×$3/1M + 4K×199×$0.3/1M + 500×200×$3/1M
            ≈ $0.015 + $0.239 + $0.3 = $0.554
  output 不变 $4.5
  小计 ≈ $5.05 → 省 26%

叠加 Batch API:
  实时单价的 1/2
  小计 ≈ $2.52 → 省 63%

如果 output 也走 Batch(本来就是):
  全部 batch 价
  input cache_read: $0.554 × 0.5 = $0.277
  output: $4.5 × 0.5 = $2.25
  小计 ≈ $2.53 → 省 63%

实际能压到 5% 的极致场景是「output 极少 + input 巨大且高度复用」的离线任务,例如批量内容打分、批量分类标注。

Solopreneur 5 个适合的离线场景

场景system prompt 大小批量大小实测降本
每日 SEO 内容批量生成4-6K50-300 篇60-75%
文档批量摘要(知识库索引)2-4K + 文档100-2000 个70-85%
客服邮件批量起草3-5K(品牌 FAQ)50-500 封65-80%
A/B prompt 评测打分1-2K(评分细则)200-5000 条80-92%
离线 RAG embedding10K-1M chunks50%(走 batch 折扣)

Anthropic Customer Stories(访问于 2026-05-19)公开案例,做内容批量生成的 SaaS 普遍报告打开 Prompt Caching 后 token 账单降 40-60%,叠加 Batch 后再降一半。

怎么开 Prompt Caching(代码示例)

Anthropic Prompt Caching Docs(访问于 2026-05-19):

import anthropic

client = anthropic.Anthropic()

SYSTEM_PROMPT = "..."  # 4-6K token 的稳定品牌指令

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2000,
    system=[
        {
            "type": "text",
            "text": SYSTEM_PROMPT,
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": user_input}],
)

# 看响应里的 usage
print(response.usage.cache_creation_input_tokens)  # 首次写入
print(response.usage.cache_read_input_tokens)  # 后续命中
print(response.usage.input_tokens)  # 非缓存部分

关键:cache_control 标记的 block 累计 token 必须 ≥ 1024(Sonnet / Opus / Haiku 4.5 起统一 1024 条件),否则 cache_write 不会触发。

怎么提交 Batch(代码示例)

batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": f"task-{i}",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 2000,
                "system": [{
                    "type": "text",
                    "text": SYSTEM_PROMPT,
                    "cache_control": {"type": "ephemeral"},
                }],
                "messages": [{"role": "user", "content": tasks[i]}],
            }
        }
        for i in range(200)
    ]
)
# 轮询直到 processing_status == "ended",然后下载 results_url

常见坑

坑 1:cache_control 加在错误位置

cache 是「以 block 为粒度」的。如果你把 system prompt 拆 5 个 text block,只有最后一个加 cache_control,前面 4 个不缓存。正确做法是把要缓存的 block 整段标记。

坑 2:5 分钟窗口内 batch 没跑完

ephemeral cache 5 分钟过期。如果一批 batch 提交后 3 小时才跑完,cache 早就过期,每条都按首次写入计费。Anthropic 在 Batch 内部会复用 cache(同一 batch 内 cache_read 不会因为执行时间长而失效),但跨 batch 不行。所以建议同类任务集中到一个 batch 提交。

坑 3:1 小时 cache 比 5 分钟贵

Anthropic 还提供 1 小时 cache(type: "ephemeral", ttl: "1h"),cache_write 倍率 2x(更贵),适合「跨 batch 复用」场景。Solopreneur 大部分场景 5 分钟够用。

坑 4:Batch 不支持流式

Batch 是同步任务,没有 streaming。如果你的代码默认开了 stream=True,提交 Batch 时要去掉这个字段。

中转方支持情况

签约中转方前用 100 条小批测试,看:

  • 账单上 cache_read 是否真的按 base 价的 10% 收
  • batch 端点是否能正常提交并返回 batch_id
  • results_url 能否下载到完整 JSONL

如果用一条主推 GPT-5.5 / Claude 4.7 的低价 API 中转,既透传 cache_control 又原样支持 Batches 端点,Solopreneur 把这两个折扣同时享受到,月账单从 $2000 量级压到 $100-200 是正常实测区间。

相关阅读