主题
语言
·1 分钟阅读

提示词缓存详解:如何在 GetVibe 上测量节省

了解 GetVibe 上 OpenAI 模型的自动前缀缓存与 Claude breakpoints,保持稳定前缀,并从 usage 验证真实节省。

提示词缓存详解:如何在 GetVibe 上测量节省

编程代理和多轮助手经常重复发送系统提示、工具定义和对话前缀。模型与端点支持时,缓存可降低重复输入 token 的费用。但只有模型、端点和请求形式匹配才生效;相似文本不等于缓存命中。它不会折扣生成的输出。本文区分 OpenAI 风格的自动缓存与 Claude 的显式 breakpoint。

缓存会改变哪部分账单?

缓存读取使用缓存输入价格,而非普通输入价格。GetVibe 目录会将缓存支持和价格与模型单价一起展示。2026 年 10 月 3 日的目录快照中,GPT-6 Luna $0.0055 输入 · $0.0274 输出 每百万 token,Claude Sonnet 5.5 $0.0534 输入 · $0.2667 输出 每百万 token;页面会使用模型目录实时渲染。缓存读写费率可能因模型不同,必须查看模型页。

估算重复前缀时,可分别计算:重复输入 token × 普通输入费率,以及重复输入 token × cache-read 费率。两者差值是潜在输入节省。如果模型会对写入收费,也要扣除写入成本。最终是否省钱还要由真实 usage 验证。

OpenAI 兼容模型:保持前缀稳定

支持的 OpenAI 系列路由会自动缓存,常规 Chat Completions 无需增加 cache-control 字段。重要的是请求开头保持一致:把系统指令、固定示例和工具定义放前面,将用户特有内容放后面。不要在前缀开头写时间戳、随机 ID 或按请求变化的 feature flag。工具定义也应保持固定顺序。

继续代理会话时尽量追加新轮次,而不要改写旧历史。切换模型会使用不同缓存。如果前缀长度没有达到模型门槛,或缓存已过期,即使请求有效,也可能看不到缓存 token。

Claude:breakpoints 与 Messages 接口

Claude 缓存通过 cache-control breakpoint 启用。在 GetVibe 支持的 Claude 请求中,如果没有 breakpoint,集成可以自动加入;若自行管理,请查看最新缓存文档,并把标记放在稳定内容末尾。Claude Code 使用 Anthropic Messages,URL 和认证配置见Claude Code 指南。

curl https://getvibeapi.com/v1/messages \
  -H "x-api-key: $GETVIBE_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5.5",
    "max_tokens": 300,
    "system": [{"type":"text","text":"Stable instructions shared by every request."}],
    "messages": [{"role":"user","content":"A request-specific question."}]
  }'

示例把稳定指令放在 system 部分,把变化问题放在 user 部分。具体 breakpoint 字段应依据你的客户端和模型文档。

验证缓存命中,不要凭感觉判断

发送两次相同的长前缀,只改变短后缀。检查响应 usage:OpenAI 格式在 prompt_tokens_details.cached_tokens 报告缓存 token;Anthropic 格式有 cache read 和 cache creation 字段。dashboard usage 也能查看缓存信息。若计数一直为零,检查前缀是否完全相同、是否达到模型最小长度、模型是否支持,以及路由是否变化。

测试样本要足够长,超过模型缓存门槛。一句系统提示可能看不到区别。多次重复测试,因为缓存时效和请求间隔会影响前缀是否仍然温热。

实测节省流程

  1. 选一段在多个请求中重复使用的真实长前缀。
  2. 记录模型页当前费率和普通输入 usage。
  3. 重复调用,只改变 user suffix。
  4. 确认响应显示 cached input。
  5. 对比几次重复调用在账单中的费用。

实验时尽量保持输出长度相近,避免输出开销掩盖输入差异。不要只根据缓存倍率宣传节省;必须看到命中和计费变化。

常见未命中原因

  • 稳定指令之前插入了 timestamp 或 request ID。
  • 工具列表每次以不同顺序序列化。
  • 空格变化或历史截断方式改变了请求。
  • 中途更换模型。
  • 前缀太短或缓存窗口已过期。

缓存能降低长代理会话成本,但不能成为发送无关仓库内容的理由。先缩小提示,再缓存仍需重复的部分。实现细节见缓存实践指南和实时模型页。

Breakpoint 的位置要可复用

Messages 请求中,将固定指令和参考文档放在 system block,再把问题放在 user message。breakpoint 应位于稳定部分末尾,而不是 request-specific timestamp 后。如果有多份较长文档,可在模型支持的范围内对复用部分设置标记,并确认允许的 breakpoint 数量。

一些代理会重写或总结历史,导致序列化前缀改变。排查时可比较请求结构,但不要把私密内容写进普通日志。

核对写入费与最小长度

有些模型要求缓存前缀达到最小长度,首次写入和后续读取的费率也可能不同。短 prompt 可能不产生可见节省。查看该模型的 cache-read、cache-write 费率及最小长度,将首个写入请求和后续命中分别统计。

缓存可能在闲置后过期,且不是应用的持久存储。为了答案正确,仍需发送所需上下文,不能把缓存当作保存会话状态的数据库。

将缓存与缩短提示分开评估

删掉重复内容和缓存重复内容是两种优化。先移除过期指令、无关示例和复制的日志,再缓存留下的稳定信息。这样即使未命中,请求也更小。

改 prompt 时保持样本固定,并同时比较输出质量与缓存 usage,避免为省钱而删除模型必须的信息。

LLM prompt caching提示词缓存成本Claude cache_controlGetVibe 缓存

免费试用 GetVibe API

通过一个 OpenAI 兼容的 API 接入 GPT、Claude、Gemini 等模型,支持信用卡或加密货币支付。

相关文章

提示词缓存详解:如何在 GetVibe 上测量节省 | GetVibe API