できること
プロンプトの先頭を再利用
リクエストを送ると、指定したキャッシュのブレークポイントまでのプロンプトの先頭部分が、直近のリクエストですでにキャッシュされているかを確認します。対象は tools、system、messages の順に、cache_control を付けたブロックまでのプロンプト全体です。
自動と明示の2つの方式
自動キャッシュでは、最後のキャッシュ可能なブロックにブレークポイントが置かれ、会話が伸びるにつれて前へ移動します。個々のコンテンツブロックに cache_control を置けば、何をキャッシュするかを細かく指定でき、ブレークポイントは最大 4 個まで定義できます。
キャッシュの事前ウォーム
ユーザーが実際のリクエストを送る前に、システムプロンプトやツール定義をプロンプトキャッシュに読み込んでおけます。
機能解説
概要
繰り返し行う作業や、共通の要素を含むプロンプトについて、処理時間とコストを大幅に減らします。ツール定義やシステムの指示など、毎回同じ内容を送るアプリケーションに関わる機能です。
仕組みとキャッシュの扱い
キャッシュの有効期間は、既定で 5 分です。キャッシュの照合では、ブレークポイントごとに 20 ブロックをさかのぼって確認します (lookback window)。
キャッシュがヒットするには、cache_control を付けたブロックまでのテキストと画像を含め、プロンプトの該当部分が 100% 同一である必要があります。
Prompt caching は出力トークンの生成には影響しません。受け取る応答は、Prompt caching を使わない場合と同じです。また、異なる組織同士がキャッシュを共有することはありません。同一のプロンプトを使っていても同じです。
キャッシュの効果は、応答の usage 内 (ストリーミングの場合は message_start イベント) にある cache_creation_input_tokens、cache_read_input_tokens、input_tokens の各フィールドで確認できます。
キャッシュできるもの・できないもの
次の要素は、自動で、または cache_control を付けることでキャッシュできます。
- ツール (tools)
- システムメッセージ
- テキストメッセージ
- 画像と文書
- ツールの使用 (tool use) とツールの結果 (tool results)
Thinking ブロックは、cache_control で直接キャッシュすることはできません。ただし、過去のアシスタントのターンに含まれる場合は、他のコンテンツと一緒にキャッシュされます。
自動キャッシュと明示的ブレークポイントの使い分け
自動キャッシュを使う場合は、個々のコンテンツブロックに cache_control を置く代わりに、リクエスト本文の最上位に cache_control フィールドを 1 つ追加します。システムが最後のキャッシュ可能なブロックにブレークポイントを置き、会話が伸びるにつれて前へ移動させます。
明示的なブレークポイントでは、個々のコンテンツブロックに cache_control を直接置き、キャッシュする範囲を細かく指定します。ブレークポイントは最大 4 個まで定義できます。
自動キャッシュは明示的なブレークポイントと併用できます。併用した場合、自動のブレークポイントは利用できる 4 個の枠のうち 1 個を使います。
既定の 5 分より長い 1 時間のキャッシュを使う場合は、cache_control の定義に ttl を含めます。
キャッシュの事前ウォーム
事前ウォームは、実際のリクエストの前にシステムプロンプトやツール定義をキャッシュに読み込んでおく使い方です。流れは次のとおりです。
- リクエストで
max_tokens: 0を指定します。API はプロンプトを読み込み、cache_controlのブレークポイントでキャッシュを書き込み、出力を生成せずにすぐ応答を返します。 cache_controlのブレークポイントは、仮置きのユーザーメッセージではなく、後続のリクエストと共通する最後のブロック (通常はシステムプロンプトやツール定義) に置きます。- アプリケーションの起動時 (または定期的な間隔) に事前ウォームのリクエストを送り、それが完了した後に実際のユーザーのリクエストを送ります。
使い方
- プロンプトの先頭に、変わらない内容 (ツール定義、システムの指示、コンテキスト、例) を置きます。
- 再利用する内容の終わりを、
cache_controlパラメータで示します。
利用シーン
長いシステムの指示やツール定義を毎回同じ形で送るアプリケーションに向いています。変わらない部分をプロンプトの先頭に置き、その終わりにブレークポイントを置く使い方です。
会話が続くチャット型のアプリケーションに使えます。自動キャッシュでは、会話が伸びるにつれてブレークポイントが前へ移動します。
同じ文書や画像を前提に、質問を変えて何度も問い合わせる場面に使えます。画像と文書はキャッシュの対象です。
最初のユーザーのリクエストが届く前に準備しておきたい場面に向いています。アプリケーションの起動時に事前ウォームのリクエストを送れます。
ChatGPT・OpenAI の対応する機能
比較の単位となる業務: 繰り返し使うプロンプトのキャッシュによる API 入力コストの削減
キャッシュの保持期間の既定値に違いがあります。Claude API の Prompt caching では、キャッシュの有効期間は既定で 5 分です。OpenAI の側では、ZDR が有効でない組織について、prompt_cache_retention の既定値が in_memory から 24h に変わり、extended prompt caching が既定で有効になっています。
Claude API では、個々のコンテンツブロックに cache_control を置いて、キャッシュする範囲を細かく指定できます。OpenAI では、GPT-5.6 で明示的なプロンプトキャッシュ制御が追加されました。
キャッシュの効果の確認方法も異なります。Claude API では応答の usage 内の cache_creation_input_tokens、cache_read_input_tokens、input_tokens で確認します。OpenAI API プラットフォームには Prompt Caching ダッシュボードがあり、キャッシュヒット率の推移、書き込みあたりの読み取り数、キャッシュ読み取り・書き込み・非キャッシュのトークン内訳を確認できます。
これまでの変更
Claude Sonnet 5.5 のプロンプトキャッシュ読み取り価格を、100 万トークンあたり 0.20 米ドルから 0.10 米ドルに引き下げました。基本入力価格の 0.1 倍から 0.05 倍への変更です。
Claude Fable 5.1 と Claude Mythos 5.1 のプロンプトキャッシュ読み取りは 100 万トークンあたり 0.25 米ドルで、基本入力価格の 0.025 倍です (他のモデルは 0.1 倍)。
Claude Opus 4.8 で、キャッシュ可能なプロンプトの最小長が 1,024 トークンになりました。Claude Opus 4.7 より低い値です。