如果你每天往同一个 API 里塞一份 8000 token 的系统提示词,跑一万次,光"重复过路费"一年就能烧出一台顶配 GPU 的钱。但你大概率不知道:Anthropic 和 OpenAI 早就给这笔重复输入留了"退费窗口"——只要请求长得对,输入 token 能按一折(Anthropic)或五折(OpenAI)计费。这扇窗口叫 prompt caching,可它默认是半开的,九成的人没踩对开关。本文把"让一次计算的成果被反复白嫖"的三把暗锁一次拆开:提示词缓存、批处理半价、缓存断点与 TTL。读完你会知道,为什么同样是调 API,有人按原价付,有人按一折付,差距全在"复用率"这三个字上。
打开任何一家的 API 定价页,你看到的都是"输入价 X / 输出价 Y"。但这张表是三档价格的简化版,真实存在第三、第四档:
| 计费档位 | Anthropic(Claude) | OpenAI(GPT 系列) |
|---|---|---|
| 普通输入 | 1.0× | 1.0× |
| 缓存写入(cache write) | 1.25× | 1.0×(不额外收费) |
| 缓存命中读(cache hit) | 0.1×(一折) | 0.5×(五折) |
| 批处理(batch,24h 内异步) | 0.5×(输入+输出均五折) | 0.5×(输入+输出均五折) |
注意三个反直觉点,它们正是信息差所在:
三把锁的设计哲学是同一句话:模型不该为重复的思考重复付费。你只要把请求排成"可复用"的形状,折扣自动到手。
这是收益最大、也最容易被错过的一把锁。机制很简单:把你 prompt 里不变的前缀(系统提示、长文档、few-shot 示例、工具定义)标成可缓存,模型算完一次后把中间状态(KV cache)留在显存里。下次只要前缀完全匹配,就直接复用,输入 token 按一折计费。
Anthropic 的开关长这样(在 messages 里加 cache_control):
{
"system": [
{ "type": "text", "text": "<你那份8000 token的系统提示>" },
{ "type": "text", "text": "<长文档/RAG上下文>", "cache_control": {"type": "ephemeral"} }
],
"messages": [...]
}
OpenAI 不需要任何参数,自动按前缀哈希匹配。你唯一要做的是把稳定内容放前面、把每次变化的用户输入放最后。很多人把"今天的日期""用户ID"塞在 prompt 最开头,结果每次前缀都变,缓存全废——这是命中率杀手第一名。
真实省钱算账(以一份 8000 token 系统提示、单次请求为例,先看倍数,再看钱):
换算成美元(以 Claude 中端模型输入约 $3/MTok 为例):800 万 token 原价约 $24,缓存后约 $2.6。一个改动省下 $21,跑得越多省得越狠。 这就是为什么做 RAG、做 agent 的团队一旦把上下文固定下来,账单能断崖式下跌。
踩坑清单:
如果你的任务"不是人在等回复",比如凌晨跑的语料清洗、给一万条评论分类、批量生成商品描述——直接走批处理,输入输出统一五折,且和缓存折扣可叠加理解(批处理本身是对"不占用实时算力"的补偿)。
适合谁:内容农场、数据标注团队、SEO 批量生成、邮件/评论分类、文档批量摘要。这些场景的共同点是——延迟不是成本,准确率和单价才是。把"实时"换成"24 小时内",立省一半,这是最不需要技术含量的砍价。
不适合谁:客服对话、实时编码补全、用户在场等待的任何交互。强行 batch 体验崩盘,得不偿失。
缓存锁开了不等于命中高,真正决定命中率的是两件事:缓存能活多久(TTL)和你怎么切缓存边界(断点)。
延长寿命:Anthropic 在 2024 年底推出了 1 小时 TTL(ephemeral 的扩展档),代价是缓存写入价更高、且缓存不足 10 分钟按 10 分钟计费。但对"上下文稳定、用户会隔几十分钟回来"的 agent 场景(比如一个长期项目里反复追问同一份代码库),1 小时 TTL 能把命中率从"基本 miss"拉到"稳定复用"。判断标准很简单:两次相关请求的间隔是否大概率超过 5 分钟?是,就上 1 小时档。
切对边界:一次请求最多可以打 4 个缓存断点(Anthropic)。聪明做法是把 prompt 切成"超稳定层 / 项目层 / 会话层 / 单轮层":
这样即便用户每次问不同问题,前三层都稳定命中,只有最后一层按原价算。命中率从"看运气"变成"结构性的 80%+"。
下面这张图把三把锁的决策路径串起来,照着走就能判断"这一次请求该走哪条省钱路径":
flowchart TD
A["新请求进来"] --> B{"用户在场等回复吗?"}
B -->|"否,可等24h"| C["暗锁二: Batch API<br/>统一五折"]
B -->|"是,要实时"| D{"prompt有稳定前缀吗?<br/>系统提示/长文档/few-shot"}
D -->|"有"| E["暗锁一: Prompt Caching"]
D -->|"没有"| F["原价 1.0×<br/>无救,先重组prompt"]
E --> G{"两次相关请求间隔>5分钟?"}
G -->|"是"| H["暗锁三: 上1小时TTL<br/>+ 多断点分层"]
G -->|"否"| I["默认5分钟TTL够用"]
H --> J["命中: 0.1× 输入价<br/>一折复用"]
I --> J
C --> K["五折 + 批内缓存可叠加"]
J --> L["复用即免费 ✓"]
K --> L
| 维度 | 多数人的做法(原价) | 闷声省的人(一折/五折) |
|---|---|---|
| 系统提示词 | 每次原价重算 | 标 cache_control,命中一折 |
| 前缀顺序 | 用户ID/日期放最前 | 稳定内容放前,变化放后 |
| 离线批任务 | 实时同步调用 | 改 Batch API,统一五折 |
| 长上下文 agent | 5 分钟 TTL 不够就放弃 | 开 1 小时 TTL,跨轮复用 |
| 缓存分层 | 整段一个缓存点 | 4 断点分层,命中率 80%+ |
| 近似重复 query | 每条都打模型 | 前置语义缓存(如 GPTCache)命中直接返回 |
最后一行是"第四把隐藏锁":当请求是自然语言且高度重复(客服 FAQ、商品咨询),别急着打大模型,前面挂一层语义缓存(GPTCache、LiteLLM cache、Portkey),把"今天营业到几点"的 1000 种问法都命中到同一条缓存答案,连一折都不用付——直接零成本返回。这层适合读多写少、容错高的业务。
cache_control,间隔长的场景上 1 小时 TTL。一个心智模型收尾:API 计费的本质不是"调了多少次",而是"算了多少新东西"。 你让模型反复重算同一段系统提示,它就按原价收你"思考费";你让它复用上次的思考,它就按一折收你"过路费"。三把暗锁,锁的都是同一件事——别为重复的思考重复买单。 参考来源(官方机制文档,可作为配置入口):
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。 完成摘要
下一步计划:
- P0:本周内(2026-07-18 后)联网校验文中所有定价倍数与 TTL 数值是否仍为最新(尤其 Anthropic 是否调整了 1.25× 写入价与 1 小时 TTL 的 10 分钟计费门槛)。
- P1:下一轮(Round 5 = trending 社区热议)可转向 Reddit/HN 上对"缓存命中率玄学""batch 把体验做崩"的真实吐槽,补本轮的社区视角。
- P2:若需要,可把"缓存断点分层模板"沉淀成一份可直接粘贴的 system prompt 配置片段。
注意事项: - 数据时效风险:因联网不可用,倍数为稳定的定价结构、绝对美元为"以中端模型为例"的示算,正式发布前建议复核实时价格表。 - 断点数量上限(Anthropic 4 个)、最小缓存 token 可能随模型迭代调整,落地前以官方文档为准。
[!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 等场景全覆盖。
