cache_control を追加すると、最初のリクエストでキャッシュが作成され、それ以降のリクエストでは有効期限内のキャッシュを読み取ることができます。
使用前に API キーを設定してください。
本ガイドの例では
claude-sonnet-5 を使用します。ほかのモデルがコンテキストキャッシュに対応しているかどうかは、プラットフォームのモデル説明を参照してください。適したユースケース
複数のリクエストで同じ長いコンテンツを繰り返し送信する場合、次のような安定したプレフィックスをキャッシュできます。- 長い system prompt
- 固定されたナレッジベースまたは製品ドキュメント
- マルチターン会話内で変化しない履歴メッセージ
- 繰り返し使用するコードベース、ツール定義、説明
Claude Messages API
5 分間キャッシュ
キャッシュする content block にcache_control を追加します。
ttl を省略した場合、キャッシュの有効期間はデフォルトで 5 分です。
1 時間キャッシュ
1 時間キャッシュを使用するには、anthropic-beta リクエストヘッダーを追加し、ttl を 1h に設定します。
レスポンスの使用量フィールド
Claude Messages API は、通常入力、キャッシュ書き込み、キャッシュ読み取りの token をusage で個別に返します。
cache_creation_input_tokens > 0 になります。同じ安定したプレフィックスを再度送信すると、cache_read_input_tokens > 0 になるはずです。
OpenAI 互換 API
リクエストの例
/v1/chat/completions でキャッシュを使用する場合、cache_control の形式は Claude Messages API とほぼ同じです。
1 時間キャッシュ
OpenAI 互換形式も 1 時間キャッシュに対応しています。リクエストにanthropic-beta ヘッダーを追加し、cache_control で ttl: "1h" を設定します。
content は配列で指定
OpenAI 互換形式では、cache_control を具体的な content block 内に配置する必要があります。文字列形式のメッセージには設定できません。
user または assistant の content block をキャッシュ
user または assistant メッセージの content block に cache_control を追加して、長いドキュメントやマルチターン会話のプレフィックスをキャッシュすることもできます。
cache_control を追加します。
レスポンスの使用量フィールド
OpenAI 互換形式では、別のフィールドでキャッシュ使用量を返します。prompt_tokens_details.cache_write_tokens が 0 の場合も、claude_cache_creation_5_m_tokens と claude_cache_creation_1_h_tokens を確認してください。TTL ごとのフィールドが存在する場合、キャッシュ書き込み量は対応するフィールドで返されます。claude_cache_creation_5_m_tokens と claude_cache_creation_1_h_tokens では、数字と単位の間にアンダースコアが含まれます。レスポンスで返されたフィールド名をそのまま使用してください。キャッシュヒットの条件
プレフィックスが最小長を満たしている
本ガイドで使用するモデルでは、通常、キャッシュプレフィックスに少なくとも約 1024 token が必要です。プレフィックスが短すぎる場合、エラーを返さずにキャッシュマーカーが無視されることがあります。プレフィックスがバイト単位で一致している
キャッシュプレフィックス内のテキスト、スペース、改行、content block の順序をすべて同一にする必要があります。安定したプレフィックスにタイムスタンプ、ランダム ID、リクエスト数などの動的コンテンツを追加しないでください。リクエストがモデルによる拒否を引き起こしていない
リクエストがモデルによる拒否を引き起こした場合、レスポンスにキャッシュ作成 token が報告されても、そのキャッシュは次のリクエストで読み取られません。キャッシュミスを調査する際は、stop_reason が refusal かどうかも確認してください。
キャッシュが有効期限内である
キャッシュの有効期間は 5 分または 1 時間で、最後にアクセスした時点から計算されます。キャッシュヒットすると有効期間が更新されます。課金対象の使用量
キャッシュ関連の使用量は、次の 3 種類に分かれます。
この 3 種類は重複しません。通常、キャッシュ書き込みのコストは通常入力より高く、キャッシュ読み取りのコストは通常入力より低くなります。そのため、コンテキストキャッシュは TTL 内に繰り返し使用する安定したプレフィックスに適しています。
最小再現例
次のスクリプトでは、十分に長い安定したプレフィックスを生成し、同じリクエストを 2 回連続で送信します。2 回目のレスポンスではcache_read_input_tokens > 0 になるはずです。
トラブルシューティングチェックリスト
キャッシュヒットしない場合は、次の項目を順番に確認してください。stop_reasonがrefusalかどうか- キャッシュプレフィックスがモデルの最小 token 数を満たしているか
- 2 回のリクエストで安定したプレフィックスがバイト単位で一致しているか
- OpenAI 互換形式の
contentが配列になっているか cache_controlが具体的な content block 内に配置されているか- 1 時間キャッシュで
ttl: "1h"と対応するanthropic-betaリクエストヘッダーの両方を設定しているか - キャッシュが TTL を超えていないか
- 使用中のインターフェースに対応するキャッシュ使用量フィールドを読み取っているか