缓存的工作方式
缓存基于前缀匹配:系统存储已处理的 token,并在后续请求以相同内容开头时复用它们。 考虑一个具有 2,000 token 系统 prompt 的聊天机器人:1
请求 1
系统 prompt(2,000 tokens)+ 用户消息(50 tokens)处理:2,050 tokens · 来自缓存:0 tokens前缀写入缓存。
2
请求 2
系统 prompt(2,000 tokens)+ 用户消息(80 tokens)处理:80 tokens · 来自缓存:2,000 tokens
3
请求 3
系统 prompt(2,000 tokens)+ 用户消息(120 tokens)处理:120 tokens · 来自缓存:2,000 tokens
支持的模型与定价
Loading…
Claude Opus 4.5 对缓存写入收取溢价费率($7.50/1M tokens,而常规输入为 $6.00)。首次填充缓存的请求成本更高,但后续缓存命中可节省 90%。其他模型不会对缓存写入额外收费。
各提供商的特定行为
Venice 跨提供商统一缓存行为。对于大多数模型,缓存是自动的。只需发送请求并在响应中查看缓存统计信息。Claude 需要在协议层显式设置缓存标记,但 Venice 会自动为系统 prompt 和对话历史添加这些标记。 缓存行为最终由各提供商控制,可能会变化,因此请查阅提供商文档以获取最新细节。Claude Opus 4.5 (Anthropic)
Claude 要求在协议层显式设置缓存断点。Venice 会自动处理:- 系统 prompt 自动被缓存
- 对话历史通过在倒数第二条用户消息上放置断点进行缓存
附加细节:
- 每个请求最多 4 个断点:系统使用最长的匹配前缀
- 缓存键为字节精确:空白字符变化、不同的图像编码或工具重排序都会破坏缓存命中
- 缓存感知速率限制:缓存的 token 不计入您的 ITPM 限制,可实现更高的有效吞吐量
- 25% 写入溢价:首个请求成本更高,但后续读取可节省 90%
手动缓存控制
对于在首轮缓存大型文档等特殊情况,您可以添加显式断点:所有其他模型
缓存是自动的。无需特殊参数。只需确保您的 prompt 超过约 1,024 个 token,并使用prompt_cache_key 保持路由一致。
请求参数
prompt_cache_key
对于对话或 agent 工作流,使用一致的prompt_cache_key 来提高缓存命中率:
响应字段
响应的usage 对象包含缓存统计信息:
计费明细(以 Claude Opus 4.5 为例):
- 5000 个缓存 token × $0.60/1M = $0.003
- 500 个非缓存 token × $6.00/1M = $0.003
- 总计:$0.006(相比无缓存时的 $0.033,节省 82%)
最佳实践
为缓存构建 prompt 结构
将静态内容放在开头,动态内容放在结尾。 良好结构
糟糕结构
保持前缀字节级一致
缓存键是从精确的字节序列计算的。即使是微小的差异也会破坏缓存命中:- 不同的空白字符或换行符
- prompt 中的时间戳或请求 ID
- 随机化的 few-shot 示例顺序
- 相同内容的不同格式
满足最小 token 阈值
如果您的 prompt 低于最小值(通常为 1,024 个 token),缓存不会激活。对于小型 prompt,可以考虑:- 添加更多上下文或示例以达到阈值
- 将多个小请求合并为批量 prompt
- 接受简单查询不会应用缓存的事实
对对话使用 prompt_cache_key
对于持续对话,设置一致的prompt_cache_key:
监控缓存性能
跟踪以下指标:- 缓存命中率:
cached_tokens / prompt_tokens - 成本节省:实际成本 vs 无缓存成本
- 延迟降低:有缓存命中与无缓存命中的首 token 时间对比
cached_tokens 持续为 0:
- Prompt 可能低于最小 token 阈值
- Prompt 可能在请求之间发生了变化
- 请求可能命中不同服务器(使用
prompt_cache_key) - 缓存可能已过期(请求过于稀疏)
考虑缓存经济性
Claude Opus 4.5 缓存写入溢价:首个请求成本多 25%,但后续读取节省 90%。缓存生命周期
缓存在一段不活动时间后过期(通常为 5-10 分钟)。这意味着:在工具和函数中使用缓存
函数定义可以与系统 prompt 一起被缓存:在图像和文档中使用缓存
对于视觉模型,图像可以包含在缓存内容中:故障排查
cached_tokens 始终为 0
cached_tokens 始终为 0
每个请求都有 cache_creation_input_tokens
每个请求都有 cache_creation_input_tokens
成本高于预期
成本高于预期