プロンプトキャッシュは、大規模モデルAPIの節約の仕組みです。同じ会話や同種のリクエストで繰り返し現れる冒頭のまとまりを、サーバー側が一度計算して保存し、次回も冒頭が一字一句同じなら、その計算結果をそのまま再利用します。節約できるのは入力トークンの料金と、最初の文字が出るまでの待ち時間の両方です。
保存されるのは答えではなく、計算の途中状態
モデルは答える前に、送られた文章全体を層ごとに処理します。この前処理はプリフィルと呼ばれ、文章が長いほど高く、遅くなります。プロンプトキャッシュが保存するのは、この前処理の途中状態(KV状態と呼ばれます)です。ヒットすればモデルは繰り返し部分を飛ばし、新しく追加された分だけを処理して、通常どおり一文字ずつ答えを生成します。古い答えを再生するわけではないので、同じ資料でも質問が違えば答えも新しく作られます。
ヒットには三つの条件が同時に必要
第一に、前置きが先頭から完全に一致すること。システムプロンプトやツール定義、固定文書は先頭にあるためヒットしやすく、毎回変わる内容を前に置くと、その後ろはすべてヒットしなくなります。第二に、長さが足りること。各社はおおむね千トークン前後の下限を設けており、短い指示文では発動しません。第三に、有効期限内に再利用すること。キャッシュの寿命は通常数分で、ヒットするたびに延長されます。開発者が明示的に区切りを指定し、書き込みは割増・読み出しは大幅割引という方式もあれば、前置きを自動で照合する方式もあります。
ほかの二つの「キャッシュ」とは別物
意味キャッシュは、質問と答えを組で保存し、意味の近い質問に古い答えを返します。プロンプトキャッシュは答えを返さず、計算の手間だけを省きます。コンテキストウィンドウとも違います。ウィンドウはモデルが一度に見られる文字量、つまり容量の話であり、キャッシュはその文字を再計算するかどうかの話です。ウィンドウが大きくても、繰り返し部分が無料になるわけではありません。
よくある三つの誤解
一つ目、冒頭の一語を変えても大丈夫、という誤解。照合は厳密で、最初に違った場所から後ろはすべて再計算されます。日付やユーザー名を先頭に入れるのが、ヒット率を下げる典型です。二つ目、キャッシュされれば無料になる、という誤解。ヒットした入力は大幅に安くなりますが、新しい内容と生成される文字は通常料金です。三つ目、会話が長いほど得、という誤解。途中にツール結果や検索断片のような毎回変わる内容が入ると、後半はほとんどヒットしません。変わらないものを前に、変わるものを後ろに置くのが実用的な並べ方です。
恩恵が大きいのは、長いシステムプロンプトとツール定義を持つエージェント、同じ長文資料に何度も質問する知識ベース、同じ指示を共有するバッチ処理です。短くて毎回変わる一回きりの質問では、ほぼ存在を感じません。