
前言
随着 AI 应用的普及,大语言模型 (LLM) 已经成了基础设施,不管是帮你写代码的 Copilot,还是做知识库问答的系统。但应用一上规模,一个很现实的问题就摆在面前:把一堆重复的指令反反复复发给模型,账单上的 Token 开销是在成倍往上涨的。
看看现在的生产级 AI 系统,架构里通常都塞满了长长的系统设定 (System prompt) 、复杂的工具说明 (Tool schemas) 、从知识库里检索出来的文档 (RAG) 还有之前的历史对话。光是这些前置条件,每次请求随便就能凑满几千个 Token。每天处理上百万次请求的应用,如果每次都在让模型重复读这些没变过的内容,无疑是在烧钱。
为了解决这个吞金兽,Prompt Caching(提示词缓存) 技术出现了。现在 Anthropic 和 OpenAI 这些头部大厂的原生 API 都已经支持。
这门技术说白了就是把请求里重复的 Prompt 片段缓存下来,下次直接用。这不仅能明显降低响应延迟,最关键的是把 Token 成本给打下来了。这篇文章,我们来聊聊:
- Prompt Caching 到底是什么,它是怎么运作的?
- Anthropic 和 OpenAI 在缓存实现上的差异是什么?
- 所谓的降本,究竟能省多少钱?
- 哪些实际业务场景最吃这套技术?
- 一个能在生产环境里把 Token 成本干掉 70%-90% 的架构到底该长什么样。
什么是 Prompt Caching?
它就是一种缓存机制。当发给模型的多次请求中,有大段相同内容的 Prompt 时,系统会把它们存起来复用,而不是每次都让模型重算一遍。
你想,系统指令、工具格式、边界守则还有那些业务文档平时又不会轻易变。老是重复发送既浪费了算力,又增加了成本。Prompt Caching 就分三步把这事解决了:
- 存下之前已经算过的前置 Prompt 片段。
- 遇到有同样片段的新请求,直接提出来用。
- 这些被复用的 Token,结算时给你打个大折扣。
就这么简单。对于那种“长篇大论的静态 Prompt”配合“一两句用户短提问”的业务系统,这绝对是降维打击。
Prompt Caching 的工作原理
从技术层面看,核心动作就是:识别出不同请求里那些完全相同的“前缀 Tokens (prefix tokens)”。
要是新来的请求,开头一连串 Token 跟之前某次请求的开头完全对得上,服务商就不会再费劲算一遍,而是直接拉取之前算好的状态(也就是 KV Cache)拿去复用。
整个工作流程如下:
- 第一次请求:老老实实读完整个 Prompt,算完之后把这些“静态前缀”扔进缓存池。
- 后来的请求:
- 模型一瞄,哎这前缀眼熟。
- 直接把缓存里的 Token 序列调出来。
- 算力这时候才启动,只去跑那些新加进去的动态 Token。

