讨论下llm的prefix caching机制

简介: 本文探讨LLM推理中Prefix Caching机制的原理与实践:解释为何将动态内容(如React循环中的tool call结果)放在system prompt会破坏缓存命中,导致成本激增;强调应将变量部分置于user prompt末尾,以最大化复用system+固定user前缀的KV缓存,显著降本提效

为什么要写这个

前段时间跟别人讨论起做过的一些agent项目,他问我:你把llm执行react循环过程中的tool call和结果都存在哪?我说放在了system prompt里面。他说这就不太专业了,会导致请求走不了模型的kv cache,增加成本。我很惊讶,于是赶紧来学习了一下


prefix caching机制


1. 为什么要走缓存

一般大模型提供商对输入token都会有两个价格,一个是正常价格,这部分是不命中缓存的,另一个是缓存命中价格。一般后者的价格远低于前者,以claude opus为例,缓存命中部分的token价格仅为1/10

image.png


2. LLM 视角下的“扁平化”输入

当你通过 OpenAI Compatible API 发送如下格式的请求时:

[
  {"role": "system", "content": "你是一个有用的助手...(此处省略2000字规则)"},
  {"role": "user", "content": "请帮我分析这份文档...(此处省略5000字文档)"},
  {"role": "user", "content": "总结一下第一段。"}
]

在大模型的推理引擎内部,这一串消息会被转换成一个长字符串(Token 序列),类似于:

[System_Start]你是一个...[System_End][User_Start]请帮我...[User_End]总结一下...


3.Prefix Caching 的工作原理:最长公共前缀

Prefix Caching 的核心逻辑是 Radix Trie(基数树) 或类似的哈希匹配机制。它只关心:“从第一个 Token 开始,这新的请求和之前的请求有多少是重合的?”

因此,缓存是也就是这一连串 Token 的顺序决定的。


场景 A:重复内容在 System Prompt

- 请求 1: [System: A] + [User: B]

- 请求 2: [System: A] + [User: C]

- 结果: 推理引擎发现 [System: A] 这一段在缓存里有,直接复用 KV Cache。

- 命中率: System Prompt 部分被缓存。


场景 B:重复内容在 User Prompt,且 System Prompt 也相同

- 请求 1: [System: A] + [User: LongContext + Question 1]

- 请求 2: [System: A] + [User: LongContext + Question 2]

- 结果: 推理引擎发现 [System: A] + [User: LongContext] 这一长串都在缓存里。

- 命中率: System Prompt 加上 User Prompt 的前半部分都会被缓存。这是最高效的用法。


场景 C:System Prompt 变了(这是最大的坑)

- 请求 1: [System: A] + [User: LongContext]

- 请求 2: [System: B] + [User: LongContext]

- 结果: 因为序列是从头开始匹配的,一旦开头的 System Prompt 变了(A 变成了 B),后面的 User Prompt 即使完全一样,也无法利用 Prefix Caching。

- 原因: Transformer 的注意力机制是因果的(Causal),后面的 Token 的 KV 值依赖于前面所有 Token 的计算结果。前面的变了,后面的计算结果全都要变。


回到我前面的场景,如果我把变量部分,也就是每轮react产生的工具调用放到system prompt中,那么变量后面的部分全部都是无法走缓存的。所以总的来说:prompt中的变量部分比如每轮产生的工具结果/思考/对话内容,都尽可能放在user-prompt的最后面

相关文章
|
1月前
|
缓存 自然语言处理 API
美团开源 LongCat-Flash-Lite:实现轻量化 MoE 高效推理
美团LongCat团队开源68.5B MoE大模型LongCat-Flash-Lite,创新采用N-gram Embedding架构,推理仅激活2.9B–4.5B参数,却在Agent工具调用、代码生成等任务上大幅领先;支持256K长上下文,API生成速度达500–700 token/s,MIT协议开源。
389 6
|
1月前
|
存储 API 数据库
投稿 | Zvec: 开箱即用、高性能的嵌入式向量数据库
Zvec 是一款开源(Apache 2.0)轻量级嵌入式向量数据库,专为终端侧设计,具备开箱即用、资源可控、极致性能与完整向量能力四大优势,支持标量-向量混合查询、CRUD、崩溃恢复等生产级特性,让端侧RAG如SQLite般简单可靠。(239字)
341 7
|
1月前
|
边缘计算 人工智能 物联网
Ultralytics YOLO26来啦!5种尺寸全家桶,速度与精度兼顾
Ultralytics发布YOLO26,系列迄今最先进、易部署的模型,支持分类、检测、分割、姿态估计等多任务。五种尺寸灵活适配边缘设备,CPU推理提速43%,首创无NMS端到端推理,移除DFL提升兼容性,已上架魔搭社区。(239字)
272 13
|
27天前
|
数据采集 人工智能 达摩院
达摩院开源RynnBrain:首个支持移动操作的具身大脑基础模型
达摩院发布首个可移动操作的具身基础模型RynnBrain,首创时空记忆与物理空间推理能力,支持视频/图像/文本多模态输入及区域、轨迹等具身输出。开源MOE架构RynnBrain-30B-A3B(仅3B激活参数),在16项基准全面SOTA,并推出全新评测集RynnBrain-Bench。
285 8
|
1月前
|
JSON 文字识别 API
百度文心开源0.9B参数 PaddleOCR-VL-1.5,全球首个支持异形框定位的文档解析模型!
百度文心开源新一代文档解析模型PaddleOCR-VL-1.5:仅0.9B参数,在OmniDocBench v1.5达94.5%精度,全球首个支持异形框定位,精准识别倾斜、弯折、反光等“歪文档”,集成印章识别、多语种(含藏语/孟加拉语)及古籍解析能力,推理速度超MinerU2.5达43%。(239字)
435 2
|
2月前
|
机器学习/深度学习 人工智能 JSON
大模型微调实战:从原理到落地的完整指南
本文系统讲解大模型微调的原理与实战,涵盖LoRA等高效方法,手把手教你用少量数据定制专属模型,结合数据准备、训练策略与效果评估,助力开发者低成本实现AI应用落地。
|
2月前
|
编解码 物联网 测试技术
FLUX.2-Klein 4B/9B开源:亚秒级统一图像生成与编辑
Black Forest Labs开源FLUX.2 [klein]模型家族,兼具文生图、图像编辑与多参考生成能力,端到端推理低至0.5秒,4B版本仅需13GB显存,支持消费级GPU高效运行,量化后速度提升最高2.7倍,Apache 2.0许可商用友好。
1454 1
|
1月前
|
人工智能 机器人 API
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区
本教程教你用开源AI助手OpenClaw,快速注册并接入全球首个纯AI社交平台Moltbook——一个仅限AI智能体发帖、评论、互动的Reddit式社区(截至2026年1月已超140万个AI活跃)。只需部署OpenClaw、安装Moltbook Skill、完成X平台验证,即可让个人AI agent加入全球AI对话网络。(239字)
1048 5
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区
|
1月前
|
人工智能 自然语言处理 前端开发
写了10万行代码,却毁在配色上?这套指令让后端直男秒变设计总监
这是一篇专为后端及全栈开发者定制的实用指南,旨在解决开发者“代码强但审美弱”的痛点。文章提供了一套核心AI指令,能将DeepSeek等AI变成专业UI设计顾问,快速生成符合大厂规范(Design Token)的配色体系。通过一个后台管理系统的实战案例,演示了如何用AI将“土味”界面瞬间升级为专业级UI,让开发者无需学习设计理论也能搞定高颜值配色。
196 4
|
27天前
|
人工智能 API 对象存储
Seedance vs Sora vs Kling:AI 视频生成模型深度对比
本文深度解析Sora、Kling、Runway Gen-3、Seedance等主流文生视频模型的底层原理、性能差异与生产适配性,直击开发者选型难、API碎片化、成本失控三大痛点,提供统一接入方案、智能路由策略与高并发部署实战指南。(239字)

热门文章

最新文章