提示詞快取透過允許從提示詞中的特定前綴恢復來優化您的 API 使用。這顯著降低了重複任務或具有一致元素的提示詞的處理時間和成本。
This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.
啟用提示詞快取有兩種方式:
cache_control 欄位。系統會自動將快取斷點套用至最後一個可快取的區塊,並隨著對話增長而向前移動。最適合需要自動快取不斷增長的訊息歷史的多輪對話。cache_control,以精細控制確切快取的內容。最簡單的開始方式是使用自動快取:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"cache_control": {"type": "ephemeral"},
"system": "You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.",
"messages": [
{
"role": "user",
"content": "Analyze the major themes in Pride and Prejudice."
}
]
}'使用自動快取時,系統會快取所有內容,直到並包含最後一個可快取的區塊。在後續具有相同前綴的請求中,快取的內容會自動被重複使用。
當您發送啟用提示詞快取的請求時:
這對以下情況特別有用:
預設情況下,快取的有效期為 5 分鐘。每次使用快取內容時,快取都會免費刷新。
如果您發現 5 分鐘太短,Anthropic 也提供 1 小時的快取持續時間,需額外付費。
更多資訊,請參閱 1 小時快取持續時間。
提示詞快取會快取完整前綴
提示詞快取參考整個提示詞——tools、system 和 messages(按此順序),直到並包含以 cache_control 標記的區塊。
提示詞快取引入了新的定價結構。下表顯示每個支援模型每百萬 token 的價格:
| Model | Base Input Tokens | 5m Cache Writes | 1h Cache Writes | Cache Hits & Refreshes | Output Tokens |
|---|---|---|---|---|---|
| Claude Opus 4.6 | $5 / MTok | $6.25 / MTok | $10 / MTok | $0.50 / MTok | $25 / MTok |
| Claude Opus 4.5 | $5 / MTok | $6.25 / MTok | $10 / MTok | $0.50 / MTok | $25 / MTok |
| Claude Opus 4.1 | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Opus 4 | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Sonnet 4.6 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 4.5 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 4 | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Sonnet 3.7 (deprecated) | $3 / MTok | $3.75 / MTok | $6 / MTok | $0.30 / MTok | $15 / MTok |
| Claude Haiku 4.5 | $1 / MTok | $1.25 / MTok | $2 / MTok | $0.10 / MTok | $5 / MTok |
| Claude Haiku 3.5 | $0.80 / MTok | $1 / MTok | $1.6 / MTok | $0.08 / MTok | $4 / MTok |
| Claude Opus 3 (deprecated) | $15 / MTok | $18.75 / MTok | $30 / MTok | $1.50 / MTok | $75 / MTok |
| Claude Haiku 3 | $0.25 / MTok | $0.30 / MTok | $0.50 / MTok | $0.03 / MTok | $1.25 / MTok |
上表反映了提示詞快取的以下定價倍數:
這些倍數與其他定價修飾符疊加,例如 Batch API 折扣、長上下文定價和資料駐留。詳情請參閱定價。
提示詞快取(自動和明確)目前支援:
自動快取是啟用提示詞快取最簡單的方式。不需要在個別內容區塊上放置 cache_control,只需在請求主體的頂層新增單一 cache_control 欄位。系統會自動將快取斷點套用至最後一個可快取的區塊。
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"cache_control": {"type": "ephemeral"},
"system": "You are a helpful assistant that remembers our conversation.",
"messages": [
{"role": "user", "content": "My name is Alex. I work on machine learning."},
{"role": "assistant", "content": "Nice to meet you, Alex! How can I help with your ML work today?"},
{"role": "user", "content": "What did I say I work on?"}
]
}'使用自動快取時,快取點會隨著對話增長自動向前移動。每個新請求都會快取直到最後一個可快取區塊的所有內容,而之前的內容則從快取中讀取。
| 請求 | 內容 | 快取行為 |
|---|---|---|
| 請求 1 | System + User(1) + Asst(1) + User(2) ◀ 快取 | 所有內容寫入快取 |
| 請求 2 | System + User(1) + Asst(1) + User(2) + Asst(2) + User(3) ◀ 快取 | System 到 User(2) 從快取讀取; Asst(2) + User(3) 寫入快取 |
| 請求 3 | System + User(1) + Asst(1) + User(2) + Asst(2) + User(3) + Asst(3) + User(4) ◀ 快取 | System 到 User(3) 從快取讀取; Asst(3) + User(4) 寫入快取 |
快取斷點會自動移動到每個請求中最後一個可快取的區塊,因此您不需要隨著對話增長而更新任何 cache_control 標記。
預設情況下,自動快取使用 5 分鐘的 TTL。您可以以基本輸入 token 價格的 2 倍指定 1 小時的 TTL:
"cache_control": {"type": "ephemeral", "ttl": "1h"}自動快取與明確快取斷點相容。當一起使用時,自動快取斷點會使用 4 個可用斷點槽位中的一個。
這讓您可以結合兩種方式。例如,使用明確斷點獨立快取系統提示詞和工具,同時自動快取處理對話:
{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"cache_control": {"type": "ephemeral"},
"system": [
{
"type": "text",
"text": "You are a helpful assistant.",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [...]
}自動快取使用相同的底層快取基礎設施。定價、最小 token 閾值、上下文排序要求和 20 個區塊的回溯視窗都與明確斷點相同。
cache_control,自動快取為無操作。cache_control,API 會返回 400 錯誤。自動快取可在 Claude API 和 Azure AI Foundry(預覽版)上使用。Amazon Bedrock 和 Google Vertex AI 的支援將在稍後推出。
為了更精細地控制快取,您可以直接在個別內容區塊上放置 cache_control。當您需要以不同頻率快取不同部分,或需要精細控制確切快取的內容時,這非常有用。
將靜態內容(工具定義、系統指令、上下文、範例)放在提示詞的開頭。使用 cache_control 參數標記可重複使用內容的結尾以進行快取。
快取前綴按以下順序建立:tools、system,然後是 messages。此順序形成一個層次結構,每個層級都建立在前一個層級之上。
您可以在靜態內容的末尾只使用一個快取斷點,系統會自動找到最長的匹配快取區塊序列。了解其運作方式有助於您優化快取策略。
三個核心原則:
快取鍵是累積的:當您使用 cache_control 明確快取一個區塊時,快取雜湊鍵是透過依序雜湊對話中所有先前的區塊來生成的。這意味著每個區塊的快取取決於其之前的所有內容。
向後順序檢查:系統透過從您的明確斷點向後工作,以相反順序檢查每個先前的區塊來檢查快取命中。這確保您獲得最長可能的快取命中。
20 個區塊的回溯視窗:系統只檢查每個明確 cache_control 斷點之前最多 20 個區塊。在沒有匹配的情況下檢查 20 個區塊後,它停止檢查並移動到下一個明確斷點(如果有的話)。
範例:了解回溯視窗
考慮一個有 30 個內容區塊的對話,您只在區塊 30 上設置 cache_control:
如果您發送區塊 31 且沒有更改先前的區塊:系統檢查區塊 30(匹配!)。您在區塊 30 獲得快取命中,只有區塊 31 需要處理。
如果您修改區塊 25 並發送區塊 31:系統從區塊 30 → 29 → 28... → 25(不匹配)→ 24(匹配!)向後檢查。由於區塊 24 沒有更改,您在區塊 24 獲得快取命中,只有區塊 25-30 需要重新處理。
如果您修改區塊 5 並發送區塊 31:系統從區塊 30 → 29 → 28... → 11(第 20 次檢查)向後檢查。在 20 次檢查後沒有找到匹配,它停止查找。由於區塊 5 超出了 20 個區塊的視窗,不會發生快取命中,所有區塊都需要重新處理。但是,如果您在區塊 5 上設置了明確的 cache_control 斷點,系統將繼續從該斷點檢查:區塊 5(不匹配)→ 區塊 4(匹配!)。這允許在區塊 4 獲得快取命中,說明了為什麼您應該在可編輯內容之前放置斷點。
關鍵要點:始終在對話末尾設置明確的快取斷點,以最大化快取命中的機會。此外,在可能可編輯的內容區塊之前設置斷點,以確保這些部分可以獨立快取。
如果您想要以下情況,可以定義最多 4 個快取斷點:
重要限制:如果您的提示詞在快取斷點之前有超過 20 個內容區塊,並且您修改了這 20 個區塊之前的內容,除非您在更靠近該內容的地方添加額外的明確斷點,否則您不會獲得快取命中。
快取斷點本身不會增加任何成本。 您只需為以下內容付費:
添加更多 cache_control 斷點不會增加您的成本——您仍然根據實際快取和讀取的內容支付相同的金額。斷點只是讓您控制哪些部分可以獨立快取。
最小可快取提示詞長度為:
較短的提示詞無法被快取,即使標記了 cache_control。任何嘗試快取少於此數量 token 的請求都將在不快取的情況下處理。要查看提示詞是否被快取,請參閱回應使用欄位。
對於並發請求,請注意快取條目只有在第一個回應開始後才可用。如果您需要並行請求的快取命中,請在發送後續請求之前等待第一個回應。
目前,"ephemeral" 是唯一支援的快取類型,預設有效期為 5 分鐘。
請求中的大多數區塊都可以被快取。這包括:
tools 陣列中的工具定義system 陣列中的內容區塊messages.content 陣列中的內容區塊,適用於使用者和助手輪次messages.content 陣列中的內容區塊,在使用者輪次中messages.content 陣列中的內容區塊,在使用者和助手輪次中這些元素中的每一個都可以被快取,無論是自動快取還是通過標記 cache_control。
雖然大多數請求區塊都可以被快取,但也有一些例外:
思考區塊無法直接使用 cache_control 快取。但是,當思考區塊出現在先前的助手輪次中時,它們可以與其他內容一起被快取。以這種方式快取時,從快取讀取時它們確實計為輸入 token。
子內容區塊(如引用)本身無法直接快取。請改為快取頂層區塊。
在引用的情況下,作為引用來源材料的頂層文件內容區塊可以被快取。這允許您通過快取引用將參考的文件來有效地使用帶有引用的提示詞快取。
空文字區塊無法被快取。
對快取內容的修改可能會使部分或全部快取失效。
如結構化您的提示詞中所述,快取遵循層次結構:tools → system → messages。每個層級的更改都會使該層級及所有後續層級失效。
下表顯示了不同類型的更改會使快取的哪些部分失效。✘ 表示快取失效,✓ 表示快取保持有效。
| 更改內容 | 工具快取 | 系統快取 | 訊息快取 | 影響 |
|---|---|---|---|---|
| 工具定義 | ✘ | ✘ | ✘ | 修改工具定義(名稱、描述、參數)會使整個快取失效 |
| 網路搜尋切換 | ✓ | ✘ | ✘ | 啟用/停用網路搜尋會修改系統提示詞 |
| 引用切換 | ✓ | ✘ | ✘ | 啟用/停用引用會修改系統提示詞 |
| 速度設定 | ✓ | ✘ | ✘ | 在 speed: "fast" 和標準速度之間切換會使系統和訊息快取失效 |
| 工具選擇 | ✓ | ✓ | ✘ | tool_choice 參數的更改只影響訊息區塊 |
| 圖片 | ✓ | ✓ | ✘ | 在提示詞中任何位置添加/刪除圖片都會影響訊息區塊 |
| 思考參數 | ✓ | ✓ | ✘ | 擴展思考設定的更改(啟用/停用、預算)影響訊息區塊 |
| 傳遞給擴展思考請求的非工具結果 | ✓ | ✓ | ✘ | 當在啟用擴展思考的請求中傳遞非工具結果時,所有先前快取的思考區塊都會從上下文中剝離,上下文中跟隨這些思考區塊的任何訊息都會從快取中刪除。更多詳情,請參閱使用思考區塊進行快取。 |
使用回應中 usage 內的這些 API 回應欄位來監控快取效能(如果串流,則在 message_start 事件中):
cache_creation_input_tokens:建立新條目時寫入快取的 token 數量。cache_read_input_tokens:此請求從快取中檢索的 token 數量。input_tokens:未從快取讀取或用於建立快取的輸入 token 數量(即最後一個快取斷點之後的 token)。了解 token 細分
input_tokens 欄位僅代表請求中最後一個快取斷點之後的 token——而不是您發送的所有輸入 token。
計算總輸入 token:
total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens空間說明:
cache_read_input_tokens = 斷點之前已快取的 token(讀取)cache_creation_input_tokens = 斷點之前正在快取的 token(寫入)input_tokens = 最後一個斷點之後的 token(不符合快取資格)範例: 如果您有一個請求,包含 100,000 個快取內容的 token(從快取讀取),0 個正在快取的新內容 token,以及使用者訊息中的 50 個 token(在快取斷點之後):
cache_read_input_tokens:100,000cache_creation_input_tokens:0input_tokens:50這對於理解成本和速率限制都很重要,因為在有效使用快取時,input_tokens 通常會比您的總輸入小得多。
當使用擴展思考和提示詞快取時,思考區塊有特殊行為:
與其他內容一起自動快取:雖然思考區塊無法明確標記 cache_control,但當您使用工具結果進行後續 API 呼叫時,它們會作為請求內容的一部分被快取。這通常在工具使用期間發生,當您傳回思考區塊以繼續對話時。
輸入 token 計數:當從快取讀取思考區塊時,它們在您的使用指標中計為輸入 token。這對於成本計算和 token 預算很重要。
快取失效模式:
cache_control 標記,也會發生此快取行為更多關於快取失效的詳情,請參閱使快取失效的因素。
工具使用範例:
Request 1: User: "What's the weather in Paris?"
Response: [thinking_block_1] + [tool_use block 1]
Request 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]
Response: [thinking_block_2] + [text block 2]
# Request 2 caches its request content (not the response)
# The cache includes: user message, thinking_block_1, tool_use block 1, and tool_result_1
Request 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]
# Non-tool-result user block causes all thinking blocks to be ignored
# This request is processed as if thinking blocks were never present當包含非工具結果的使用者區塊時,它指定了一個新的助手循環,所有先前的思考區塊都從上下文中刪除。
更多詳細資訊,請參閱擴展思考文件。
從 2026 年 2 月 5 日起,提示詞快取將使用工作區級別的隔離,而不是組織級別的隔離。快取將按工作區隔離,確保同一組織內工作區之間的資料分離。此更改適用於 Claude API 和 Azure AI Foundry(預覽版);Amazon Bedrock 和 Google Vertex AI 將維持組織級別的快取隔離。如果您使用多個工作區,請審查您的快取策略以考慮此更改。
組織隔離:快取在組織之間隔離。不同的組織永遠不會共享快取,即使它們使用相同的提示詞。
精確匹配:快取命中需要 100% 相同的提示詞片段,包括直到並包含標記了快取控制的區塊的所有文字和圖片。
輸出 token 生成:提示詞快取對輸出 token 生成沒有影響。您收到的回應將與不使用提示詞快取時相同。
要優化提示詞快取效能:
根據您的場景調整提示詞快取策略:
如果遇到意外行為:
cache_control 標記在相同位置tool_choice 和圖片使用在各次呼叫之間保持一致cache_control 參數,以確保所有內容都可以被快取tool_use 內容區塊中的鍵具有穩定的排序,因為某些語言(例如 Swift、Go)在 JSON 轉換期間會隨機化鍵的順序,從而破壞快取對 tool_choice 的更改或提示詞中任何位置圖片的存在/缺失都會使快取失效,需要建立新的快取條目。更多關於快取失效的詳情,請參閱使快取失效的因素。
如果您發現 5 分鐘太短,Anthropic 也提供 1 小時的快取持續時間,需額外付費。
要使用擴展快取,請在 cache_control 定義中包含 ttl,如下所示:
"cache_control": {
"type": "ephemeral",
"ttl": "1h"
}回應將包含詳細的快取資訊,如下所示:
{
"usage": {
"input_tokens": 2048,
"cache_read_input_tokens": 1800,
"cache_creation_input_tokens": 248,
"output_tokens": 503,
"cache_creation": {
"ephemeral_5m_input_tokens": 456,
"ephemeral_1h_input_tokens": 100
}
}
}請注意,目前的 cache_creation_input_tokens 欄位等於 cache_creation 物件中值的總和。
如果您的提示詞以固定頻率使用(即每 5 分鐘以上使用一次的系統提示詞),請繼續使用 5 分鐘快取,因為這將繼續免費刷新。
1 小時快取最適合以下場景:
5 分鐘和 1 小時快取在延遲方面的行為相同。對於長文件,您通常會看到改善的首個 token 時間。
您可以在同一請求中同時使用 1 小時和 5 分鐘的快取控制,但有一個重要限制:具有較長 TTL 的快取條目必須出現在較短 TTL 之前(即 1 小時快取條目必須出現在任何 5 分鐘快取條目之前)。
混合 TTL 時,我們在您的提示詞中確定三個計費位置:
A:最高快取命中時的 token 計數(如果沒有命中則為 0)。B:A 之後最高 1 小時 cache_control 區塊的 token 計數(如果不存在則等於 A)。C:最後一個 cache_control 區塊的 token 計數。如果 B 和/或 C 大於 A,它們必然是快取未命中,因為 A 是最高的快取命中。
您將被收費:
A 的快取讀取 token。(B - A) 的 1 小時快取寫入 token。(C - B) 的 5 分鐘快取寫入 token。以下是 3 個範例。這描繪了 3 個請求的輸入 token,每個請求都有不同的快取命中和快取未命中。每個請求都有不同的計算定價,如彩色框所示。
為了幫助您開始使用提示快取,我們準備了一本提示快取食譜,其中包含詳細範例和最佳實踐。
以下,我們提供了幾個程式碼片段,展示各種提示快取模式。這些範例示範如何在不同情境中實作快取,幫助您了解此功能的實際應用:
提示快取儲存 KV(鍵值)快取表示形式和快取內容的加密雜湊值,但不儲存提示或回應的原始文字。快取條目的最短存活時間為 5 分鐘(標準)或 60 分鐘(延長)。快取條目在各組織之間相互隔離。由於 Anthropic 不儲存原始提示或回應文字,此功能可能適合需要 ZDR 類型資料保留承諾的客戶。
如需了解所有功能的 ZDR 資格,請參閱API 與資料保留。
Was this page helpful?