> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 接頭辞キャッシュ

> 接頭辞キャッシュで繰り返し使用するプロンプトのレイテンシーを削減し、必要に応じて cache_salt でキャッシュの再利用を分離します。

W\&B Inference は、サポートされるホスト済みモデルで接頭辞キャッシュを使用し、同じプロンプト接頭辞を持つリクエストの繰り返しを高速化します。

リクエストが、同じバックエンド上の以前のリクエストと同じプロンプト接頭辞を共有する場合、モデルは接頭辞全体を再計算せずに、以前に計算したキーバリュー (KV) キャッシュを再利用します。これにより、繰り返し使用するプロンプト、長いシステムプロンプト、共通の接頭辞が変わらないワークロードのレイテンシーが削減されます。

サポートされるモデルでは接頭辞キャッシュが自動的に行われるため、リクエストで有効にする必要はありません。このページでは、接頭辞キャッシュが最も効果的な場合と、`cache_salt` を使用してキャッシュの分離を制御する方法を説明します。

<h2 id="when-prefix-caching-helps">
  接頭辞キャッシュが効果を発揮する場面
</h2>

接頭辞キャッシュは、長い共通の接頭辞を持つリクエストを繰り返し送信する場合に特に有効です。たとえば、次のようなケースが該当します。

* 大規模なシステムプロンプトを多数のリクエストで再利用する場合。
* 長い共有ドキュメントに続けて、さまざまなユーザーの質問を送信する場合。
* リクエストごとにわずかな変更しかない評価プロンプトを繰り返し送信する場合。
* 会話履歴の大部分が変わらないマルチターンのワークロード。

<h2 id="cache-isolation">
  キャッシュの分離
</h2>

環境によっては、異なるユーザーやアプリケーション間でキャッシュが再利用されないようにする必要があります。`cache_salt` パラメーターでこれを制御できます。

デフォルトでは、バックエンドが許可している場合、プロンプト接頭辞が同一のリクエストは、共有インフラストラクチャー上のキャッシュを再利用できます。

キャッシュの再利用を特定の信頼境界内に限定するには、リクエストパラメーター `cache_salt` を設定します。リクエストは、プロンプト接頭辞と `cache_salt` の両方が一致する場合にのみ、接頭辞キャッシュを再利用します。

単一のユーザー、テナント、セッション、またはアプリケーションの境界内ではキャッシュを再利用し、他の呼び出し元との間では再利用しないようにする場合は、`cache_salt` を使用してください。

<h3 id="how-it-works">
  仕組み
</h3>

`cache_salt` の有無と値は、キャッシュの再利用に以下のように影響します：

* 同じプロンプト接頭辞、 `cache_salt` なし: 一致するリクエスト間でキャッシュが再利用される可能性があります。
* 同じプロンプト接頭辞、同じ `cache_salt`: キャッシュを再利用できます。
* 同じプロンプト接頭辞、異なる `cache_salt`: キャッシュは分離され、異なる `cache_salt` 間で再利用されません。

<Note>
  `cache_salt` を指定する場合は、空文字列でない string でなければなりません。
</Note>

<h2 id="examples">
  サンプル
</h2>

次のサンプルは、`cache_salt` を指定してチャット補完リクエストを送信し、キャッシュの再利用を分離する方法を示しています。

<Tabs>
  <Tab title="Python">
    ```python theme={"system"}
    import openai

    client = openai.OpenAI(
        base_url="https://api.inference.wandb.ai/v1",
        api_key="<your-api-key>",
    )

    response = client.chat.completions.create(
        model="moonshotai/Kimi-K2.5",
        messages=[
            {
                "role": "system",
                "content": "You are a careful assistant that answers concisely."
            },
            {
                "role": "user",
                "content": "Summarize this document in one sentence: <long shared prefix here>"
            },
        ],
        extra_body={
            "cache_salt": "tenant-a-user-123-secret",
        },
    )

    print(response.choices[0].message.content)
    ```
  </Tab>

  <Tab title="Bash">
    ```bash theme={"system"}
    curl https://api.inference.wandb.ai/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your-api-key>" \
      -d '{
        "model": "moonshotai/Kimi-K2.5",
        "messages": [
          { "role": "system", "content": "You are a careful assistant that answers concisely." },
          { "role": "user", "content": "Summarize this document in one sentence: <long shared prefix here>" }
        ],
        "cache_salt": "tenant-a-user-123-secret"
      }'
    ```
  </Tab>
</Tabs>

<h2 id="response-behavior">
  応答の動作
</h2>

接頭辞キャッシュがリクエストに対してアクティブであることを確認するには、応答の使用状況の詳細を確認します。一部のモデルでは、使用状況の詳細に、接頭辞キャッシュが再利用された場合に `usage.prompt_tokens_details.cached_tokens` のキャッシュされたトークン数が含まれることがあります。このフィールドの可用性は、モデルとバックエンドによって異なります。

<h2 id="related-pages">
  関連ページ
</h2>

以下のページでは、関連するトピックについて説明しています。

* [Chat Completions](/ja/products/inference/serverless/api-reference/chat-completions)
* [ストリーミング応答を有効にする](/ja/products/inference/serverless/response-settings/streaming)
* [構造化出力](/ja/products/inference/serverless/response-settings/structured-output)
* [JSON モード](/ja/products/inference/serverless/response-settings/json-mode)


## Related topics

- [応答キャッシュ](/ja/model-distillation/proxy/response-caching.md)
