プロンプトキャッシュとは
プロンプトキャッシュとは、以前のリクエストと同じプロンプト前半を再び受け取ったとき、その部分を処理した計算結果を再利用する仕組みです。主な目的は、長い共通入力を毎回最初から処理する時間と費用を減らすことです。
回答文を保存して返す「レスポンスキャッシュ」や、ユーザー情報を後の会話へ持ち込む「メモリ」とは役割が異なります。
何を再利用するのか
LLMは入力をトークンへ分け、各トークンが前の入力とどう関係するかを計算しながら回答を生成します。プロンプトキャッシュは、変更されていない前半部分について、この計算状態を保存して再利用します。OpenAIは、この状態をKVキャッシュのテンソルとして説明しています。[1]
1回目: [固定の指示 + 共通資料] + [質問A]
└──── 計算して保存 ────┘
2回目: [固定の指示 + 共通資料] + [質問B]
└──── 保存状態を再利用 ─┘ └ 新しく処理 ┘再利用されるのは前半入力の計算です。質問Bへの回答は新しく生成されるため、キャッシュがヒットしても同じ回答になるとは限りません。[1]
キャッシュが効く条件
基本条件は、入力の先頭から一定範囲が一致することです。したがって、入力は次の順に組み立てると効果が出やすくなります。
- ツール定義や固定ルール
- 長く使い回す資料や例
- 会話履歴
- 今回だけ変わる質問やデータ
先頭近くの指示、ツール定義、画像、資料の順序や内容が変わると、それ以降を再利用できない場合があります。キャッシュの保持時間や明示的な設定方法はサービスごとに異なるため、利用中のモデルとAPIの仕様を確認する必要があります。[1][2]
ClaudeとOpenAI APIでの例
| サービス | 仕組みの見え方 | 確認・制御の例 |
|---|---|---|
| Claude API | 共通するプロンプト前半をキャッシュし、後続リクエストで再利用する | cache_controlで境界や保持方法を指定し、キャッシュ作成・読み取りトークンを利用量から確認する [2] |
| OpenAI API | 対応モデルで長い共通プレフィックスの処理を自動的に再利用する | 応答のcached_tokensなどで再利用量を確認する [1] |
Claude APIでは、ツール、システムメッセージ、通常メッセージの順でキャッシュ対象が構成されます。OpenAI APIでも、固定内容を前半、可変内容を後半へ置くことが推奨されています。[1][2]
ChatGPTやCodexではどう考えるか
ChatGPTのプロジェクトやメモリは、関連資料・指示・好みなどを将来の会話へ供給する機能です。[3][4] これは「何をコンテキストへ入れるか」の機能であり、入力処理の計算を再利用するプロンプトキャッシュとは別です。
Codexでは、リポジトリの指示ファイルや会話履歴が繰り返しコンテキストへ入ります。開発者がOpenAI APIを直接使う場合は、その安定した前半部分がプロンプトキャッシュの対象になり得ます。ただし、ChatGPTやCodexの画面で見えるプロジェクト、メモリ、履歴だけを根拠に、内部でどのAPIキャッシュが使われたかを判断することはできません。
似た仕組みとの違い
| 仕組み | 何を扱うか | 主な目的 | 新しい回答を生成するか |
|---|---|---|---|
| プロンプトキャッシュ | 同じ入力前半の計算状態 | 遅延と入力処理コストを減らす | する |
| レスポンスキャッシュ | 完成済みの回答 | 同じ質問へ同じ結果をすぐ返す | 通常はしない |
| メモリ | 好み、事実、過去の要点 | 会話をまたいで情報を利用する | する |
| コンテキスト圧縮 | 長い履歴から残すべき作業状態 | 有効なコンテキストを小さくする | する |
特に重要なのは、キャッシュはコンテキスト量を減らさないことです。入力前半の処理が速くなっても、その情報はモデルが扱うコンテキストに含まれます。長い会話を短く整理するには、コンテキスト圧縮が必要です。
向いている場面と限界
プロンプトキャッシュは、同じ長い前半入力を繰り返す処理に向いています。
- 同じシステム指示とツール群を使うエージェント
- 長い規約やマニュアルに複数の質問をする処理
- 多数の例を含む同じプロンプトでデータだけを変える処理
- 同じコードベースの説明を前提に反復する開発支援
一方、毎回入力の先頭から変わる処理、再利用できる前半が短い処理、変更頻度の高い資料には効果が限られます。また、キャッシュは回答の正確さを保証しません。品質評価、情報の鮮度管理、権限制御は別に設計する必要があります。
まとめ
- プロンプトキャッシュは、同じプロンプト前半を処理した計算状態を再利用する
- 固定の指示や資料を前半、毎回変わる質問を後半へ置くと再利用しやすい
- キャッシュがヒットしても回答は新しく生成され、同じ出力になるとは限らない
- ChatGPTのプロジェクトやメモリは情報を供給する機能であり、プロンプトキャッシュとは目的が異なる
- キャッシュはコンテキストを短くしない。長い履歴の整理はコンテキスト圧縮が担う
参考文献
- OpenAI, Prompt caching
- Anthropic, Prompt caching
- OpenAI, Projects and chats
- OpenAI, Memories
情報の鮮度について: キャッシュの対応モデル、保持時間、設定項目は変更される可能性があります。実装時は各サービスの最新仕様を確認してください。