

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 提示快取可加快模型推論速度
<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,048 個字符之後定義。如果您在達到字符數量下限之前嘗試新增快取檢查點，則推論仍會成功，但不會將字首快取。快取具有存留時間 (TTL)，它會在每次快取命中成功時重設。在此期間，會保留快取中的內容。如果 TTL 時段內沒有發生快取命中，則快取會過期。大多數模型支援 5 分鐘的 TTL，而 Claude Opus 4.5Claude Haiku 4.5、 和 Claude Sonnet 4.5也支援延長的 1 小時 TTL 選項。

每當您在 Amazon Bedrock 中針對支援的模型取得模型推論時，都可以使用提示快取。下列 Amazon Bedrock 功能支援提示快取：

**Converse 和 ConverseStream API**  
您可以與在提示中指定快取檢查點所在的模型進行對話。

**InvokeModel 和 InvokeModelWithResponseStream API**  
您可以提交單一提示請求，在其中啟用提示快取並指定快取檢查點。

**透過跨區域推論的提示快取**  
提示快取可與跨區域推論搭配使用。跨區域推論會自動選取您地理位置內的最佳 AWS 區域，以滿足您的推論請求，從而最大化可用的資源和模型可用性。在需求高的時候，這些最佳化可能會導致快取寫入增加。

**Amazon Bedrock 提示管理**  
當您[建立](prompt-management-create.md)或[修改](prompt-management-modify.md)提示時，可以選擇啟用提示快取。視模型而定，您可以快取系統提示、系統指示和訊息 (使用者和助理)。您也可以選擇停用提示快取。

