docs.claude.com/en/docs/build-with-claude/prompt-caching),並按 API易 的接入方式給出可直接複製的示例。
一句話理解
把一段反覆使用的長 prompt(系統說明 / 長文件 / few-shot 示例)打上cache_control 標記,伺服器會把它存起來。下次相同字首的請求來,伺服器跳過重複處理,便宜約 10 倍、也更快。一段時間內沒人再用就會過期。
為什麼要用 —— 看賬單倍率
以模型原始輸入 token 價為 1× 計:
回本點:
- 5 分鐘 TTL:只需 2 次複用同一字首即可回本(1.25 + 0.1 = 1.35,比兩次不快取的 2.0 便宜)。
- 1 小時 TTL:需要 3 次才回本(2 + 0.2 = 2.2,比 3.0 便宜)。
TTL 是滑動視窗:每次命中都會把過期時間重置,因此活躍的會話不會平白過期。只有真正閒置超過 TTL 才會失效。
適合場景
- 同一份長系統提示詞被多次呼叫(Agent、客服機器人)
- 多輪對話(每加一輪,前面的歷史都能複用)
- 批次處理同一份文件(一份合同問 50 個問題)
- RAG 把檢索到的穩定文件塊作為字首
不適合場景
- 每次 prompt 從第一個字開始都不一樣
- 整體很短,根本到不了最小 token 閾值(見下)
觸發快取的三個硬條件
缺一不可。1. 必須顯式打標記 cache_control
content 不能是純字串,必須是 content block 陣列,在要快取的那一塊上加 cache_control:
2. 長度必須達到最小閾值
短於閾值的內容,就算打了標記也不會快取(不報錯,靜默忽略)。按模型不同:3. 字首必須逐位元組相同
快取按字首匹配:從請求開頭一直到cache_control 標記位置,這段位元組流必須和上一次完全一樣。改任何一個字元——哪怕是空格、JSON 欄位順序、時間戳——都算”新字首”,會重新寫入而不是命中。
實踐含義:穩定的東西放前面,易變的東西放後面。
最小可執行示例
跑兩次同一段長文 + 不同問題,第一次寫入快取,第二次命中:read ≈ 第 1 次的 write,說明同一段字首被命中複用了。
怎麼判斷命中沒命中 —— 看三個欄位
每次響應的usage 裡:
輸入總量 = 三者之和。 只要
cache_read_input_tokens > 0,你就在省錢。
最常見的踩坑
進階:多輪對話怎麼打
把cache_control 打在最近一條 user 訊息的最後一個 content block 上。每加一輪,快取讀取範圍會自動延伸到上一輪結束的位置:
- 單次請求最多 4 個
cache_control斷點。 - 每個斷點的字首查詢只回溯最近 20 個 content block——超出 20 個 block 的更久遠內容不會再被檢索去拼命中。換言之:很長的多輪對話靠”最末一次打標記”是兜不住前面所有歷史的。
API易 關於快取的說明
API易完整透傳快取欄位。 你在請求裡寫的
cache_control 會原樣轉發給上游 Claude(AWS Claude 或 Claude Official),響應裡的 cache_creation_input_tokens / cache_read_input_tokens 也會原樣回吐給你——所以你的程式碼無需為中轉層做任何額外適配。- 第一次傳送時觀察響應
usage.cache_creation_input_tokens > 0(寫入成功)。 - 幾秒後用相同字首再發一次,應看到
usage.cache_read_input_tokens > 0(命中)。 - 後臺賬單裡會單獨顯示快取寫入 / 快取讀取兩類計費項,倍率與官方一致(1.25× / 2× / 0.1×)。
要點回顧
1. 打標記
cache_control: {"type": "ephemeral"} 加在 content block 上,純字串 content 永不快取。2. 夠長度
Sonnet 4.6 ≥ 2048 tokens,Opus 4.7 / Haiku 4.5 ≥ 4096 tokens,否則靜默忽略。
3. 穩字首
穩定內容在前、易變內容在後;任何一個字元變化都會讓快取失效。
4. 看 usage
cache_read_input_tokens > 0 才說明真的省錢了。相關連結
- 父頁面:Claude API 呼叫基礎說明
- 客戶端配置教程:Claude Code 接入指南 · Cherry Studio 接入指南
- 獲取 / 管理令牌:
https://api.apiyi.com/token - Anthropic 官方文件:
docs.claude.com/en/docs/build-with-claude/prompt-caching