プロンプトキャッシングの概要
プロンプトキャッシングは、LLMのAPIを利用する開発者にとって見逃せない機能です。同じプロンプトを繰り返し使う場面で効果を発揮します。つまり、一度処理した内容をキャッシュとして再利用します。
Anthropicが2024年8月にClaude向けに導入し、その後OpenAIもGPT-4oシリーズで同様の機能を提供開始しました。Google(Gemini)も「コンテキストキャッシング」という名称で同等の機能を実装しており、2025年現在では主要なLLMプロバイダーがほぼ対応済みの状態です。
なぜプロンプトキャッシングが必要なのか
LLMのAPI利用では、入力トークン数に応じた課金が一般的です。たとえば、10万トークンの文書をシステムプロンプトとして毎回送信する場合、同じ内容を何度も処理するために大量のコストが発生します。
RAG(検索拡張生成)で長い参考文書を添付する場合や、多数の出力例(few-shot examples)を含むプロンプト、複数ターンの会話でシステムプロンプトを維持する場合など、つまり、繰り返し送信されるコンテキストは意外と多いものです。
具体的な効果
Anthropicの公式データによると、プロンプトキャッシングによる効果は以下の通りです。
具体的には、コスト面では、キャッシュヒット時の料金が10分の1になります。その結果、長いプロンプトでは最大90%の削減が可能です。レイテンシー面も大きな効果があります。10万トークンで11.5秒から2.4秒に短縮された例があります。
さらに、1万トークン程度の比較的短いプロンプトでも、レイテンシーが1.6秒から1.1秒に改善されており、規模を問わず効果があります。
仕組みと使い方
Claudeでの実装を例に取ると、APIリクエストのmessagesやsystemプロンプト内で、キャッシュしたい部分に「cache_control」パラメータを付与するだけです。初回リクエスト時にキャッシュが作成されます。その後、キャッシュ部分の処理がスキップされます。
キャッシュの有効期間は通常5分間です。なお、リクエストがあれば自動的に延長されます。キャッシュ可能な最小トークン数はモデルによって異なり、Claude 3.5 Sonnetでは1,024トークン以上が条件です。
OpenAIのGPT-4oシリーズでは、開発者側の明示的な設定は不要で、同一プロンプトプレフィックスが自動的にキャッシュされる仕組みになっています。
活用シーン
プロンプトキャッシングが特に有効なのは、次のような場面です。
長い文書との対話では、マニュアルや書籍をまるごとプロンプトに入れる場合に有効です。コーディングアシスタントでは、リポジトリ全体のコードをコンテキストとして保持しながら(Vercel v0のようなAI開発ツールでも活用可能)質問を重ねる際にコストを抑えられます。
カスタマーサポートのチャットボットでは、商品情報やFAQをシステムプロンプトに含めます。その結果、キャッシングにより運用コストを劇的に下げられます。
注意点
ただし、キャッシュの初回作成時には通常より25%程度高い料金が発生します。そのため、1回しか使わないプロンプトにキャッシングを適用するとかえって割高になります。繰り返し使うプロンプトに絞って適用するのがコツです。
また、キャッシュはプロンプトの先頭から一致している部分のみ有効です。途中に変更があると、その時点以降はキャッシュが無効になります。そのため、プロンプトの設計時に、固定部分を先頭に、可変部分を末尾に配置する工夫が必要です。
プロンプトキャッシングのまとめ
プロンプトキャッシングは、LLM APIを日常的に利用する開発者や企業(OpenAI o1の解説も参照)にとって、コスト削減とレスポンス改善を同時に実現できる重要な機能です。主要プロバイダーが対応済みの今、活用しない手はありません。特に長いシステムプロンプトやRAGの参照文書を繰り返し使う構成であれば、導入効果は非常に大きいでしょう。
