提示词缓存把固定不变的前缀(系统提示词、工具定义、参考文档)存在服务商侧,后续调用按折扣价读取。Anthropic 命中读只要 0.1×,是当前最深的折扣。
-
无缓存成本($)
-
有缓存成本($)
-
节省金额($)
-
节省比例(%)
-
回本所需读次数
-
有缓存成本 = 前缀×单价×写入倍率 + (调用次数−1)×前缀×单价×命中倍率 + 调用次数×动态部分×单价 + 调用次数×输出×输出单价;回本读次数 = (写入倍率 − 1) ÷ (1 − 命中倍率)。
提示词缓存为什么是最大的成本杠杆
大多数 AI 应用的输入里,有很大比例是每次调用都完全相同的内容:系统提示词、工具定义、few-shot 示例、固定参考文档。没有缓存时,服务商每次都要把这些 token 重新预处理一遍,而这些 token 你都要照价付费。
提示词缓存的做法是:把这段固定前缀存在服务商侧,后续相同前缀的请求直接复用,只按折扣价收费。对于一个 8000 token 的固定前缀、每天调用 10 万次的应用,这往往是唯一能把账单从"亏损"拉回"可承受"的手段。
各家的缓存策略对比(2026)
| 服务商 | 命中读折扣 | 写入成本 | 最小可缓存长度 | 生效方式 |
|---|---|---|---|---|
| Anthropic Claude | 90% off(0.1×) | 1.25×(5 分钟)/ 2.0×(1 小时) | 1024 token | 需显式标记 cache_control |
| OpenAI GPT 系列 | 50%(0.5×),新模型可达 90% | 免费(自动) | 1024 token | 全自动,无需改代码 |
| Google Gemini | 75%(0.25×) | 按时长收存储费 | 2048–4096 token | 隐式默认开启 / 显式可选 |
| DeepSeek | 约 90% off | 免费(自动) | 约 64 token | 全自动 |
这张表里最关键的取舍是"显式 vs 自动":Anthropic 折扣最深但要写代码标记,OpenAI 和 DeepSeek 什么都不用做但折扣浅一些。
回本很快,比想象中快得多
以 5 分钟 TTL 为例,写入成本 1.25×、命中读 0.1×,那么回本所需命中次数 = (1.25 − 1) ÷ (1 − 0.1) ≈ 0.28 次。换句话说:只要这个前缀被读一次,就已经回本了。
1 小时 TTL 的写法成本是 2.0×,回本需要 (2 − 1) ÷ 0.9 ≈ 1.11 次,也就是至少两次命中才划算。所以常见误区是"1 小时更久所以更好"——如果你的前缀 5 分钟才被读一次,1 小时 TTL 反而更贵。
四个让缓存失效的错误写法
- 把变量放在最前面:缓存只匹配相同的前缀。如果 prompt 开头就是"今天是 2026-10-02"或用户 ID,前缀每次都不同,缓存永远不会命中。
- 前缀里带时间戳或随机数:哪怕只有一个字符变化,整个缓存都失效。
- 前缀长度低于最小值:少于 1024 token 的内容不参与缓存,短系统提示词无法享受折扣。
- 把整个多轮对话都当缓存:对话历史会增长,只有开头到某个固定点的部分是稳定前缀,应当只标记那一段。
正确结构:
[固定] 系统提示词 + 工具定义 + 参考文档 ← 标记缓存
[变化] 用户问题 + 当前上下文 ← 不缓存
[固定] 系统提示词 + 工具定义 + 参考文档 ← 标记缓存
[变化] 用户问题 + 当前上下文 ← 不缓存
你可能还想问
缓存能省多少?
对重复的长前缀效果显著,命中缓存的部分单价明显更低;但对每次都不相同的短提示几乎没有作用。
什么样的提示适合缓存?
前缀固定且较长(如系统指令、示例集、知识片段)的场景最合适;把变动内容放在末尾能提高命中率。
缓存会过期吗?
多数有有效期,超时后需重新写入;高频调用能持续命中,低频场景可能入不敷出,需按调用频率评估。
速查在线工具箱