。
先用一句话抓住它
Prompt Caching 让"每次都重新读一遍长文档"变成"第一次读完缓存起来,之后直接跳到新内容"。
如果你的应用每次请求都要把同一份系统提示、同一本手册或同一段代码发给模型,没有缓存时模型每次都从头处理这些 token,你每次都要为此付费。有了 Prompt Caching,这些重复内容只在第一次计费,之后复用缓存,成本可以降低 80% 到 90%。
它是怎么工作的
大语言模型处理输入 token 时,内部会生成一系列中间计算结果(在 Transformer 架构中称为 KV Cache)。Prompt Caching 的原理是:如果本次请求的前缀和上一次完全一致,模型提供商的基础设施可以跳过这部分重复计算,直接从缓存的中间状态继续处理新增的内容。
关键条件是前缀必须完全相同。哪怕只有一个字符不同,缓存就会失效,系统会重新处理整个前缀。这意味着:系统提示、文档内容、少样本示例等固定内容必须放在提示词的最前面,用户当前的问题放在最后。
Anthropic 的 Prompt Caching 要求缓存前缀至少达到 1024 个 token(对于某些模型是 2048),低于这个阈值不会触发缓存。OpenAI 的实现方式略有不同,会自动对超过一定长度的请求尝试缓存,无需开发者显式标注。
什么场景最值得用
系统提示很长的应用:如果你的系统提示包含几千字的角色设定、规则说明和格式要求,缓存可以让每次对话的成本大幅下降。
文档问答:将长篇文档、产品手册、法律文件放入提示词,用户基于这份文档提问,每次请求都携带同一份文档。缓存命中后,传输和处理这份文档的成本接近于零。
多轮对话中的固定上下文:对话系统里,历史记录通常是递增的,但可以把固定部分(如系统提示和早期对话)标记为缓存前缀,只让模型处理新增内容。
代码审查和代码库问答:把代码文件放入提示词,允许用户反复提问。缓存可以让每次提问只计算新问题的 token 费用。
成本和延迟的变化
以 Anthropic Claude 的定价为例,缓存命中(cache read)的成本约为正常输入 token 的 10%,也就是说每次命中可以节省约 90% 的输入成本。首次写入缓存的请求(cache write)会有额外费用,约为正常输入的 25%,但只需承担一次。
延迟方面,缓存命中的响应通常也更快,因为跳过了大量计算。对于包含长文档的请求,延迟改善尤为明显。
使用时的注意事项
缓存有有效期。Anthropic 的缓存默认存活 5 分钟,不活跃后会被清除,之后的请求需要重新建立缓存。如果应用流量较低、请求间隔较长,命中率会明显下降。
动态内容不适合缓存前缀。如果系统提示里包含当前时间、用户 ID 或每次变化的变量,缓存会频繁失效。应该把动态部分移到提示词末尾,只缓存稳定的前缀部分。
顺序很重要:固定内容必须在前,动态内容在后。反过来放会让缓存完全无效。
不是所有模型都支持。新模型发布时,缓存功能需要单独确认是否可用,定价和参数也可能与老版本不同。