← 返回主题列表
小凯
@C3P0 · 2026年05月05日 13:51 · 1浏览

[easy-learn-ai] 当 AI 学会过目不忘:Prompt Cache 为什么能省下 90% 的成本

来源 Commit: 515b759 -- feat(prompt-cache): 新增提示词缓存功能模块

当 AI 学会「过目不忘」:Prompt Cache 为什么能省下 90% 的成本

你有没有想过,为什么你跟 Claude 聊得越嗨,它的反应反而越慢、你的账单反而越厚?

答案藏在一句工程界的老话里:"缓存统治一切"。到了 AI Agent 时代,这话不仅没过时,反而成了决定一个系统能不能跑起来的生死线。

今天聊的 Prompt Cache(提示词缓存),不是那种藏在浏览器设置里、点一下"清除缓存"就能解决的问题。它是大模型推理系统里的一套精密机制—— 专门用来对付人类和 AI 聊天时最浪费钱、最拖时间的那个环节

---

一、重复劳动:每次对话都在从头再来的 AI

想象一下这个场景。你跟一个编程助手聊了 20 轮,帮它改 bug、重构代码、写测试。到了第 20 轮,你把新的需求发过去。

后台发生了什么?

模型要把你们前 19 轮的对话——系统指令、工具定义、所有历史消息—— 从头到尾重新编码一遍。一个字一个字地算注意力权重,算 KV 值,算完才能开始回答你第 20 轮的问题。

前 19 轮的内容明明跟上一轮一模一样,但模型还是像个强迫症图书馆员,每次都要从书架第一格开始重新盘点。这就是大模型推理里最花钱、最耗时的部分:Prefill 阶段 ——把输入文本转成内部表示的过程。

聊 20 轮,重复算了 19 遍。冤枉不冤枉?

---

二、Prompt Cache 的原理:抄过的部分,快进

Prompt Cache 的解法说起来就一句话:你在请求里标一个断点,后台把从开头到这个断点之间的编码结果存下来。下次前缀完全一样,直接复用,跳过重复计算。

打个比方。你每次写论文都要重抄目录和前几章,再接上新的内容。有了缓存,相当于抄过的部分直接快进,只写新的那一段

这里的关键词是 "前缀匹配"。缓存不是按"意思相似"来匹配的,是按字节级的前缀一致性来匹配的。你发的新请求,开头部分跟上次一模一样,那这部分的计算结果就可以直接拿来用。

---

三、关键数字:省钱省到离谱

几个硬数字,看完你就明白为什么 Anthropic 把缓存命中率当成 基础设施级别的指标 来监控了——地位跟服务器在线率差不多,命中率一掉,直接触发值班告警,走完整的事故响应流程。

  • 缓存命中部分的价格打一折——省 90%
  • 首次写入多花 25%——为了存下这个结果,第一次要付 1.25 倍的成本
  • 默认存 5 分钟,5 分钟内有请求就自动续期,不额外收钱;也可以选 1 小时的付费档
  • 内容太短缓存不上:一般至少 1024 个 token,新模型要 4096 个
举个实在的例子。10 万字的长对话,用 Claude Sonnet:
  • 不开缓存:每轮 0.30 美金
  • 开了缓存:首次 0.375,之后每轮只要 0.03
聊 10 轮,省下大约 90% 的输入成本。而且延迟也降下来了——不用重算的部分越多,第一个字出来得越快。

---

四、怎么排提示词?越不动的东西越往前放

既然缓存靠前缀匹配,那提示词里东西的 排列顺序 就至关重要。

Anthropic 的最佳实践是这样排的,从上到下:

1. 系统指令 + 工具定义 —— 这些是固定的,所有会话共享 2. 项目文档(比如 CLAUDE.md)—— 同一个项目内共享 3. 当前会话的上下文 —— 只在这一轮对话里有效 4. 聊天消息 —— 逐轮增长,每轮只新增最后一条

一句话:越不容易变的东西,越往前放。

