大模型服务端如何命中缓存

claude code在接入第三方大模型api时,越用越慢,token耗费剧增的根本原因就是claude code干了一件很狗的事情,它在cch请求头加上了随机数,导致第三方大模型api无法命中缓存,而anthropic自己的api则是直接忽略这个随机的cch请求头。

** 上下文缓存命中的关键是"共享的前缀"相同,而不是整个请求内容(尤其是用户的问题)相同。

这正是它能在真实应用中省钱的精髓所在:固化不变的部分,复用这部分计算,动态变化的部分每次重新计算。

下面用一个具体的例子来说明:


核心机制:前缀匹配,而非全文匹配

假设你搭建了一个"法律AI助手",它的请求结构是这样的:

复制代码
[ 固定系统提示词 (10000 tokens) ] + [ 用户的具体问题 (50 tokens) ]
  • 固定部分 (缓存目标) :你精心编写的法律角色设定、法规条文、回答格式要求等,这部分对所有用户都一模一样。
  • 动态部分 (非缓存部分) :用户问的"合同违约金上限是多少?"或"劳动仲裁流程是什么?",每个问题都不同。

开启缓存后的工作流程:

  1. 首次请求:

    • 用户A问:"合同违约金上限是多少?"
    • 整个请求变为:巨大且固定的系统提示 + "合同违约金上限是多少?"
    • 服务端发现此前缀无缓存,就完整计算了整个前缀,并生成其KV Cache缓存下来,然后继续处理用户问题。
  2. 后续请求 (缓存命中):

    • 用户B问:"劳动仲裁流程是什么?"
    • 请求变为:**完全相同**的巨大固定系统提示 + "劳动仲裁流程是什么?"
    • 服务端检查发现,前缀"巨大且固定的系统提示"与缓存完全匹配。
    • 关键步骤 :直接加载此前缀的KV Cache,完全跳过对那10000 token系统提示的计算。然后,只需计算新输入的"劳动仲裁流程是什么?"这几十个token,并立即开始生成回答。

结论:两次请求的用户问题完全不同,但都命中了缓存,因为缓存基于的是那条不变的系统提示。省下的正是那10000个token的重复计算成本和时间。


如何确保"前缀"相同且命中?

关键在于请求构造的顺序 和缓存断点的位置。

正确做法 ( ✅ ):

总是把最稳定、最共享、最长 的内容放在请求的最前面 ,并把用户相关的动态指令放在最后面。

  • 结构 :[共享文档/知识库] -> [系统提示] -> [对话历史] -> [用户新问题]
  • 如果使用Anthropic的显式缓存,你可以在系统提示结束、对话历史开始前等位置加cache_control标记,让缓存断点之前的所有内容都成为可复用的前缀。

错误做法 ( ❌ 会失效 ):

把用户特定的信息放在了最前面。

  • 结构 :[用户ID/时间戳] -> [系统提示] -> [用户问题]
  • 每个请求的[用户ID/时间戳]都不同,导致整个前缀不匹配,缓存永远无法命中,完全白费功夫。

总结一句话

上下文缓存就像一个只记得文章"开头"的记忆库。只要两篇文章的开头(前缀)一模一样,不管后边内容如何,它都能直接抄作业,省去重看开头的时间。 你的用户问题,恰恰就是那篇可以千变万化的"后边内容"。

相关推荐
七牛开发者6 小时前
从 GLM 到 GPT,HarnessPro 如何用 RSI 降低 Agent 成本
人工智能·gpt·agent·harness·rsi
跨境卫士-小汪7 小时前
TikTokShop欧洲商品接口架构调整跨境技术团队需要做好哪些准备
大数据·人工智能·新媒体运营·跨境电商·跨境·营销策略
古法老登瞎折腾8 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
康小汪8 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
收放扳机8 小时前
多机连线(In-Line)场景下,收放板机“缓存工位”的容量与架构选型参考
人工智能·科技·自动化·制造·pcb工艺
武天旭8 小时前
AI安全--AI大模型的后门攻击检测与防御
人工智能·深度学习·安全·机器学习
智能运维指南9 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
人工智能AI技术9 小时前
DeepInfer开源炸场!别再妄想个人电脑跑满血DeepSeek
人工智能
深蓝电商API9 小时前
用AI生成拟人行为:让鼠标轨迹更“有人味”
人工智能·爬虫
znnnk9 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle