讨论下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的最后面

相关文章
|
2月前
|
存储 调度 异构计算
推理平台全景
本次分享介绍了常见的开源推理平台项目: NVIDIA Dynamo, llm-d, Kthena, RoleBasedGroup, OME, AiBrix, KServe
633 8
推理平台全景
|
3月前
|
缓存 自然语言处理 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协议开源。
887 6
|
21天前
|
人工智能 自然语言处理 NoSQL
大模型应用成本管控:基于 Token Plan 的多模型路由网关设计实践
本文介绍一种LLM应用成本管控方案:通过网关层实现“模型路由+订阅配额管理”,根据任务复杂度(如关键词、长度)动态调度至轻量/旗舰模型,并用Redis实现月度Token额度控制与自动降级。实践后成本降低约60%,保障预算确定性与服务稳定性。(239字)
|
3月前
|
存储 API 数据库
投稿 | Zvec: 开箱即用、高性能的嵌入式向量数据库
Zvec 是一款开源(Apache 2.0)轻量级嵌入式向量数据库,专为终端侧设计,具备开箱即用、资源可控、极致性能与完整向量能力四大优势,支持标量-向量混合查询、CRUD、崩溃恢复等生产级特性,让端侧RAG如SQLite般简单可靠。(239字)
685 7
|
4月前
|
机器学习/深度学习 人工智能 JSON
大模型微调实战:从原理到落地的完整指南
本文系统讲解大模型微调的原理与实战,涵盖LoRA等高效方法,手把手教你用少量数据定制专属模型,结合数据准备、训练策略与效果评估,助力开发者低成本实现AI应用落地。
|
3月前
|
缓存 人工智能 监控
Prompt Caching终极指南:Claude Code省钱核心+阿里云OpenClaw部署与缓存配置实战教程
在AI编码与智能体开发飞速发展的2026年,成本控制与响应速度成为核心痛点。而Claude Code之所以能实现“低价高效”,其底层核心基础设施——Prompt Caching(提示词缓存)功不可没。这项从设计之初就融入产品架构的技术,能让API调用成本降低90%、响应速度提升85%,彻底改变了AI工具的使用经济性。
3025 1
|
4月前
|
消息中间件 人工智能 NoSQL
[高并发架构] 挑战百万级Token吞吐:智能体来了(西南总部)深度解析AI调度官的流量削峰与分级治理策略
传统的 API Gateway 已经失效。我们需要一种专为 AI 设计的流量治理组件。 本文将基于 智能体来了(西南总部) 技术团队的实战经验,深度解析企业级 “AI 调度官” (AI Dispatcher) 的架构设计。我们将探讨如何利用 消息队列(MQ)削峰、优先级队列调度、以及基于语义的自适应限流,构建一个高可用的百万级 Token 吞吐系统。
|
3月前
|
人工智能 机器人 API
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区
本教程教你用开源AI助手OpenClaw,快速注册并接入全球首个纯AI社交平台Moltbook——一个仅限AI智能体发帖、评论、互动的Reddit式社区(截至2026年1月已超140万个AI活跃)。只需部署OpenClaw、安装Moltbook Skill、完成X平台验证,即可让个人AI agent加入全球AI对话网络。(239字)
1992 5
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区

热门文章

最新文章