一件让我琢磨了好几天的事
昨天跟一个朋友聊天,他说最近用某 AI 助手写代码,遇到一个非常诡异的事。
同一个问题,第一次问,要等七八秒。关掉窗口,重新开,再问同样的问题,反而只要 2 秒。
他一开始以为是自己网不好。
后来又测了几次,发现规律特别清楚:
第一次开新对话:慢 接着问同样内容:快 隔了 5 分钟再问:又慢了 改一个字再问:也慢了
他说他百思不得其解。
说实话,这事我也琢磨了好几天,直到我扒了一下大模型背后的原理。
今天,就把这个东西,给大家讲清楚。
讲完之后,你可能就会理解,为什么有时候 AI 慢得让人抓狂,有时候又跟开挂了一样快。
也可能会理解,为什么你买 AI 会员,总觉得"不太够用",可能不是额度的问题,是你用得太浪费了。
第一个类比:老师改作文
我先讲一个你肯定经历过的场景。
你读高中的时候,语文老师改作文。
第一次,你交了一篇 1000 字的作文。老师要从头读到尾,看看开头怎么样、中间有没有跑题、结尾收得如何。这个过程,慢。
老师读完之后,会在脑子里形成一个"印象"——这篇文章哪里好、哪里差、整体是什么水平。
然后,你把作文拿回去改,改了之后又交上来。
这一次,老师不用从头读了。他已经知道你这篇文章大概在写什么,只需要看你改了哪一段,再针对性地点评。
快多了。
这个"老师脑子里的印象",其实就是大模型里那个东西。
学术上,它叫 KV cache。但你可以理解成:
大模型的"短期记忆"。
每次你问 AI 一个问题,AI 都要把你的问题"读一遍、形成理解",这个过程叫 prefill。然后 AI 才能开始打字回答。
这个 prefill 过程,就是慢的根源。
而 prompt cache,就是把这个"理解"记下来 5 分钟。下一次 5 分钟内你问类似的问题,AI 直接用上次的"理解",跳过 prefill。
秒回。
第二次实验:自己跑一下
光说不练假把式。
我自己跑了一下,让 Anthropic 官方 API(Claude)接受同样一段长 prompt 两次。
第一次:
发送 3000 字的 system prompt + 用户问题 服务器返回: cache_creation_input_tokens: 2800(写了 2800 token 的 cache)耗时:1.8 秒
第二次(立刻再发同样内容):
发送同样的内容 服务器返回: cache_read_input_tokens: 2800(命中了!读了 2800 token 的 cache)耗时:0.3 秒
快 6 倍。
而且钱也省了 90%。这个后面细说。
三个关键技术点
讲到这里,你大概已经明白了 prompt cache 是干啥的。
但里面有几个关键的细节,普通用户容易踩坑。我挑三个最重要的说。
1. 严格 prefix 匹配
cache 命中有一个非常严格的要求:前面那段必须一字不差。
比如:
请求 1:system = "你是助手" + tools = [...] + 问 1
请求 2:system = "你是助手" + tools = [...] + 问 2 ← 命中
请求 3:system = "你是好助手" + tools = [...] + ... ← 不命中("好"字多出来)
多一个字,少一个字,换个标点——全部不命中。
这也是为什么你有时候觉得"AI 怎么又不快了",可能不是你网的问题,是你前面那一段话改了。
2. 5 分钟过期
cache 不是永久的,是租来的。
默认 5 分钟 TTL 5 分钟内没用 → 过期 → 下次重新算 可以付费延长到 1 小时(Anthropic 付费)
所以如果你隔了一个小时再问同一个问题,AI 又要从头读一遍了。
3. 至少 1024 token 才值得缓存
服务器懒得缓存太短的东西。低于 1024 token(约等于 600-800 个中文字)的 prompt,cache 机制不生效。
一般你的系统提示词、工具列表、CLAUDE.md 都会超过这个数,所以日常使用你基本碰不到这个限制。
价格账:为什么说"省 90%"
这部分是真正会改变你付费策略的内容。
Anthropic 的 prompt cache 价格是这样的:
| 类型 | 价格倍数 | 说明 |
|---|---|---|
| 普通输入 | 1.0x | 基础 |
| Cache 写 | 1.25x | 第一次写时多收 25% |
| Cache 读 | 0.1x | 命中时只收 10% |
我算一笔账。
假设你有一个 50KB 的固定 system prompt(这是很多大客户真实场景),你每天问 100 次问题。
没 cache:100 × 50KB = 5000KB 的输入费用 有 cache:1 × 50KB(写,1.25x)+ 99 × 50KB(读,0.1x)= 1.25 + 9.9 = 11.15 等效的输入单价
便宜了 99.5%。
这就是为什么大客户用 cache 跟不用 cache,账单能差一个数量级。
三大平台都支持
不光是 Anthropic。
现在主流的大模型平台都支持 prompt cache:
Anthropic(Claude):2024 年 8 月 GA,5 分钟 TTL,最成熟 OpenAI(ChatGPT API):自动缓存,比 Anthropic 简单但控制粒度粗 Google(Gemini):也有显式 cache 控制,免费
但有一个关键差异:
Anthropic 是显式的(你要在请求里打 cache_control标记)OpenAI 部分模型是自动的(系统判断哪些值得 cache) Google 是显式的(你也可以用自动的)
作为普通用户,你用 ChatGPT、Claude、Gemini 的客户端,完全不用关心这些——客户端帮你处理了。
但如果你是开发者,自己调 API,这一块能省很多钱,必须研究。
你能立刻做的 3 件事
讲到这里,你应该明白了 prompt cache 是啥、为什么 AI 时快时慢。
但"知道"和"用上"之间,还有一段距离。
我给你 3 个立刻就能用上的实操建议。
1. 不要每问一次就开新窗口
很多人习惯每提一个新问题就开一个新对话,怕"上下文污染"。
但这样做的代价是:每次都从零开始,没法享受 cache 的好处。
正确做法:尽量在同一个对话里连续追问,让 cache 续上。
如果你真的怕上下文太长太乱,每隔一段时间手动"重开"一次是可以的,但不要每个问题都重开。
2. 不要乱改系统提示词
如果你自己有自定义的 system prompt(很多 AI 工具都支持),改一次就好。别今天改一句、明天再改一句。
每改一次,前面的 cache 就失效了。
正确做法:确定一个稳定的 system prompt,然后长时间不改动。
3. 用客户端(不要自己造轮子)
ChatGPT、Claude、Gemini、文心、豆包、Kimi......这些客户端都自动管理 cache。
你完全不需要自己研究 API 怎么调、breakpoint 打在哪。
只要你不是开发者,用客户端就行。
一个延伸:为什么多 agent 平台要搞"长连接"
讲个延伸。
我之前看过一个开源项目叫 multica,是个 AI agent 管理平台。
它里面有一段代码注释,特别有意思:
"local daemon 每次 task 都是新进程 = cache miss = 慢;cloud runtime 保持 warm = 同一个 session = cache hit = 快。"
翻译过来就是:
它们花那么多钱做 cloud runtime,不是因为网络快,是因为 prompt cache 能命中。
你看,prompt cache 不光是省用户的钱,也省 AI 应用自己的钱。
一个能续上 cache 的 AI 应用,和每次都冷启动的 AI 应用,运行成本可能差 10 倍。
这个逻辑,作为普通用户也值得理解:
不要用那种"每次问都重启"的应用,要用那种"能记住你"的应用。
写在最后
讲到这里,你应该把 prompt cache 这件事彻底搞明白了。
简单回顾一下:
AI 时快时慢,很多时候不是网的问题,是 cache 命中的问题 prompt cache = 大模型的"5 分钟短期记忆" 命中后省钱 90%、省时 5-6 倍 严格 prefix 匹配——多一个字都不行 5 分钟过期——隔太久要重新算 客户端自动管理 cache,普通用户不用关心 API
最后说一句。
我们活在 AI 时代,AI 越来越像人。
但"像人"的意思不是"它真的在想",而是"它的某些行为模式碰巧跟人一样"——比如它也会"短期记忆",它也会"忘了就再读一遍"。
理解这些机制,不是为了当专家。
是为了不被吓到——别人告诉你"AI 多么多么神奇"的时候,你能冷静地想:
"哦,就是个缓存嘛。"
这就是今天想跟你聊的。
下次再聊。
回复「prompt cache」,我把 Anthropic 官方文档的 cache 完整参数(breakpoint 怎么打、TTL 怎么延长、计费怎么算)整理成一份速查表发你。
夜雨聆风