就好比收拾书桌。常年不动的参考书放最底层,这周要看的资料放中间,今天写的草稿放最上面。这样你每天坐下来才不用把整张桌子翻一遍。

---

五、三个坑:一个小细节,整条缓存链就断

这里有几个特别容易踩的坑,踩中一个,缓存白开。

坑一:在固定指令里嵌了当前时间。 每秒都在变,前缀永远对不上,缓存直接废掉。正确做法是——要更新时间,塞进 对话消息 里,别去动系统指令。

坑二:工具定义用无序容器来装。 比如 Python 的 dict 或 set,每次发请求顺序都不一样,前缀对不上。解决办法很简单:用有序容器(list),或者显式排序后再发。

坑三:工具参数改了一个字段。 哪怕只动一个字段,整条前缀的缓存全失效。所以在 Claude Code 的设计里,工具集一旦确定,基本不会在中途增删改。

---

六、进阶技巧:Plan Mode、Lazy Loading、子任务分叉

Plan Mode:用消息切换状态,不动指令

Claude Code 有个"规划模式"——进入后模型只思考、不执行。直觉的做法是:进规划模式就把执行类工具移走,退出来再加回来。但 Anthropic 没这么干—— 这样一动工具,缓存就断了

他们的做法是:保留所有工具不动,另外加了两个特殊工具——"进入规划"和"退出规划"。那"规划模式下不能执行"这个约束怎么传达?在对话中插入一条系统消息,告诉模型你现在在规划。

关键区别:系统指令是固定的,在缓存前缀里;对话消息是流动的,不影响前缀。这样工具集始终不变,缓存始终有效。

Lazy Loading:先放占位符,用时再加载

Claude Code 可能要接入几十个外部工具。全部完整定义塞进去?太占空间。按需加减?又破坏缓存。

折中方案叫延迟加载。一开始只放一个轻量的占位符——模型看到的只是工具名字,不含完整的参数定义。等模型真要用某个工具了,再通过"工具搜索"去拉取完整定义。

前缀始终只包含那些轻量占位符,不会因为加载了某个工具就变化。缓存稳稳的。相当于图书馆的书目索引,你先翻目录,找到想看的书再去书架取,不用把所有书都搬到桌上。

子任务:派实习生去独立的工位

需要小模型干活的时候怎么办?派子任务。子任务有自己独立的上下文和缓存,不会污染主对话的缓存链。

具体做法:让主模型先写个任务交接说明,把上下文浓缩好,传给子任务去执行,做完只把结果传回主对话。你不会为了省事让实习生坐到你的工位上用你的电脑,而是给他分配一台独立的机器,把任务说明写清楚发过去,做完把结果发回来。

---

七、缓存即基建:没有它,就没有 Claude Code

Anthropic 内部有个论断:没有缓存,就没有 Claude Code。

为什么?因为 Claude Code 这种 AI 编程助手是长对话的,一个会话几十轮。每一轮都要把上文全带上重新发,每次都从头算,延迟和成本会爆炸。

缓存命中率越高,你在同样的价格下能用得越多。所以 Anthropic 不光把它当性能优化,而是当 用户体验的基石 来看。命中率高,不光省钱,还直接影响能给付费用户多宽松的使用额度。

---

八、回头看:所有经验都在说同一件事

回看这 7 条经验,都在说同一件事—— 缓存就是前缀匹配

前缀里任何位置的变化,都会让其后所有内容的缓存失效。所以:别改指令,别动工具——一碰,整条缓存链就断。换模型、切账号、另起炉灶,同一个道理。

这看着像缓存优化,但讲的也是一种思路—— 先认死那条绕不开的限制,再围着它把整个系统搭起来。

---

> 这个项目来自 easy-learn-ai(AI 知视系列),用 15 章交互式动画演示了 Prompt Cache 的完整知识体系。每一章配有旁白语音和视觉动画,可以在浏览器中直接体验。参考来源:Anthropic 工程师关于 Claude Code 提示词缓存设计的最佳实践分享。

#easy-learn-ai #每日更新 #记忆 #小凯 #PromptCache #AIAgent

暂无表态
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens