Claude API prompt cache 怎么检测
Claude API prompt cache 检测指南:构造稳定长前缀,比较 cache_creation_input_tokens 与 cache_read_input_tokens,并排查中转站字段缺失。
快速答案
检测 Claude prompt cache 的核心是连续发送两次共享完全相同长前缀的请求:第一次应出现 cache_creation_input_tokens,第二次应出现 cache_read_input_tokens。只看响应更快或价格更低不够,必须保留 usage 字段证据。
先看结论
- 第一次请求观察缓存创建,第二次请求观察缓存读取。
- 两次请求的可缓存前缀必须逐字节一致。
- 优先依据 usage 字段,不用单纯延迟变化代替缓存证据。
- 中转站可能隐藏或重写字段,应同时检查协议兼容性。
Claude prompt cache 在测什么
Prompt cache 让多个请求复用相同的长前缀,常见对象包括 system prompt、工具定义、长文档和稳定的对话历史。命中缓存后,上游不必按完整输入重新处理该前缀,因此可能降低长上下文成本和首字等待。
检测目标不是证明“第二次更快”,而是确认 Anthropic usage 中出现可核对的创建和读取 token 数。网络抖动、排队和生成长度都会影响延迟,usage 字段才是更直接的缓存证据。
需要关注的字段
不同 SDK 会把字段映射到不同命名风格,但原始 Anthropic 响应通常围绕输入 token、缓存创建 token 和缓存读取 token 展开。保存原始 usage 片段,后续排查会容易很多。
| 字段 | 含义 | 预期变化 |
|---|---|---|
| input_tokens | 本次未从缓存读取的普通输入 | 命中后通常下降 |
| cache_creation_input_tokens | 本次写入缓存的输入 token | 首次请求应大于 0 |
| cache_read_input_tokens | 本次从缓存读取的输入 token | 第二次请求应大于 0 |
| output_tokens | 模型生成的输出 token | 与缓存命中没有直接等价关系 |
如何设计两次请求
准备一个长度达到模型缓存门槛的稳定前缀,并在需要缓存的内容块上使用 Anthropic 支持的 cache_control。两次请求应使用相同模型、相同 system/tool/document 前缀,只改变最后一个很短的用户问题。
- 请求 A:创建缓存,记录完整 usage 和 TTFT。
- 短时间内发送请求 B,保持缓存前缀完全一致。
- 确认 B 的 cache_read_input_tokens 大于 0。
- 检查 A 的创建 token 与 B 的读取 token 是否处于相近量级。
- 再改变前缀中的一个字符发送请求 C,确认缓存读取明显下降或失效。
为什么第二次请求仍然没有命中
常见原因包括模型不支持、前缀低于最低 token 门槛、cache_control 放置错误、两次前缀存在空格或 JSON 顺序差异、缓存已过期,或者账号/区域发生变化。
如果通过中转站调用,还要确认它没有把 Anthropic 请求转换成 OpenAI 格式、删除 cache_control,或在响应中丢弃缓存 usage 字段。此时延迟下降也不足以证明原厂缓存命中。
如何解释延迟和成本
缓存命中通常会改善长前缀处理成本,但总耗时仍受输出长度和上游排队影响。应把 TTFT、端到端耗时和 usage 分开记录,而不是用一个总延迟数字概括。
成本计算也要区分普通输入、缓存写入和缓存读取。具体价格会随模型和 Anthropic 定价变化,报告应保留 token 数,再按测试当天的官方价格换算。
上线前应该怎样复测
用真实 system prompt、工具定义和文档模板复测,在不同时间段运行多轮请求,记录命中率而不是只看一次命中。对于中转站,还应确认切换账号池或出现 429 后,缓存行为是否仍然稳定。
常见问题
cache_read_input_tokens 为 0 就代表 Claude 不支持缓存吗?
不一定。也可能是前缀太短、cache_control 配置错误、前缀发生变化、缓存过期或中转站没有透传字段。
第二次请求更快就算缓存命中吗?
不能只凭速度判断。网络和排队也会造成延迟变化,应以 cache_read_input_tokens 等 usage 字段为主要证据。
Claude 中转站也能检测 prompt cache 吗?
可以,但前提是中转站完整透传 Anthropic 的 cache_control 和 usage 字段。字段缺失本身就是协议兼容风险。
继续阅读
用真实 API 运行一次检测
使用临时 key 检查连通性、延迟、缓存、限流、模型纯度和 token 成本。