大規模モデルの推論リクエストには、マルチターン対話や同じ書籍に関する一連の質問など、重複する入力が含まれることがよくあります。コンテキストキャッシュは、これらのリクエストの共通プレフィックスをキャッシュすることで、冗長な計算を削減します。これにより、応答品質に影響を与えることなく、応答速度の向上と利用コストの削減を実現します。
さまざまなシナリオをサポートするために、コンテキストキャッシュには 2 つのモードが用意されています。利便性、確実性、コストの要件に基づいてモードを選択してください:
暗黙的キャッシュとは異なり、明示的キャッシュは明示的な作成が必要でオーバーヘッドが発生しますが、より高いキャッシュヒット率と低いアクセスレイテンシを提供します。
システムは最初のキャッシュブロックを作成し、それをキャッシュブロック A と呼びます。
2. 2 番目のリクエストを送信:次の構造でリクエストを送信します:
以下の例は、OpenAI 互換、DashScope、および Anthropic 互換プロトコルにおけるキャッシュブロックの作成とキャッシュヒットのメカニズムを示しています。
複雑なシナリオでは、プロンプトはしばしば再利用頻度が異なる複数の部分で構成されます。複数のキャッシュマーカーを使用して、詳細な制御を実現できます。
例えば、インテリジェントなカスタマーサービスエージェントのプロンプトには、通常、以下が含まれます:
明示的キャッシュは、入力トークンの課金方法にのみ影響します。ルールは次のとおりです:
この構造は、
ツール定義は、キャッシュのために JSON 文字列にシリアル化されます。キャッシュの無効化を防ぐため、この定義はすべてのリクエストで同一でなければなりません。以下に注意してください:
並列ツール呼び出しを使用すると、モデルは 1 回の応答で複数の
最適化後 (マージされたツールメッセージ — キャッシュヒット率が高い):
キャッシュヒット率をさらに向上させるには、
この例では、コードリポジトリのコンテンツをプレフィックスとしてキャッシュします。後続のリクエストでは、同じリポジトリについて異なる質問をします。
暗黙的キャッシュ機能は、サポートされているモデルにリクエストが送信されると自動的に有効になります。システムの動作は次のとおりです:
暗黙的キャッシュヒットは、異なるリクエストのプレフィックスに重複するコンテンツがある場合に発生します。ヒット確率を高めるには、重複するコンテンツをプロンプトの先頭に、一意のコンテンツを末尾に配置します。
暗黙的キャッシュモードを有効にしても、追加料金は発生しません。
リクエストがキャッシュにヒットすると、キャッシュヒットからの入力トークンは
キャッシュヒットしたトークンの数は、応答の
リクエストが共通のプレフィックスを共有している場合、コンテキストキャッシュは推論速度を大幅に向上させ、推論コストを削減し、最初のパケットのレイテンシを短縮できます。この機能は、特に以下のユースケースで役立ちます:
後続のリクエストの messages 配列
質問は異なりますが、すべて同じ記事に基づいています。同じシステムプロンプトと記事の内容が大量の反復的なプレフィックス情報を構成し、キャッシュヒットの確率が高くなります。
2. コード自動補完
コード自動補完シナリオでは、モデルは周囲のコードをコンテキストとして使用して後続のコードを生成します。記述するにつれて、コードファイルの先頭は同じままです。コンテキストキャッシュはこのプレフィックスを保存して、コード補完を高速化できます。
3. マルチターン対話
マルチターン対話の場合、各ターンを messages 配列に追加します。これにより、各新しいリクエストが前のターンと共通のプレフィックスを共有し、キャッシュヒットの可能性が高まります。
最初のターンの messages
2 番目のターンの messages
対話が長くなるにつれて、推論速度とコストに対するキャッシュの利点がより顕著になります。
4. ロールプレイングまたはフューショット学習
ロールプレイングまたはフューショット学習シナリオでは、モデルの出力形式をガイドするために、プロンプトに広範な指示を含めることがよくあります。これにより、複数のリクエストにわたって大きな共有プレフィックスが作成されます。
例えば、モデルにマーケティングの専門家として行動するよう指示する場合、システムプロンプトには広範なテキストが含まれます。以下は 2 つのリクエスト例です:
コンテキストキャッシュを使用すると、リクエストの製品を頻繁に変更しても (例えば、スマートウォッチからラップトップへ)、長いシステムプロンプトがキャッシュされるため、システムはより速く応答できます。
5. 動画理解
動画理解シナリオでは、同じ動画について複数の質問をする場合、
A:コンテキストキャッシュの有効期間は、キャッシュの種類によって異なります:
A:無効にすることはできません。暗黙的キャッシュは、応答品質に影響を与えないため、すべての適用可能なモデルリクエストで有効になっています。キャッシュヒットが発生すると、コストが削減され、応答速度が向上します。
A:キャッシュミスは、以下の理由で発生する可能性があります:
A:はい。各ヒットで、キャッシュブロックの有効期間が 5 分にリセットされます。
A:いいえ。暗黙的キャッシュと明示的キャッシュの両方のデータは、アカウントレベルで分離されています。
A:いいえ。キャッシュデータはモデル間で分離されています。
A:モデルの出力品質を確保するため、バックエンドサービスはプロンプトに少数のトークン (通常は 10 以下) を追加します。これらのトークンは
- 明示的キャッシュ:手動で有効にするモードです。特定のコンテンツに対してキャッシュを作成し、5 分間の有効期間内に確定的なヒットを保証します。キャッシュの作成に使用されるトークンは、標準入力トークン価格の 125% で課金されますが、その後のキャッシュヒットは、その価格のわずか 10% で課金されます。
- 暗黙的キャッシュ:この自動モードは追加の構成を必要とせず、無効にすることもできません。利便性を優先するシナリオに最適です。システムはリクエストの共通プレフィックスを自動的に識別してキャッシュしますが、ヒット確率は保証されません。キャッシュから提供された入力部分は、標準入力トークン価格の 20% で課金されます。
項目 | 明示的キャッシュ | 暗黙的キャッシュ |
|---|---|---|
応答品質への影響 | なし | なし |
キャッシュ作成トークンの課金 | 標準入力トークン価格の 125% | 標準入力トークン価格の 100% |
キャッシュされた入力トークンの課金 | 標準入力トークン価格の 10% | 標準入力トークン価格の 20% |
キャッシュの最小トークン数 | 1024 | 256 |
キャッシュ有効期間 | 5 分 (ヒット時にリセット) | 不確定。システムは古くて未使用のキャッシュデータを定期的にクリアします。 |
明示的キャッシュと暗黙的キャッシュは相互排他的です。
プロビジョニング済みスループットユニット (PTU) デプロイメントもコンテキストキャッシュをサポートしています。キャッシュヒットが発生すると、システムはキャッシュ割引係数を使用して PTU 使用量を計算します。詳細については、「PTU のための長い入力とキャッシュ」をご参照ください。
OpenAI Chat Completions、DashScope、および Anthropic 互換インターフェイスでは、Responses API とセッションキャッシュを使用して推論レイテンシとコストを削減します。詳細については、「セッションキャッシュ」をご参照ください。
明示的キャッシュ
暗黙的キャッシュとは異なり、明示的キャッシュは明示的な作成が必要でオーバーヘッドが発生しますが、より高いキャッシュヒット率と低いアクセスレイテンシを提供します。
仕組み
"cache_control": {"type": "ephemeral"} マーカーを messages 配列に追加します。その後、システムは各 cache_control マーカーから後方に検索し、最大 20 個の先行する content ブロックを調べてキャッシュヒットを探します。
1 つのリクエストで最大 4 つのキャッシュマーカーをサポートします。
-
キャッシュミス
キャッシュミスが発生した場合、システムは messages 配列の先頭と
cache_controlマーカーの間のコンテンツから新しいキャッシュブロックを作成します。新しいキャッシュブロックの有効期間は 5 分です。システムは、モデルが応答を生成した後にキャッシュを作成します。そのキャッシュにヒットさせるには、作成リクエストが完了するまで待ってください。
キャッシュブロックには、少なくとも 1,024 トークンが含まれます。
- キャッシュヒット キャッシュヒットが発生した場合、システムは最長一致プレフィックスを選択し、対応するキャッシュブロックの有効期間を 5 分にリセットします。
- 最初のリクエストを送信:テキスト A (1,024 トークン以上) を含むシステムメッセージを送信し、キャッシュマーカーを追加します:
- 「その他のメッセージ」が 20 以下の場合、リクエストはキャッシュブロック A にヒットし、その有効期間が 5 分にリセットされます。システムはまた、A、その他のメッセージ、および B に基づいて新しいキャッシュブロックを作成します。
- 「その他のメッセージ」が 20 を超える場合、リクエストはキャッシュブロック A をミスします。システムは引き続き、完全なコンテキスト (A、その他のメッセージ、および B) に基づいて新しいキャッシュブロックを作成します。
サポート対象モデル
- シンガポール
- 中国 (北京)
- ドイツ (フランクフルト)
- 香港 (中国)
- 日本 (東京)
- 米国 (バージニア)
以下のモデルは、国際デプロイ範囲で利用可能です。Qwen Max: qwen4-max-preview (Token Plan 限定), qwen3.8-max, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08Qwen Open-source: qwen3.8-2.4t-a95b, qwen3.8-27bQwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.5-plus, qwen3.5-plus-2026-04-20, qwen-plusQwen Flash: qwen3.8-flash, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.5-flash, qwen-flashQwen Coder: qwen3-coder-flashQwen VL: qwen3-vl-plus
クイックスタート
以下の例は、OpenAI 互換、DashScope、および Anthropic 互換プロトコルにおけるキャッシュブロックの作成とキャッシュヒットのメカニズムを示しています。
- OpenAI 互換
- DashScope
- Anthropic 互換
cache_control マーカーを追加すると、モックコードリポジトリのコンテンツに対して明示的キャッシュが有効になります。このコンテンツを照会する後続のリクエストでは、システムはキャッシュブロックを再利用し、再計算を排除します。これにより、キャッシュにヒットしたリクエストは、最初のキャッシュ作成リクエストよりも高速かつ安価になります。
複数のキャッシュマーカーによる詳細な制御
複雑なシナリオでは、プロンプトはしばしば再利用頻度が異なる複数の部分で構成されます。複数のキャッシュマーカーを使用して、詳細な制御を実現できます。
例えば、インテリジェントなカスタマーサービスエージェントのプロンプトには、通常、以下が含まれます:
- システムペルソナ:非常に安定しており、めったに変わりません。
- 外部ナレッジ:これはナレッジベースから、またはツールクエリを通じて取得され、1 回の対話中に変更されない場合があります。
- 対話履歴:動的に増加します。
- 現在の質問:リクエストごとに異なります。
課金
明示的キャッシュは、入力トークンの課金方法にのみ影響します。ルールは次のとおりです:
-
キャッシュ作成:新しいキャッシュの作成に使用されるコンテンツは、標準入力トークン価格の 125% で課金されます。新しいキャッシュのコンテンツに既存のキャッシュがプレフィックスとして含まれている場合、増分部分のみがキャッシュ作成として課金されます (つまり、新しいキャッシュトークンの数から既存のキャッシュトークンの数を引いたもの)。
例えば、既存の 1,200 トークンのキャッシュ (キャッシュ A) があり、新しいリクエストで 1,500 トークンのコンテンツ (コンテンツ AB) をキャッシュする場合、最初の 1,200 トークンはキャッシュヒットとして標準価格の 10% で課金されます。新しい 300 トークンは、キャッシュ作成として標準価格の 125% で課金されます。
cache_creation_input_tokensパラメーターは、キャッシュ作成に使用されるトークンの数を指定します。 -
キャッシュヒット:標準入力トークン価格の 10% で課金されます。
cached_tokensパラメーターは、キャッシュされたトークンの数を指定します。 - その他のトークン:キャッシュヒットでもキャッシュ作成に使用されたものでもないトークンは、標準入力トークン価格で課金されます。
- 例外:qwen3.8-max、qwen3.8-flash、および qwen3.8-2.4t-a95b の明示的キャッシュヒット価格は、標準入力トークン価格の 10% ではありません。具体的な価格については、Model Studio コンソールをご参照ください。(キャッシュ作成価格は標準価格の 125% のままです。)
キャッシュ可能なコンテンツ
messages 配列内の以下のメッセージタイプのみがキャッシュマーカーの追加をサポートしています:
-
システムメッセージ
関数呼び出しの場合、リクエストに
toolsパラメーターが含まれていると、ツール定義はキャッシュ計算のためにシステムメッセージに含まれます。ツール定義は独立してキャッシュすることはできません。キャッシュマーカーはメッセージのコンテンツにのみ追加できるため、ツール定義に追加されたキャッシュマーカーは無視されます。 -
ユーザーメッセージ
qwen3-vl-plusモデルでキャッシュを作成する場合、cache_controlマーカーをマルチモーダルコンテンツまたはテキストの後に配置できます。その位置は、ユーザーメッセージ全体がどのようにキャッシュされるかには影響しません。 - アシスタントメッセージ
- ツールメッセージ (ツール実行の結果)
content フィールドを配列に変更し、cache_control フィールドを追加する必要があります:
messages 配列内の他のメッセージタイプにも適用されます。
キャッシュの制限事項
- キャッシュ可能な最小プロンプト長は 1,024 トークンです。
-
キャッシュは後方プレフィックスマッチング戦略を使用します。一致するコンテンツと
cache_controlマーカーを持つメッセージが 20 個以上の content ブロックで区切られている場合、キャッシュミスが発生します。 -
typeはephemeralにのみ設定でき、これにより 5 分間の有効期間を持つキャッシュが作成されます。 -
1 つのリクエストで最大 4 つのキャッシュマーカーをサポートします。
4 つ以上のキャッシュマーカーが提供された場合、最後の 4 つのみが有効になります。
関数呼び出しのキャッシュ最適化
ツール定義は、キャッシュのために JSON 文字列にシリアル化されます。キャッシュの無効化を防ぐため、この定義はすべてのリクエストで同一でなければなりません。以下に注意してください:
- 一貫したツール順序:
tools配列内のツールの順序は、すべてのリクエストで一貫している必要があります。 - 一貫したフィールド順序:同じツール内の JSON フィールドの順序は、すべてのリクエストで一貫している必要があります。
- 一貫したフィールド構造:フィールドが空またはオプションであっても、フィールドを省略したり追加したりしないでください。
並列ツール呼び出しのためのメッセージ構造の最適化
並列ツール呼び出しを使用すると、モデルは 1 回の応答で複数の tool_calls を返します。各ツール結果を個別の tool メッセージとして送信すると、messages 配列内の content ブロックの数が急速に増加します。cache_control マーカーと以前のコンテンツの間に 20 を超える content ブロックがあると、後方ルックバックウィンドウがそれらの以前のブロックに到達できず、キャッシュミスが発生します。
これを解決するには、次のリクエストを送信する前に、連続する同じロールのツールメッセージを複数の content ブロックを持つ単一の tool メッセージにマージします。これにより、総 content ブロック数が減り、キャッシュしたいコンテンツが 20 ブロックのルックバックウィンドウ内に収まります。
最適化前 (個別のツールメッセージ — キャッシュヒット率が低い):
cache_control マーカーを messages 配列の安定した位置 (例えば、システムメッセージや他の頻繁に変更されないコンテンツ) に配置します。1 つのリクエストで最大 4 つのキャッシュマーカーをサポートします。
使用例
長文テキストのクエリ
長文テキストのクエリ
モデルのパフォーマンスを確保するため、システムはいくつかの内部トークンを追加します。これらのトークンは標準の入力価格で課金されます。詳細については、「よくある質問」をご参照ください。
関数呼び出しのためのツールのキャッシュ
関数呼び出しのためのツールのキャッシュ
関数呼び出しのためにシステムメッセージをキャッシュする場合、コードを実行すると、次のような出力が生成されます:
tools パラメーターはシステムメッセージの一部としてキャッシュされます。ツール定義がすべてのリクエストで同一であること (ツールの順序、フィールドの順序、フィールドの構造を含む) を確認し、messages 内の最後の content に cache_control フラグを追加します。以下に完全なフローを示します:最初のリクエストでキャッシュが作成され、2 番目のリクエストでキャッシュにヒットします。連続的なマルチターン対話
連続的なマルチターン対話
典型的なマルチターン対話シナリオでは、各リクエストの messages 配列の最後の content オブジェクトにキャッシュマーカーを追加します。2 ターン目以降、各リクエストは前のターンのキャッシュにヒットしてリフレッシュし、現在のターンの新しいキャッシュブロックを作成します。コードを実行して、大規模言語モデルとの対話を開始します。後続の各質問は、前のターンで作成されたキャッシュにヒットします。
暗黙的キャッシュ
サポート対象モデル
- 中国 (北京)
- シンガポール
- 米国 (バージニア)
- ドイツ (フランクフルト)
- 中国 (香港)
- 日本 (東京)
-
テキスト生成モデル
- Qwen Max: qwen3.8-max, qwen3.7-max, qwen3.7-max-2026-05-20, qwen3.7-max-2026-06-08, qwen-max
- Qwen Plus: qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen-plus
- Qwen Flash: qwen3.8-flash, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen-flash
- Qwen Coder: qwen3-coder-flash
- Qwen Open-source: qwen3.8-2.4t-a95b, qwen3.8-27b
- DeepSeek: deepseek-v4-pro, deepseek-v4.1-flash-1017
- Kimi: kimi-k3.1-pro, kimi-k2.7-code, kimi-k2.6, kimi-k2.5
- GLM: glm-5.2, glm-5.2-fast-preview, glm-5.1, glm-5
- MiniMax: MiniMax-M2.5
-
視覚理解モデル
- Qwen VL: qwen3-vl-plus
仕組み
暗黙的キャッシュ機能は、サポートされているモデルにリクエストが送信されると自動的に有効になります。システムの動作は次のとおりです:
-
検索:リクエストを受信した後、システムはプレフィックスマッチングを使用して、リクエストの
messages配列のコンテンツの共通プレフィックスをキャッシュで確認します。 -
決定:
- キャッシュヒットが発生した場合、システムは残りの推論にキャッシュされた結果を使用します。
- キャッシュミスが発生した場合、システムはリクエストを通常どおり処理し、将来のリクエストのためにプロンプトのプレフィックスをキャッシュに保存します。
システムは、長期間使用されていないキャッシュデータを定期的にクリアします。コンテキストキャッシュのヒット確率は 100% ではありません。リクエストのコンテキストが同一であっても、キャッシュミスが発生する可能性があります。システムが特定のヒット確率を決定します。
暗黙的キャッシュをトリガーするために必要な最小トークン数は、Qwen3.7 モデルでは約 2000、その他のモデルでは 256 です。
キャッシュヒット確率の向上
暗黙的キャッシュヒットは、異なるリクエストのプレフィックスに重複するコンテンツがある場合に発生します。ヒット確率を高めるには、重複するコンテンツをプロンプトの先頭に、一意のコンテンツを末尾に配置します。
- テキストモデル:例えば、システムが「ABCD」をキャッシュしたとします。「ABE」のリクエストは「AB」の部分にヒットする可能性がありますが、「BCD」のリクエストはヒットしません。
-
視覚理解モデル:
- 同じ画像または動画について複数の質問をするには、画像または動画をテキストの前に配置します。
- 異なる画像または動画について同じ質問をするには、テキストを画像または動画の前に配置します。
課金
暗黙的キャッシュモードを有効にしても、追加料金は発生しません。
リクエストがキャッシュにヒットすると、キャッシュヒットからの入力トークンは cached_token として課金されます。これらのトークンの割引率は、モデルによって異なります。キャッシュにヒットしなかった入力トークンは、標準の input_token として課金されます。出力トークンは元の価格で課金されます。
-
deepseek-v4.1-flash、deepseek-v4.1-flash-1017、deepseek-v4-pro、qwen3.8-max、qwen3.8-flash、および qwen3.8-2.4t-a95b 以外のモデルの場合:
cached_tokenの単価は、input_token単価の 20% です。 -
deepseek-v4-pro:
cached_tokenの単価は、input_token単価の 20% ではありません。具体的な価格については、Model Studio コンソールをご参照ください。 -
deepseek-v4.1-flash および deepseek-v4.1-flash-1017:
cached_tokenは固定単価で課金され、すべてのリージョンで 100 万トークンあたり $0.003(オフピーク時間帯)、$0.006(ピーク時間帯)です。 -
qwen3.8-max、qwen3.8-flash、および qwen3.8-2.4t-a95b:
cached_tokenの単価は、input_token単価の 20% ではありません。具体的な価格については、Model Studio コンソールをご参照ください。 - GLM (Alibaba Cloud Model Studio にデプロイ):glm-5.2 および glm-5.2-fast-preview は 25%、その他のすべての GLM シリーズモデルは 20% です。
- 非キャッシュヒットトークン (5,000):単価の 100% で課金されます。
- キャッシュヒットトークン (5,000):単価の 20% で課金されます。

