Prompt Caching / 提示词缓存

6900

Prompt Caching 是一种 API 级别的优化技术,让相同的提示词前缀在多次请求中只需处理一次,后续调用直接复用缓存结果,从而大幅降低成本和延迟。Anthropic 和 OpenAI 均已在其 API 中提供这项功能

Prompt Caching缓存成本优化API上下文

提示词缓存与响应加速
提示词缓存与响应加速

先用一句话抓住它

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 或每次变化的变量,缓存会频繁失效。应该把动态部分移到提示词末尾,只缓存稳定的前缀部分。

顺序很重要:固定内容必须在前,动态内容在后。反过来放会让缓存完全无效。

不是所有模型都支持。新模型发布时,缓存功能需要单独确认是否可用,定价和参数也可能与老版本不同。

资料来源