LLM推論時に同一または類似のプロンプトに対する計算結果をキャッシュし、応答速度の向上とコスト削減を実現する最適化技術の総称。
LLMプロンプトキャッシング(Prompt Caching)は、大規模言語モデルの推論プロセスにおいて、繰り返し使用されるプロンプトやプレフィックスの計算結果を保存・再利用する最適化技術である。Transformer ベースの LLM では、入力トークン列に対して Self-Attention の Key-Value(KV)ペアを逐次計算する必要があるが、システムプロンプトや共通のコンテキスト部分は多くのリクエストで同一であるため、これらの中間計算結果をキャッシュすることで大幅な効率化が可能になる。
2024年後半から2025年にかけて、Anthropic の Claude、OpenAI の GPT-4o、Google の Gemini など主要な商用 LLM プロバイダが相次いでプロンプトキャッシング機能を提供開始し、API 利用コストの削減とレイテンシの短縮を同時に実現できるようになった。特にエージェント型アプリケーションやRAGシステムなど、長大なシステムプロンプトを繰り返し送信するユースケースで効果が顕著である。
プロンプトキャッシングの基本原理は、Transformer の推論パイプラインにおける KV キャッシュの永続化にある。通常の推論フローでは以下のステップが発生する。
このうちステップ3が計算コストの大部分を占める。プロンプトキャッシングでは、入力プロンプトの共通プレフィックス部分について計算済みの KV ペアを GPU メモリまたは高速ストレージに保存し、後続リクエストでは保存済みの KV ペアを読み込んで残りの部分のみ計算する。
| 処理段階 | キャッシュなし | キャッシュあり |
|---|---|---|
| プレフィックス KV 計算 | 毎回実行 | スキップ(キャッシュ読込) |
| 可変部分 KV 計算 | 実行 | 実行 |
| Attention スコア計算 | 全トークン対象 | 全トークン対象(KV は既存) |
| レイテンシ | ベースライン | 50-85% 削減 |
| コスト |
| ベースライン |
| 50-90% 削減 |
キャッシュのヒット判定は一般にプレフィックスマッチングで行われる。つまり、入力トークン列の先頭から何トークン目まで前回のリクエストと一致するかを確認し、一致部分のKVキャッシュを再利用する。このため、システムプロンプトを入力の先頭に配置することがキャッシュ効率を最大化する鍵となる。
各 LLM プロバイダは独自のプロンプトキャッシング実装を提供しており、仕様や料金体系が異なる。
| プロバイダ | 機能名 | キャッシュ TTL | 最小トークン数 | 料金割引 | 明示的制御 |
|---|---|---|---|---|---|
| Anthropic (Claude) | Prompt Caching | 5分(利用で延長) | 1,024 | 入力90%OFF / 書込25%UP | cache_control ブレークポイント |
| OpenAI (GPT-4o) | Automatic Caching | 5-10分 | 1,024 | 入力50%OFF | 自動(制御不可) |
| Google (Gemini) | Context Caching | 最大48時間(設定可) | 32,768 | 入力75%OFF / 保存料別途 | 明示的キャッシュ作成 API |
| DeepSeek | Prompt Caching | 数分 | 64 | 入力90%OFF | 自動(ヒット率表示) |
Anthropic の実装は cache_control パラメータで明示的にキャッシュブレークポイントを指定でき、システムプロンプト・ツール定義・会話履歴の各部分に対して細かくキャッシュ戦略を設定できる点が特徴的である。一方 OpenAI は完全自動でプレフィックスマッチングを行い、開発者側の設定は不要だがキャッシュの制御もできない。
Google Gemini のコンテキストキャッシングは最も柔軟性が高く、TTL を最大48時間まで設定可能で、大量の参照ドキュメントを長時間キャッシュしておくユースケースに適している。ただし保存料が別途発生するため、利用頻度との損益分岐点を事前に計算する必要がある。
プロンプトキャッシングの効果を最大限引き出すには、プロンプト構造の設計段階からキャッシュを意識する必要がある。
[システムプロンプト(固定)] → [ツール定義(固定)] → [参照ドキュメント(セッション固定)] → [会話履歴(可変)] → [ユーザー入力(可変)]
固定部分をプロンプトの先頭に集約し、可変部分を末尾に配置することで、プレフィックスマッチの一致長を最大化する。
大規模なRAGシステムでは、以下の多段キャッシュ構造が有効である。
同一プレフィックスを共有する複数のリクエストをバッチでまとめて送信することで、キャッシュの書き込みコストを1回に抑えつつ、全リクエストでキャッシュヒットの恩恵を受けられる。
実際のアプリケーションでのプロンプトキャッシングの効果を定量的に示す。
| ユースケース | プロンプト長 | キャッシュ対象 | レイテンシ削減 | コスト削減 |
|---|---|---|---|---|
| チャットボット | 2,000-5,000トークン | システムプロンプト | 30-50% | 40-60% |
| RAGシステム | 10,000-50,000トークン | ドキュメント+プロンプト | 50-70% | 60-80% |
| コード生成エージェント | 20,000-100,000トークン | ツール定義+コンテキスト | 60-85% | 70-90% |
| ドキュメント分析 | 50,000-200,000トークン | 参照ドキュメント | 70-90% | 80-95% |
特にコード生成エージェントやドキュメント分析のように長大なコンテキストを繰り返し参照するケースでは、キャッシングの効果が劇的に表れる。Claude Code のようなエージェントシステムでは、会話の進行に伴いコンテキストが蓄積されるため、プロンプトキャッシングなしでは応答時間とコストが急激に増大する。
プロンプトキャッシングには以下の制約がある。
A1: 以下の条件に該当する場合に特に効果的です。(1) 長いシステムプロンプトやツール定義を使用している、(2) 同一ユーザーとの複数ターンの会話がある、(3) RAGで大量のドキュメントをコンテキストに含めている、(4) バッチ処理で同一テンプレートを繰り返し使用している。目安として、プレフィックス部分が1,024トークン以上あり、5分以内に複数回のリクエストが発生する場合はコスト削減効果が期待できます。
A2: ユースケースによって異なります。Anthropic の明示的制御は、キャッシュ対象を細かく指定でき、キャッシュヒット率を最適化できるため、プロンプト構造を精密に制御したい場合に優れています。一方、OpenAI の自動キャッシングは設定不要で手軽に導入でき、プロンプト設計を変更せずに恩恵を受けられます。大規模なエージェントシステムでは Anthropic 型の明示的制御が有利で、シンプルなチャットボットでは OpenAI 型の自動方式が導入コスト面で有利です。
A3: プレフィックスキャッシングはトークン列の完全一致でキャッシュを判定するのに対し、セマンティックキャッシングは入力の意味的類似度に基づいてキャッシュヒットを判定します。セマンティックキャッシングはエンベディングモデルで入力をベクトル化し、過去のクエリとのコサイン類似度が閾値を超えた場合に過去の応答を返します。プレフィックスキャッシングは LLM プロバイダ側で実装される低レイヤーの最適化であるのに対し、セマンティックキャッシングはアプリケーション層で実装するため、両者は併用可能です。
A4: TTL切れによるキャッシュミスを最小化するには、(1) 定期的なウォームアップリクエストで TTL を延長する、(2) キャッシュミス時のレイテンシ増大をユーザーに通知するUI設計を行う、(3) 複数のキャッシュ階層を設けて L1 ミス時に L2 でカバーする、といった戦略があります。Anthropic Claude の場合、キャッシュ使用のたびに TTL が5分延長されるため、アクティブなセッションではキャッシュが切れにくい設計になっています。