cached_tokens 属性から取得できます。
OpenAI 互換 - バッチ (ファイル入力) メソッドを使用して行われた呼び出しは、キャッシュ割引の対象外です。
キャッシュヒットの例
- テキスト生成モデル
- 視覚理解モデル
- OpenAI 互換
- DashScope
- Anthropic 互換
OpenAI 互換メソッドを使用してモデルを呼び出し、暗黙的キャッシュがトリガーされると、応答は
usage.prompt_tokens_details.cached_tokens フィールドでキャッシュにヒットしたトークンの数を示します。この値は usage.prompt_tokens の一部です。ユースケース
リクエストが共通のプレフィックスを共有している場合、コンテキストキャッシュは推論速度を大幅に向上させ、推論コストを削減し、最初のパケットのレイテンシを短縮できます。この機能は、特に以下のユースケースで役立ちます:
- 長文テキストの質疑応答 小説、教科書、法的文書など、同じ長文テキストについて複数のリクエストを送信する場合にこのパターンを使用します。 最初のリクエストメッセージ
video を text の前に配置するとキャッシュヒットの確率が高まります。異なる動画について同じ質問をする場合、text を video の前に配置するとキャッシュヒットの確率が高まります。次の例は、同じ動画に対する 2 つのリクエストを示しています:
よくある質問
Q:コンテキストキャッシュはどのくらいの期間保持されますか (有効期間)?
A:コンテキストキャッシュの有効期間は、キャッシュの種類によって異なります:
- 明示的キャッシュ:有効期間は 5 分で、キャッシュヒットごとにさらに 5 分にリセットされます。キャッシュブロックが 5 分以内にヒットしない場合、システムは自動的にクリアします。
- 暗黙的キャッシュ:システムによって自動的に管理され、固定の有効期間はありません。システムは、長期間使用されていないキャッシュデータを定期的にクリアします。
この有効期間は、API 呼び出し中のコンテキストキャッシュのライフサイクルを指します。コンソールのモデル体験またはモデルデバッグページに表示される対話履歴と同じ機能ではありません。
Q:暗黙的キャッシュを無効にするにはどうすればよいですか?
A:無効にすることはできません。暗黙的キャッシュは、応答品質に影響を与えないため、すべての適用可能なモデルリクエストで有効になっています。キャッシュヒットが発生すると、コストが削減され、応答速度が向上します。
Q:明示的キャッシュがミスしたのはなぜですか?
A:キャッシュミスは、以下の理由で発生する可能性があります:
- システムは、5 分の有効期間内にヒットしない場合、キャッシュブロックをクリアします。
- 最後の
contentと既存のキャッシュブロックの間隔が 20contentブロックを超える場合、キャッシュヒットは発生しません。新しいキャッシュブロックを作成することをお勧めします。
Q:キャッシュヒットで有効期間はリセットされますか?
A:はい。各ヒットで、キャッシュブロックの有効期間が 5 分にリセットされます。
Q:明示的キャッシュはアカウント間で共有されますか?
A:いいえ。暗黙的キャッシュと明示的キャッシュの両方のデータは、アカウントレベルで分離されています。
Q:明示的キャッシュはモデル間で共有されますか?
A:いいえ。キャッシュデータはモデル間で分離されています。
Q:なぜusageのinput_tokensがcache_creation_input_tokensとcached_tokensの合計と等しくないのですか?
A:モデルの出力品質を確保するため、バックエンドサービスはプロンプトに少数のトークン (通常は 10 以下) を追加します。これらのトークンは cache_control マーカーの後に配置されるため、キャッシュの作成や読み取りにはカウントされませんが、合計の input_tokens には含まれます。