API 可為您提供對提示快取最大的彈性和最精細的控制。您可以在提示中設定個別快取檢查點。您可以透過建立更多快取檢查點來新增至快取，最多可達特定模型允許的快取檢查點數量上限。如需詳細資訊，請參閱[支援的模型、區域和限制](#prompt-caching-models)。

## 支援的模型、區域和限制
<a name="prompt-caching-models"></a>

下表列出支援的模型及其字符下限、快取檢查點數量上限，以及允許快取檢查點的欄位。


| 模型名稱 | 模型 ID | 版本類型 | 每個快取檢查點的字符數量下限 | 每個請求的快取檢查點數量上限 | 支援的 TTL | 接受提示快取檢查點的欄位 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Claude Opus 4.5 | anthropic.claude-opus-4-5-20251101-v1：0 | 全面推出 | 4,096 | 4 | 5 分鐘、1 小時 | `system`、`messages` 和 `tools` | 
| Claude Opus 4.1 | anthropic.claude-opus-4-1-20250805-v1:0 | 全面推出 | 1,024 | 4 | 5 分鐘 | `system`、`messages` 和 `tools` | 
| Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | 全面推出 | 1,024 | 4 | 5 分鐘 | `system`、`messages` 和 `tools` | 
| Claude Sonnet 4.5 | anthropic.claude-sonnet-4-5-20250929-v1:0 | 全面推出 | 1,024 | 4 | 5 分鐘、1 小時 | `system`、`messages` 和 `tools` | 
| Claude Haiku 4.5 | anthropic.claude-haiku-4-5-20251001-v1:0 | 全面推出 | 4,096 | 4 | 5 分鐘、1 小時 | `system`、`messages` 和 `tools` | 
| Claude Sonnet 4 | anthropic.claude-sonnet-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 Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 | 全面推出 | 2,048 | 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` | 
| Amazon Nova Micro | amazon.nova-micro-v1:0 | 全面推出 | 1K1 | 4 | 5 分鐘 | `system` 和 `messages` | 
| Amazon Nova Lite | amazon.nova-lite-v1:0 | 全面推出 | 1K1 | 4 | 5 分鐘 | `system` 和 `messages`2 | 
| Amazon Nova Pro | amazon.nova-pro-v1:0 | 全面推出 | 1K1 | 4 | 5 分鐘 | `system` 和 `messages`2 | 
| Amazon Nova Premier | amazon.nova-premier-v1:0 | 全面推出 | 1K1 | 4 | 5 分鐘 | `system` 和 `messages`2 | 
| Amazon Nova 2 Lite | amazon.nova-2-lite-v1：0 | 全面推出 | 1K1 | 4 | 5 分鐘 | `system` 和 `messages`2 | 

1：Amazon Nova 模型支援數量最多 2 萬個字符進行提示快取。

2：提示快取主要用於文字提示。

若要搭配支援的模型 (Claude Opus 4.5、 和 Claude Sonnet 4.5) 使用 1 小時 TTL 選項Claude Haiku 4.5，請在快取檢查點中指定 `ttl` 欄位。在 Converse API 中，將 `"ttl": "1h"`新增至`cachePoint`物件。在適用於 Claude 模型的 InvokeModel API 中，將 `"ttl": "1h"`新增至`cache_control`物件。如果未提供任何`ttl`值，則會套用預設的 5 分鐘快取行為。1 小時 TTL 適用於長時間執行的工作階段或批次處理案例，而您想要在長時間內維護快取。

Amazon Nova 為所有文字提示提供自動提示快取，包括 `User` 和 `System` 訊息。當提示開頭有重複的部分時，即使沒有明確的組態，這種機制也可以提供延遲優勢。不過，為了節省成本並確保有更穩定的效能優勢，我們建議您選擇加入**明確提示快取**。

## Claude 模型的簡化快取管理
<a name="prompt-caching-simplified"></a>

對於 Claude 模型，Amazon Bedrock 提供簡化的快取管理方法，可降低手動放置快取檢查點的複雜性。您不需要指定確切的快取檢查點位置，而是可以搭配靜態內容結尾的單一中斷點使用自動快取管理。

當您啟用簡化的快取管理時，系統會自動檢查先前內容區塊界限的快取命中，從您指定的中斷點回溯至最多約 20 個內容區塊。這可讓模型從快取中尋找最長的相符字首，而不需要您預測最佳檢查點位置。若要使用此功能，請在靜態內容的結尾放置單一快取檢查點，再放置任何動態或可變內容。系統會自動尋找最佳的快取相符項目。

為了更精細的控制，您仍然可以使用多個快取檢查點 (Claude 模型最多 4 個) 來指定確切的快取界限。如果您要快取以不同頻率變更的區段，或想要更精確地控制快取的內容，您應該使用多個快取檢查點。

**重要**  
自動字首檢查只會從快取檢查點回溯查看大約 20 個內容區塊。如果您的靜態內容超出此範圍，請考慮使用多個快取檢查點或重組您的提示，將最常重複使用的內容放在此範圍內。

## 如何有效地使用提示快取
<a name="prompt-caching-effective-use"></a>

如果您有定期使用的提示 （即每 5 分鐘使用頻率較頻繁的系統提示），請繼續使用 5 分鐘快取，因為這會繼續重新整理，無需額外費用。

1 小時快取最適合在下列情況下使用：
+ 當您的提示可能使用頻率低於 5 分鐘，但比每小時更頻繁時。例如，當客服人員端代理程式需要超過 5 分鐘的時間，或與使用者儲存長聊天對話時，您通常預期該使用者可能不會在接下來的 5 分鐘內回應。
+ 當延遲很重要時，您的追蹤提示可能會超過 5 分鐘傳送。
+ 當您想要改善速率限制使用率時，因為快取命中不會從您的速率限制中扣除。

您可以在相同的請求中使用 1 小時和 5 分鐘快取控制，但具有重要的限制：具有較長 TTL 的快取項目必須在較短 TTLs 之前出現 （即 1 小時快取項目必須在任何 5 分鐘快取項目之前出現）。

## 開始使用
<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 模型，您可以在 `messages` 中放置兩個快取檢查點、在 `system` 中放置一個快取檢查點，並在 `tools` 中放置一個快取檢查點。如需建構和傳送 Converse API 請求的詳細資訊和範例，請參閱 [與 Converse API 操作進行對話](conversation-inference.md)。

如下所示指定所需的 ttl 值，當 ttl 值未指定時，會套用 5 分鐘快取的預設行為。

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

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

在此範例中，第一個 `image` 欄位提供影像給模型，第二個 `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 的模型回應包含三個特定於提示快取的新欄位。`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 請求的內文其確切格式和欄位可能會因您選擇的模型而有所不同。若要查看不同模型其請求和回應內文的格式和內容，請參閱 [基礎模型的推論請求參數和回應欄位](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 請求的內文其確切格式和欄位可能會因您選擇的模型而有所不同。若要查看不同模型其請求和回應內文的格式和內容，請參閱 [基礎模型的推論請求參數和回應欄位](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 提交單一提示](inference-invoke.md)。

### 遊樂場
<a name="prompt-caching-playground"></a>

在 Amazon Bedrock 主控台的聊天遊樂場中，您可以開啟提示快取選項，Amazon Bedrock 會自動為您建立快取檢查點。

按照 [使用遊樂場在主控台中產生回應](playgrounds.md) 中的指示開始在 Amazon Bedrock 遊樂場中使用提示。對於支援的模型，系統會自動在遊樂場中開啟提示快取。但是若未開啟提示快取，請執行下列動作開啟：

1. 在左側面板中，開啟**組態**功能表。

1. 開啟**提示快取**切換開關。

1. 執行您的提示。

在合併的輸入和模型回應達到檢查點所需的字符數量下限後 (視模型而異)，Amazon Bedrock 會自動為您建立第一個快取檢查點。隨著您繼續聊天，後續每次達到字符數量下限時，都會建立新的檢查點，最高可達模型允許的檢查點數量上限。您可以隨時選擇**提示快取**切換開關旁的**檢視快取檢查點**來檢視快取檢查點，如下列螢幕擷取畫面所示。

![\[Amazon Bedrock 文字遊樂場中提示快取的 UI 切換開關。\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/bedrock/latest/userguide/images/prompt-caching/bedrock-prompt-caching-metrics-icon.png))，來檢視因為與模型的每個互動而讀取和寫入快取的字符數量。

![\[快取指標方塊，顯示讀取和寫入快取的字符數量。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/prompt-caching/bedrock-prompt-caching-metrics.png)


如果您在對話過程中關閉提示快取切換開關，您可以繼續與模型聊天。