

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モデル推論を高速化するためのプロンプトキャッシュ
<a name="prompt-caching"></a>

プロンプトキャッシュは、Amazon Bedrock でサポートされているモデルで使用できるオプション機能であり、推論レスポンスのレイテンシーと入力トークンのコストを削減できます。コンテキストの一部をキャッシュに追加することで、モデルはキャッシュを活用して入力の再計算をスキップできるため、Bedrock はコンピューティングの節約を共有し、レスポンスのレイテンシーを短縮できます。

プロンプトキャッシュは、長さと繰り返しがあり複数のクエリで頻繁に再利用されるコンテキストのワークロードがある場合に役立ちます。例えば、ユーザーがドキュメントをアップロードして質問できるチャットボットがある場合、ユーザーが入力するたびにモデルがドキュメントを処理すると時間がかかる可能性があります。プロンプトキャッシュを使用すると、ドキュメントをキャッシュでき、そのドキュメントを含む将来のクエリを再処理する必要がなくなります。

プロンプトキャッシュを使用する場合、キャッシュから読み取られたトークンに対して割引料金で課金されます。モデルによっては、キャッシュに書き込まれたトークンは、キャッシュされていない入力トークンよりも高い料金で課金される場合があります。キャッシュとの間で読み書きされないトークンは、そのモデルの標準入力トークン料金で課金されます。詳細については、「[Amazon Bedrock の料金ページ](https://aws.amazon.com/bedrock/pricing/)」を参照してください。

## 仕組み
<a name="prompt-caching-overview"></a>

プロンプトキャッシュを使用する場合、Amazon Bedrock は*キャッシュチェックポイント*で構成されるキャッシュを作成します。これらは、キャッシュするプロンプトの連続するサブセクションを定義するマーカーです (多くの場合、プロンプトプレフィックスと呼ばれます)。これらのプロンプトプレフィックスはリクエスト間で静的である必要があり、後続のリクエストでプロンプトプレフィックスを変更すると、キャッシュミスが発生します。

キャッシュチェックポイントには、使用している特定のモデルに応じて、トークンの最小数と最大数があります。キャッシュチェックポイントは、合計プロンプトプレフィックスがトークンの最小数を満たしている場合にのみ作成できます。例えば、Anthropic Claude 3.7 Sonnet モデルでは、キャッシュチェックポイントあたり少なくとも 1,024 トークンが必要です。つまり、最初のキャッシュチェックポイントは 1,024 トークンの後に定義でき、2 番目のキャッシュチェックポイントは 2,048 トークンの後に定義できます。トークンの最小数を満たす前にキャッシュチェックポイントを追加しようとすると、推論は成功しますが、プレフィックスはキャッシュされません。キャッシュには有効期限 (TTL) があり、キャッシュヒットが成功するたびにリセットされます。この期間中、キャッシュ内のコンテキストは保持されます。TTL ウィンドウ内でキャッシュヒットが発生しない場合、キャッシュは期限切れになります。ほとんどのモデルは 5 分間の TTL をサポートし、Claude Opus4.5、Claude Haiku 4.5、および は 1 時間の延長 TTL オプションClaude Sonnet 4.5もサポートしています。

プロンプトキャッシュは、サポートされているモデルの Amazon Bedrock でモデル推論を取得するたびに使用できます。プロンプトキャッシュは、次の Amazon Bedrock 機能でサポートされています。

**Converse API と ConverseStream API**  
プロンプトでキャッシュチェックポイントを指定して、モデルと会話を続けることができます。

**InvokeModel API と InvokeModelWithResponseStream API**  
プロンプトキャッシュを有効にしてキャッシュチェックポイントを指定する、単一のプロンプトリクエストを送信できます。

**クロスリージョン推論を使用したプロンプトキャッシュ**  
プロンプトキャッシュは、クロスリージョン推論と組み合わせて使用できます。クロスリージョン推論は、推論リクエストを処理するために地域内の最適な AWS リージョンを自動的に選択し、利用可能なリソースとモデルの可用性を最大化します。需要が高い場合、この最適化によりキャッシュ書き込みが増加する可能性があります。

**Amazon Bedrock Prompt Management**  
プロンプト[を作成](prompt-management-create.md)または[変更](prompt-management-modify.md)するときに、プロンプトキャッシュを有効にするように選択できます。モデルに応じて、システムプロンプト、システム手順、メッセージ (ユーザーとアシスタント) をキャッシュできます。プロンプトキャッシュは無効にすることもできます。

API を使用すると、プロンプトキャッシュを最も柔軟かつきめ細かく制御できます。プロンプト内で個々のキャッシュチェックポイントを設定できます。特定のモデルで許可されているキャッシュチェックポイントの最大数までキャッシュチェックポイントをさらに作成することで、キャッシュを追加できます。詳細については、「[サポートされているモデル、リージョン、制限](#prompt-caching-models)」を参照してください。

## サポートされているモデル、リージョン、制限
<a name="prompt-caching-models"></a>

次の表は、サポートされているモデルとそのトークンの最小値、キャッシュチェックポイントの最大数、キャッシュチェックポイントを許可するフィールドの一覧です。

プロンプトキャッシュをサポートするモデルを確認するには、[「Models at glance](model-cards.md)」を参照してから、関心のあるモデルを選択してください。次の表は、一目でわかるモデルに存在しないmodels-at-a-glanceプロンプトキャッシュを示しています。


| モデル名 | モデル ID | リリースタイプ | キャッシュチェックポイントあたりのトークンの最小数 | リクエストあたりのキャッシュチェックポイントの最大数 | サポートされている TTL | プロンプトキャッシュチェックポイントを受け入れるフィールド | 
| --- | --- | --- | --- | --- | --- | --- | 
| Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | 一般提供 | 1,024 | 4 | 5 分 | 「system」、「messages」、「tools」 | 
| Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 | 一般提供 | 1,024 | 4 | 5 分 | 「system」、「messages」、「tools」 | 
| Claude 3.5 Sonnet v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 | プレビュー | 1,024 | 4 | 5 分 | 「system」、「messages」、「tools」 | 

サポートされているモデル (Claude Opus 4.5、、および Claude Sonnet 4.5) で 1 時間の TTL オプションを使用するにはClaude Haiku 4.5、キャッシュチェックポイントで `ttl`フィールドを指定します。Converse API で、 `cachePoint` オブジェクト`"ttl": "1h"`に を追加します。Claude モデル用の InvokeModel API で、 `cache_control` オブジェクト`"ttl": "1h"`に を追加します。`ttl` 値を指定しない場合、デフォルトの 5 分間のキャッシュ動作が適用されます。1 時間の TTL は、長時間実行されるセッションやバッチ処理シナリオで、長期間キャッシュを維持する場合に便利です。

Amazon Nova は、`User` および `System` メッセージを含むすべてのテキストプロンプトの自動プロンプトキャッシュを提供します。このメカニズムにより、明示的な設定がない場合でも、プロンプトが反復的な部分で始まる場合にレイテンシーのメリットを得られます。ただし、コスト削減を実現し、より一貫したパフォーマンス上のメリットを確保するには、**明示的なプロンプトキャッシュ**にオプトインすることをお勧めします。

## Claude モデルのキャッシュ管理の簡素化
<a name="prompt-caching-simplified"></a>

Claude モデルの場合、Amazon Bedrock はキャッシュ管理のアプローチを簡素化し、キャッシュチェックポイントを手動で配置する複雑さを軽減します。正確なキャッシュチェックポイントの場所を指定する代わりに、静的コンテンツの最後にある 1 つのブレークポイントで自動キャッシュ管理を使用できます。

キャッシュ管理の簡素化を有効にすると、指定されたブレークポイントから最大約 20 個のコンテンツブロックまで遡って、以前のコンテンツブロック境界でのキャッシュヒットが自動的にチェックされます。これにより、モデルは最適なチェックポイントの場所を予測することなく、最も長く一致するプレフィックスをキャッシュから見つけることができます。これを使用するには、動的または可変コンテンツの前の、静的コンテンツの最後に 1 つのキャッシュチェックポイントを配置します。システムは最適なキャッシュ一致を自動的に見つけます。

よりきめ細かな制御を行うには、複数のキャッシュチェックポイント (Claude モデルの場合は最大 4 つ) を使用して正確なキャッシュ境界を指定することもできます。異なる頻度で変化するセクションをキャッシュする場合や、キャッシュされる内容を正確に制御したい場合は、複数のキャッシュチェックポイントを使用する必要があります。

**重要**  
自動プレフィックスチェックは、キャッシュチェックポイントから約 20 個のコンテンツブロックのみを遡って調べます。静的コンテンツがこの範囲を超える場合は、複数のキャッシュチェックポイントを使用するか、プロンプトを再構築して、最も頻繁に再利用されるコンテンツをこの範囲内に配置することを検討してください。

## プロンプトキャッシュを効果的に使用する方法
<a name="prompt-caching-effective-use"></a>

定期的に使用されるプロンプト (5 分ごとにより頻繁に使用されるシステムプロンプト) がある場合は、引き続き 5 分間のキャッシュを使用します。これは追加料金なしで更新されるためです。

1 時間のキャッシュは、以下のシナリオに最適です。
+ 使用する頻度が 5 分未満で、1 時間ごとよりも頻繁になる可能性があるプロンプトがある場合。例えば、エージェント側のエージェントが 5 分以上かかる場合、またはユーザーとの長いチャット会話を保存する場合、通常、そのユーザーは 5 分以内に応答しない可能性があります。
+ レイテンシーが重要で、フォローアッププロンプトが 5 分を超えて送信される場合があります。
+ レート制限の使用率を向上させる場合、キャッシュヒットはレート制限に対して差し引かれないためです。

同じリクエストで 1 時間と 5 分のキャッシュコントロールの両方を使用できますが、重要な制約があります。TTL が長いキャッシュエントリは、短い TTLs の前に表示する必要があります (つまり、5 分のキャッシュエントリの前に 1 時間のキャッシュエントリを表示する必要があります）。

## 開始方法
<a name="prompt-caching-get-started"></a>

以下のセクションでは、Amazon Bedrock を介してモデルを操作する各方法でプロンプトキャッシュ機能を使用する方法の概要を示します。

### Converse API
<a name="prompt-caching-converse"></a>

[Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) API には、複数ターンの会話でプロンプトキャッシュを実装するための高度で柔軟なオプションが用意されています。各モデルのプロンプト要件の詳細については、前のセクションの「[サポートされているモデル、リージョン、制限](#prompt-caching-models)」を参照してください。

**リクエストの例**

次の例は、Converse API へのリクエストの `messages`、`system`、または `tools` フィールドに設定されたキャッシュチェックポイントを示しています。特定のリクエストで、これらの場所のいずれかにチェックポイントを配置できます。例えば、Claude 3.5 Sonnet v2 モデルにリクエストを送信する場合、2 つのキャッシュチェックポイントを `messages` に、1 つのキャッシュチェックポイントを `system` に、もう 1 つのキャッシュチェックポイントを `tools` に配置することができます。Converse API リクエストの構造化と送信の詳細な例については、「[Converse API オペレーションを使用して会話を実行する](conversation-inference.md)」を参照してください。

次のように目的の ttl 値を指定します。ttl 値が指定されていない場合、デフォルトの動作である 5 分間のキャッシュが適用されます。

```
"cachePoint" : {
    "type": "default",
    "ttl" : "5m | 1h"
}
```

------
#### [ messages checkpoints ]

この例では、最初の `image` フィールドはモデルにイメージを提供し、2 番目の `text` フィールドはモデルに画像の分析を求めます。`content` オブジェクトの `cachePoint` の前にあるトークンの数がモデルの最小トークン数を満たす限り、キャッシュチェックポイントが作成されます。

```
...
"messages": [
   {
        "role": "user",
        "content": [
            {
                "image": {
                    "bytes": "asfb14tscve..."
                }
            },
            {
                "text": "What's in this image?"
            },
            {
                "cachePoint": {
                    "type": "default"
                }
            }
      ]
  }
]
...
```

------
#### [ system checkpoints ]

この例では、`text` フィールドにシステムプロンプトを指定します。さらに、システムプロンプトをキャッシュする `cachePoint` フィールドを追加できます。

```
...
  "system": [ 
    {
        "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. "
    },
    {
        "cachePoint": {
            "type": "default"
        }
    }
  ],
...
```

------
#### [ tools checkpoints ]

この例では、`toolSpec` フィールドにツール定義を指定します。(または、以前に定義したツールを呼び出すこともできます。詳細については、「[ツールを使用して Amazon Bedrock のモデルレスポンスを完成させる](tool-use.md)」を参照してください)。その後、ツールをキャッシュする `cachePoint` フィールドを追加できます。

```
...
toolConfig={
    "tools": [
        {
            "toolSpec": {
                "name": "top_song",
                "description": "Get the most popular song played on a radio station.",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "sign": {
                                "type": "string",
                                "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP."
                            }
                        },
                        "required": [
                            "sign"
                        ]
                    }
                }
            }
        },
        {
                "cachePoint": {
                    "type": "default"
                }
        }
    ]
}
...
```

------

Converse API からのモデルレスポンスには、プロンプトキャッシュに固有の 3 つの新しいフィールドが含まれています。`CacheReadInputTokens` と `CacheWriteInputTokens` の値は、キャッシュから読み取られたトークンの数と、以前のリクエストのためにキャッシュに書き込まれたトークンの数を示します。`CacheDetails` 値は、キャッシュに書き込まれたトークンの数に使用される ttl を示します。これらは、Amazon Bedrock によって課金される値で、完全なモデル推論のコストよりも低い料金です。

### InvokeModel API
<a name="prompt-caching-invoke"></a>

[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API を呼び出すと、プロンプトキャッシュはデフォルトで有効になります。前の Converse API の例と同様に、キャッシュチェックポイントはリクエスト本文の任意の時点で設定できます。

------
#### [ Anthropic Claude ]

次の例は、Anthropic Claude 3.5 Sonnet v2 モデルの InvokeModel リクエストの本文を構成する方法を示しています。InvokeModel リクエストの本文の正確な形式とフィールドは、選択したモデルによって異なる場合があります。さまざまなモデルのリクエスト本文とレスポンス本文の形式と内容を確認するには、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。

次のように目的の ttl 値を指定します。ttl 値が指定されていない場合、デフォルトの動作である 5 分間のキャッシュが適用されます。

```
"cache_control" : {
    "type": "ephemeral",
    "ttl" : "5m | 1h"
}
```

```
body={
        "anthropic_version": "bedrock-2023-05-31",
        "system":"Reply concisely",
        "messages": [
            {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Describe the best way to learn programming."
                },
                {
                    "type": "text",
                    "text": "Add additional context here for the prompt that meets the minimum token requirement for your chosen model.",
                    "cache_control": {
                        "type": "ephemeral"
                    }
                }
            ]
            }
        ],
        "max_tokens": 2048,
        "temperature": 0.5,
        "top_p": 0.8,
        "stop_sequences": [
            "stop"
        ],
        "top_k": 250
}
```

------
#### [ Amazon Nova ]

次の例は、Amazon Nova モデルの InvokeModel リクエストの本文を構成する方法を示しています。InvokeModel リクエストの本文の正確な形式とフィールドは、選択したモデルによって異なる場合があります。さまざまなモデルのリクエスト本文とレスポンス本文の形式と内容を確認するには、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。

```
{
    "system": [{
        "text": "Reply Concisely"
    }],
    "messages": [{
        "role": "user",
        "content": [{
            "text": "Describe the best way to learn programming"
        },
        {
            "text": "Add additional context here for the prompt that meets the minimum token requirement for your chosen model.",
            "cachePoint": {
                "type": "default"
            }
        }]
    }],
    "inferenceConfig": {
        "maxTokens": 300,
        "topP": 0.1,
        "topK": 20,
        "temperature": 0.3
    }
}
```

------

InvokeModel リクエストの送信の詳細については、「[InvokeModel で 1 つのプロンプトを送信する](inference-invoke.md)」を参照してください。

### プレイグラウンド
<a name="prompt-caching-playground"></a>

Amazon Bedrock コンソールのチャットプレイグラウンドで、プロンプトキャッシュオプションを有効にすると、Amazon Bedrock が自動的にキャッシュチェックポイントを作成します。

Amazon Bedrock プレイグラウンドでプロンプトを開始するには、「[Generate responses in the console using playgrounds](playgrounds.md)」の手順に従います。サポートされているモデルでは、プレイグラウンドでプロンプトキャッシュが自動的に有効になります。そうでない場合は、次の手順を実行してプロンプトキャッシュを有効にします。

1. 左側のパネルで、**[設定]** メニューを開きます。

1. **[プロンプトキャッシュ]** の切り替えをオンにします。

1. プロンプトを実行します。

入力レスポンスとモデルレスポンスの組み合わせがチェックポイントに必要なトークンの最小数 (モデルによって異なります) に達すると、Amazon Bedrock は最初のキャッシュチェックポイントを自動的に作成します。チャットを続けると、トークンの最小数に達するたびに、モデルで許可されるチェックポイントの最大数まで新しいチェックポイントが作成されます。次のスクリーンショットに示すように、**[プロンプトキャッシュ]** の切り替えの横にある **[キャッシュチェックポイントを表示する]** を選択すると、キャッシュチェックポイントをいつでも表示できます。

![\[Amazon Bedrock テキストプレイグラウンドでのプロンプトキャッシュの UI トグル\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/prompt-caching/bedrock-prompt-caching-ui-toggle.png)


プレイグラウンドレスポンスで **[キャッシュメトリクス]** ポップアップ (![\[The metrics icon shown in model responses when prompt caching is enabled.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/prompt-caching/bedrock-prompt-caching-metrics-icon.png)) を表示して、モデルとのやり取りによってキャッシュとの間で読み書きされているトークンの数を表示できます。

![\[キャッシュとの間で読み書きされたトークンの数を示すキャッシュメトリクスボックス\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/prompt-caching/bedrock-prompt-caching-metrics.png)


会話の途中でプロンプトキャッシュの切り替えをオフにすると、モデルとのチャットを続行できます。