首页 › cost-hacks › 长prompt每轮重算:原生缓存白送九折

你写的 Agent、做的 RAG、跑的批量翻译,九成 input token 都在被反复重新计费。系统提示词、工具定义表、few-shot 样例——这些"死内容"每一轮对话都在原价重发一遍,而你明明可以只付一折。问题在于:大多数人把"缓存"等同于自己搭一套 GPTCache 语义缓存,却不知道 Anthropic、OpenAI、Google、DeepSeek 早就把"原生 prompt 缓存"做成了一行参数甚至默认开启,命中率高的账单能直接砍掉八到九成 input 成本,零额外基建。这一篇拆的就是这个被集体忽略的九折福利。

一、先分清两种缓存,别再混为一谈

国内技术圈一说"省 API 钱",张口就是 GPTCache、语义缓存、向量相似度命中。这套东西的问题在于:它是模糊匹配,问题略有不同就 miss,更危险的是可能把相似但不同的请求错误地复用答案,RAG 场景里直接给你编一个错答案。

原生 prompt 缓存是另一回事——它是确定性精确前缀匹配:provider 在自己那端把请求开头的 token 序列缓存起来,下次开头一模一样就打折读取,结果完全不变,零幻觉风险。两者并存不冲突,但省钱逻辑完全不同。

flowchart TD
    A[新请求进来] --> B{前缀是否命中<br/>provider 侧缓存?}
    B -->|命中 HIT| C[按 0.1x 读取<br/>省 90% input]
    B -->|未命中 MISS| D[按 1.25x 写入缓存<br/>贵 25%]
    C --> E[刷新 TTL<br/>5分钟或1小时]
    D --> E
    E --> F[返回结果<br/>内容与不缓存时完全一致]
    G[语义缓存 GPTCache] -.->|模糊匹配 有幻觉风险| H[不推荐替代原生缓存]

二、四大 provider 的原生缓存定价对比(截至 2026 年中公开文档)

平台 触发方式 缓存读价格 缓存写价格 最小可缓存 TTL
Anthropic Claude 手动加 cache_control,最多 4 个断点 0.1x(省90%) 1.25x(1小时档 2x) 1024 token(Haiku 2048) 5 分钟 / 1 小时
OpenAI GPT 自动,无需改代码 0.5x(省50%) 1.0x(无额外费) 1024 token 5–10 分钟,命中即刷新
Google Gemini 隐式 + 显式 Context Cache API 折扣价(约 0.25x) 显式缓存按存储计费 2048 token 1 小时起,可自定义
DeepSeek 默认开启 命中极低(约 0.1x,部分时段更低) 1.0x 256 token 自动管理

信息差就在这张表里:OpenAI 和 DeepSeek 是默认开的,你以为自己没做缓存,其实账单上已经有 50% 的折扣在偷偷生效——前提是你没把前缀搞坏。而 Anthropic 必须你主动加 cache_control,不加就是一分不省。

三、真实账单拆解:一个 Agent 每轮省下 84%

场景:你用 Claude Sonnet(input 约 $3/M token)跑一个带 8 个工具的 Agent。工具 schema + 系统提示词 + few-shot = 大约 5000 token 的"死前缀"。一次对话平均 20 轮。

按一个月 10 万次这种对话算,光是这一处就是 $30,000 → $4,700 的差距。这不是"优化技巧",这是在补 provider 白送的补贴。

四、触发它的五个关键开关(能立刻动手)

开关 1:静态内容前置,动态内容后置。 这是最容易被忽略、杀伤力最大的一条。OpenAI 的自动缓存要求前缀逐字节相同。很多人喜欢在 system prompt 开头塞个"当前时间:2026-06-19"或 user_id,这一行只要变了一个字符,后面一万 token 全部 miss。正确做法:把系统提示、工具定义、固定规则放在最前面,时间戳、用户输入、session 变量放最后。

开关 2:Anthropic 手动打 cache_control 断点。 在 messages 的内容块上加 {"cache_control": {"type": "ephemeral"}},最多 4 个。最佳位置是系统提示结尾、工具定义结尾、长文档结尾。一个断点能覆盖到它之前的所有 token。

开关 3:Agent 循环里缓存工具表。 多轮工具调用时,工具定义作为前缀每轮都重发。这是原生缓存的主战场——一次写入,整个对话期间每轮按一折读。MCP Server 接一堆工具后尤其明显。

开关 4:1 小时 TTL 用在"几乎不变"的内容上。 默认 5 分钟 TTL 适合连续对话;但如果你有一个 10 万 token 的产品手册、代码库,用户隔三差五才问一句,5 分钟根本撑不住。用 cache_control 的 1 小时档(写价 2x),即便写一次贵一倍,只要这一天里被读 3 次以上就回本。知识库问答、代码库助手是典型场景。

开关 5:别盲目缓存,算清写入回本点。 缓存写比原价贵 25%(1 小时档贵一倍)。判断标准:这段前缀在 TTL 内至少会被读取 1 次就值得 5 分钟档;1 小时档需要 3 次以上命中才回本。一次性提问的内容千万别加缓存标记,否则纯亏。

五、信息差总结

你以为的 别人已经知道的
省 API 钱 = 自己搭 GPTCache 语义缓存 主流 provider 有原生缓存,确定性命中、零幻觉
缓存要额外搭基建 OpenAI/DeepSeek 默认开启,Anthropic 加一行参数
多轮 Agent 的工具定义只能反复全价付 工具表是最该缓存的前缀,每轮砍九成
system prompt 开头放时间戳很贴心 一个字符变动让整段缓存全 miss
缓存越多越好 写入有溢价,TTL 内命中不足就纯亏

六、行动指南(今晚就能做)

  1. 打开你的 OpenAI 账单后台看 cached_tokens 字段——大概率已经有缓存命中了,记录当前比率作为基线。
  2. 排查所有 prompt 模板,把动态变量(时间、ID、随机串)从开头挪到结尾,一周后对比 cached_tokens 占比。
  3. 在 Anthropic 调用里给 system prompt 和 tools 两处加 cache_control 断点,长对话场景立即生效。
  4. 知识库/代码库问答切到 1 小时 TTL,写个脚本统计单段前缀的日命中次数,低于 3 次就关掉。
  5. 监控缓存命中率,正常 Agent 循环应做到 70% 以上 input 命中,低于这个数说明前缀被你污染了。

参考来源

定价数字均来自各 provider 公开文档,各档位价格可能随版本调整,落地前请以官方定价页为准。本文撰写时联网检索受周期额度限制(将于 2026-07-18 重置),未能拉取最新实时报价,核心机制与折扣比例为长期稳定的公开特性。


本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入