Prompt 缓存,一次讲明白

news2026/5/22 3:32:50
每当一个 AI Agent 往前走一步它其实都在交一笔税。它会重新读取所有内容。系统提示词。 工具定义。 项目上下文。 三轮前已经加载过的内容。每一轮都重新读一遍。这就是context tax。对长时间运行的 Agent 工作流来说它往往是整个 AI 基础设施里最贵的一项开销。算一下就很直观一个 20,000 token 的 system prompt如果跑 50 轮就等于 100 万 token 的重复计算。你为它付了钱但它没有创造任何新价值。解决办法就是prompt caching。但想真正用好它你得先知道底层到底发生了什么。先分清什么会变什么不会变优化 prompt caching 之前先要看懂一个 Agent 的上下文结构。每次请求里其实都有两部分。第一部分是static prefix。它包括系统指令、工具定义、项目上下文、行为规范。这些内容在同一个 session 里基本不变。第二部分是dynamic tail。它包括用户消息、工具输出、终端观察结果。这部分每次请求都不同并且会随着对话推进不断增长。这个区别非常关键。真正被反复浪费计算的是 static prefix。 真正需要重新计算的只有 dynamic tail。Prompt caching 的作用就是把 static prefix 的数学状态缓存下来。后续请求如果前缀一样就不用再重新计算直接从缓存读取。你只需要为这部分前缀处理付一次钱。后面每一轮都相当于从内存里读。为什么它有效要理解 prompt caching得先知道模型读 prompt 时做了什么。一次 LLM 推理大致有两个阶段。分享一个正版GPT5.5 目前 0.2 倍率, https://api.aidazhi.com/注册后把用户名发到私信里面即可帮领 5 美元测试额度。阶段1Prefill模型会处理完整输入 prompt。这是最慢、最贵的部分。因为它要对上下文里的每个 token 做大量矩阵计算读取所有内容并建立内部表示。这一步是 compute-bound也就是主要受计算量限制。阶段2Decode模型开始一个 token 一个 token 地生成输出。这一步更偏 memory-bound。因为模型主要是在读取之前算好的状态而不是反复做重计算。在 prefill 阶段Transformer 会为每个 token 生成三个向量Query、Key、Value。注意关键点Key 和 Value 只依赖它们之前的 token。也就是说只要某个前缀内容不变它对应的 Key-Value 张量就不需要重新算。没有缓存时请求结束后这些 Key-Value 张量会被扔掉。下一次请求来了又要把同样的 20,000 token 从头算一遍。KV caching 就是把这些张量存起来。基础设施会根据输入文本的加密哈希来索引它们。下一次请求如果前缀相同哈希匹配就能直接取回张量跳过重复计算。这会把重复前缀带来的计算成本大幅压下去。对一个 20,000 token 前缀、重复 50 轮的工作流来说节省非常可观。经济账怎么算Prompt caching 真正重要是因为它直接改变成本结构。以 Anthropic 的定价逻辑为例有三点要记住Cache read 大约是基础输入价格的 10%相当于缓存读取 token 打 1 折。 Cache write 比基础输入价格贵 25%因为要存储 KV 张量。 1 小时扩展缓存大约是基础价格的 2 倍。所以缓存不是永远自动划算。它成立的前提是cache hit rate 要足够高。这也是 Claude Code 的重点。Claude Code30分钟会话怎么省钱Claude Code 的设计目标很清楚让缓存一直保持热的。看一个典型 30 分钟编码 session。第0分钟Session 开始Claude Code 会加载 system prompt、工具定义还会读取项目根目录里的CLAUDE.md了解代码库和约定。这部分经常超过 20,000 token。这是整个 session 最贵的一刻因为所有 token 都是新的。但好消息是这笔钱只付一次。第1到5分钟第一次指令你输入“看一下 auth 模块给我一些改进建议。”Claude Code 会派出 Explore Subagent。它会浏览代码库、打开文件、执行 grep、理解相关代码。这些新内容会被追加到 dynamic tail。但那 20,000 token 的静态基础上下文已经进缓存了。后续每轮都可以按缓存读取价格来算。第6到15分钟深入工作Plan Subagent 拿到 Explore Subagent 的发现。Claude Code 不会把原始结果全量塞过去因为那会让 dynamic tail 暴涨。它会传递简洁总结让后缀保持可控。Planner 生成实施计划你审核后批准然后 Claude Code 开始修改代码。这个循环里的每一轮都会从缓存读取那 20,000 token 的前缀。而每一次 cache hit都会刷新 TTL让缓存继续保持热状态。第16到25分钟迭代修改你要求调整。Claude Code 修改方案。更多工具调用更多终端输出。dynamic tail 在增长但它代表的是这个 session 里真正新增的内容。此时总处理 token 可能已经达到几十万。但基础的 20,000 token一直是在缓存里反复读取。第28分钟查看成本如果没有缓存这种 session 很容易超过 200 万 token。按 Sonnet 4.5 价格大概会到 6 美元左右。有缓存后大量 token 都以低价 cache read 计费只有新的 dynamic tail 需要新计算。实际中单个任务能看到 80% 以上成本下降。如果再乘以每天所有用户、所有 session这就是巨大的基础设施成本差距。最容易踩坑的规则Prompt caching 最反直觉的地方是1 2 3。但2 1是 cache miss。为什么因为缓存匹配靠 prompt 的哈希。只要顺序变了哪怕内容一样哈希也会变。哈希一变缓存就对不上整个前缀要重新计算。所以要记住三条规则。第一不要在 session 中途增删工具。工具定义属于缓存前缀。你改了工具后面的缓存基本就废了。第二不要中途切换模型。缓存是和模型绑定的。你换成更便宜的模型也要重建整段缓存。第三不要通过修改 prefix 来改变状态。Claude Code 的做法是把状态提醒加到下一条用户消息里而不是改系统前缀。这样 prefix 不变缓存还能继续命中。你自己做 Agent 时怎么用如果你在做自己的 Agent结构可以这样安排最顶部放 system instructions 和规则。中途不要改。 提前加载所有需要用到的 tools不要临时增删。 然后放检索到的上下文和文档在 session 内尽量保持稳定。 底部放对话历史和工具输出。开启 auto-caching 后缓存断点会随着对话推进自动前移。Anthropic 已经在 API 里加入 auto-caching所以你也可以为自己的 Agent 使用类似方式。没有 auto-caching 时你需要自己记住 token 边界。边界错了就吃不到缓存。如果需要为了上下文限制做压缩也要用 cache-safe forking。也就是保持相同 system prompt、tools 和 conversation然后把 compaction 作为一条新消息追加进去。这样压缩请求看起来几乎和上一轮一样缓存前缀还能继续复用。真正按新 token 计费的只有那条压缩指令。怎么判断缓存有没有生效看 API 响应里的三个字段cache_creation_input_tokens写入缓存的 token。cache_read_input_tokens从缓存读取的 token。input_tokens正常处理的输入 token。你的缓存效率可以看 read tokens 和 creation tokens 的比例。这个指标应该像 uptime 一样持续监控。因为它直接影响成本。关键结论Prompt caching 不是一个“打开就完事”的功能。它是一种架构纪律。Claude Code 是一个很好的例子通过让前缀稳定、工具稳定、上下文结构稳定它能把 cache hit rate 做到 92%成本降低 81%。如果你在做 Agent这就是蓝图。Context tax 一定存在。区别只在于你是一直为它付钱还是从架构上把它消掉。最后精通 React 面试从零到中高级(针对面试回答)CSS终极指南Vue 设计模式实战指南20个前端开发者必备的响应式布局深入React:从基础到最佳实践完整攻略python 技巧精讲React Hook 深入浅出CSS技巧与案例详解vue2与vue3技巧合集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2633501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…