LLM 跑长文本是最吃显存和算力的。把算好的前缀直接匹配复用,就等于生生省下了这部分吃算力的大头。
能带来什么好处?
在正儿八经的商业项目里,Prompt Caching 给的好处是立竿见影的:
1. 成本断崖式下跌
这招能把 LLM 的开销砍掉一大截。被缓存命中的 Token 享受的是超低折扣价。打个比方(以最新的 GPT 定价参考),标准的输入 Token 大概是 1.25 刀 / 百万 Token,但要是走缓存,直接跌到 0.125 刀/ 百万 Token,整整便宜了 10 倍。
2. 响应变得飞快 (低 TTFT)
前面那长长一串文本模型不用再一行行看了,首字吐出来的时间自然就快了。如果你做的是聊天机器人、代码 Copilot 或者那种随问随答的文档工具,用户手感会好很多。
3. 抗压能力更强
流量一上万,缓存的威力就全出来了。几万次请求不需要底层模型去重复跑那些冗余计算,这让规模化的 AI 应用在商业算账时终于能松一口气了。
谁最需要它?
业界玩得最溜的那拨人,像 ChatGPT、Cursor、Perplexity AI 还有 Notion AI,其实后台早就把这套吃透了。两个最典型的场景:
检索增强生成 (RAG)
RAG 系统得从知识库里掏文档塞进 Prompt 喂给模型。如果被高频检索的总是那么几份文档(比如企业内网支持、产品文档检索),上了缓存之后单次调用的成本呈一条直线往下降。
智能排障系统 (Troubleshooting)
像那种运维环境下的得力助手,底下往往垫着上万字的排障手册和长长一串工具清单。这类发个起步价就几千 Token 的系统指令,简直就是给 Caching 实战量身定做的。
拆解一个生产环境下的缓存架构
现在主流的做法是搞“动静分离”。路子糙但管用:把那些又长又死板的文本,一股脑全顶在 Prompt 最前面,做成一个又大又容易被命中的“缓存前缀 (Cached Prefix)”。
A 面:静态前缀(Cached Prefix)
保持死磕一致,位置永远置顶:
- 系统核心设定 (System prompt)
- 可调用工具表 (Tool schemas)
- 长文本业务知识库 (RAG documents)
B 面:动态部分(Dynamic Portion)
每次都在变化的活水内容,放在最后:
- 用户的提问 (User query)
- 先前滑动的多轮对话上下文 (Conversation history)
- 工具返回的具体结果 (Tool outputs)
算笔账:有缓存 vs 没缓存
拿一个需要看 Kubernetes 故障的线上助手来扒一扒,一轮对话的体量差不多长这样:
- 系统指令和定义好的工具:2,500 Token (死的不变)
- K8s 补充的文档:3,500 Token (死的不变)
- 历史记录和这次的问题:350 Token (活的变的)
好,这笔请求甩出去是 6350 个输入 Token,不过其中 6000 个是“可缓存”的。假设模型叭叭叭回了 200 个 Token。
(价格大概估一下:输入 1.25 刀/M, 输出 10 刀/M,缓存命中价 0.125 刀/M)
场景 1:无缓存裸奔
- 请求成本 = (6,350 × 1.25 刀/M) + (200 × 10 刀/M) = $0.00994 / 次
场景 2:跑了 Prompt Caching 后
- 前缀缓存成本:6,000 × 0.125 刀/M = 0.00075 刀
- 动态处理成本:350 × 1.25 刀/M = 0.00044 刀
- 模型输出成本:0.002 刀
- 请求成本 = $0.00319 / 次
结论出来了: 单发请求的账单硬生生被砍掉了 68%。对于那种一个月有 100 万次调用的系统来说,没优化的账单得逼近 30 万美金,而一招精准的缓存部署直接把它拍在 10 万美金以内。工程的底子稳了,那就是实打实的利润。
在 Anthropic 上怎么用 Prompt Caching
Anthropic 走的是**“听你的” (明确控制)**路线。写代码的时候,你得手动塞个 cache_control 参数,划个圈告诉它“这块地盘我要缓存”。
1 | { |
不过它有些死规矩:
- 门槛限制:标记缓存的这块内容,最小不能低于 1024 Token。
- **过期时间 (TTL)**:默认挺短的,就 5 分钟,你可以手动拉长到 1 小时。
- 打断点:单次请求里最多只认你 4 个缓存断点。
- 收费讲究:Anthropic 存新缓存 (Cache writes) 时得加收 25% 的溢价;但如果后来命中了缓存 (Cache hits) 的话,那块只收底价的 10%。
在 OpenAI 上怎么用 Prompt Caching
OpenAI 就有点不一样了,它属于**“我来搞定” (隐式自动化)**类型。
你不用手动加啥强制参数,系统自己有个黑盒在后端跑,属于尽力而为。要是碰到一样的,默认就给你留存几分钟。
但要是你想在工程上更有把握点,可以往参数里塞 prompt_cache_key 和 prompt_cache_retention 这俩标签:
1 | { |
- **
prompt_cache_key**:你可以把特定的业务甚至单个大客户单独拎出来设个 key,并发高的时候命中率更稳。 - **
prompt_cache_retention**:要是你选了extended(强力留存),对那种长尾流量多或者前缀特别长的业务就很友好。
当你看着 API 吐回来的包里写着:
1 | "input_tokens_details": { |
这事儿就算成了。
写在最后
这年头,做 API 调用或者接大厂云服务(不管直连还是走云代理商),这昂贵的 Token 可都是按量烧的。熟练掌握不管是隐式的还是明给的缓存参数,紧盯 Token 回执报告,这已经成了产品开发的基础功。
就像开头算的那笔账,做个简单的动静分离架构,就能眼见为实地抹掉 70-90% 的请求负担。大家都在卷 AI 落地的生存力,上 Prompt Caching 根本不是拿来给 PPT 贴金的,这就是能让团队活久一点的基建底座。
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章