提示快取
使用 cache_control 快取提示前綴以降低成本與延遲,可採用自動快取或具有 5 分鐘或 1 小時 TTL 的明確斷點。
用法因產品而異
cache_control 來選擇啟用。「Prompt caching」(提示快取)可讓 API 從您提示中的特定前綴繼續處理,藉此最佳化您的 API 使用。這能大幅減少重複性任務或具有一致元素之提示的處理時間與成本。
啟用提示快取有兩種方式:
- 自動快取: 在請求的最上層新增單一
cache_control欄位。系統會自動將快取斷點套用至最後一個可快取的區塊,並隨著對話增長向前移動。最適合需要自動快取不斷增長之訊息歷史的多輪對話。 - 明確快取斷點: 直接在個別內容區塊上放置
cache_control,以精細控制要快取的確切內容。
最簡單的入門方式是使用自動快取:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
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'.",
}
],
)
print(response.usage.model_dump_json())使用自動快取時,系統會快取直到並包含最後一個可快取區塊的所有內容。在後續具有相同前綴的請求中,快取的內容會自動重複使用。
提示快取的運作方式
當您傳送啟用提示快取的請求時:
- 系統會檢查直到指定快取斷點的提示前綴,是否已從最近的查詢中被快取。
- 若找到,則使用快取版本,減少處理時間與成本。
- 否則,系統會處理完整提示,並在回應開始時快取該前綴。
這對以下情況特別有用:
- 包含許多範例的提示
- 大量上下文或背景資訊
- 具有一致指示的重複性任務
- 長時間的多輪對話
預設情況下,快取的存留時間為 5 分鐘。每次使用快取內容時,快取都會免費重新整理。
存留時間是從寫入或讀取快取項目之請求的開始時計算,而非從其回應結束時計算。生成回應所花費的時間會計入存留時間:如果一個回應需要 4 分鐘來串流,則重複使用相同快取前綴的後續請求必須在該回應完成後約 1 分鐘內開始。
定價
提示快取有其專屬的定價。下表顯示每個支援模型每百萬 token 的價格:
| 模型 | 基本 Token | 提示快取 | |||
|---|---|---|---|---|---|
| 名稱 | 輸入 | 輸出 | 5 分鐘寫入 | 1 小時寫入 | 命中與重新整理 |
Claude Fable 5.2For demanding reasoning and long-horizon agentic work | US$8 / MTok | US$40 / MTok | US$10 / MTok | US$16 / MTok | US$0.20 / MTok1 |
Claude Opus 5.5For long-running agentic coding and knowledge work | US$4 / MTok | US$20 / MTok | US$5 / MTok | US$8 / MTok | US$0.20 / MTok2 |
Claude Sonnet 5.5The best combination of speed and intelligence | US$2 / MTok | US$10 / MTok | US$2.50 / MTok | US$4 / MTok | US$0.10 / MTok2 |
Claude Haiku 5.5For high-volume, latency-sensitive tasks such as classification, extraction, and routing | US$0.10 / MTok適用於不超過 100,000 個 Token 的提示詞 | US$0.50 / MTok | US$0.125 / MTok | US$0.20 / MTok | US$0.01 / MTok |
US$0.50 / MTok適用於超過 100,000 個 Token 的提示詞 | US$2.50 / MTok | US$0.625 / MTok | US$1 / MTok | US$0.05 / MTok | |
US$8 / MTok | US$40 / MTok | US$10 / MTok | US$16 / MTok | US$0.20 / MTok1 | |
US$10 / MTok | US$50 / MTok | US$12.50 / MTok | US$20 / MTok | US$0.25 / MTok1 | |
US$10 / MTok | US$50 / MTok | US$12.50 / MTok | US$20 / MTok | US$0.25 / MTok1 | |
US$10 / MTok | US$50 / MTok | US$12.50 / MTok | US$20 / MTok | US$1 / MTok | |
US$10 / MTok | US$50 / MTok | US$12.50 / MTok | US$20 / MTok | US$1 / MTok | |
US$5 / MTok | US$25 / MTok | US$6.25 / MTok | US$10 / MTok | US$0.50 / MTok | |
US$5 / MTok | US$25 / MTok | US$6.25 / MTok | US$10 / MTok | US$0.50 / MTok | |
US$5 / MTok | US$25 / MTok | US$6.25 / MTok | US$10 / MTok | US$0.50 / MTok | |
US$5 / MTok | US$25 / MTok | US$6.25 / MTok | US$10 / MTok | US$0.50 / MTok | |
US$5 / MTok | US$25 / MTok | US$6.25 / MTok | US$10 / MTok | US$0.50 / MTok | |
Claude Opus 4.1 | US$15 / MTok | US$75 / MTok | US$18.75 / MTok | US$30 / MTok | US$1.50 / MTok |
Claude Opus 4 | US$15 / MTok | US$75 / MTok | US$18.75 / MTok | US$30 / MTok | US$1.50 / MTok |
US$2 / MTok | US$10 / MTok | US$2.50 / MTok | US$4 / MTok | US$0.20 / MTok | |
US$3 / MTok | US$15 / MTok | US$3.75 / MTok | US$6 / MTok | US$0.30 / MTok | |
US$3 / MTok | US$15 / MTok | US$3.75 / MTok | US$6 / MTok | US$0.30 / MTok | |
Claude Sonnet 4 | US$3 / MTok | US$15 / MTok | US$3.75 / MTok | US$6 / MTok | US$0.30 / MTok |
US$1 / MTok | US$5 / MTok | US$1.25 / MTok | US$2 / MTok | US$0.10 / MTok | |
1 Claude Fable 5.2、Claude Mythos 5.2、Claude Fable 5.1和Claude Mythos 5.1 的快取命中與重新整理價格為基本輸入價格的 0.025x。
2 Claude Opus 5.5和Claude Sonnet 5.5 的快取命中與重新整理價格為基本輸入價格的 0.05x。
所有其他模型皆使用標準的 0.1x 倍率。
支援的模型
所有現行 Claude 模型皆支援提示快取(包括自動與明確方式)。
自動快取
自動快取是啟用提示快取最簡單的方式。無須在個別內容區塊上放置 cache_control,只需在請求主體的最上層新增單一 cache_control 欄位。系統會自動將快取斷點套用至最後一個可快取的區塊。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
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?"},
],
)
print(response.usage.model_dump_json())自動快取在多輪對話中的運作方式
使用自動快取時,快取點會隨著對話增長自動向前移動。每個新請求都會快取直到最後一個可快取區塊的所有內容,而先前的內容則從快取讀取。
| 請求 | 內容 | 快取行為 |
|---|---|---|
| 請求 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 標記。
TTL 支援
預設情況下,自動快取使用 5 分鐘 TTL。您可以指定 1 小時 TTL,價格為基本輸入 token 價格的 2 倍:
{ "cache_control": { "type": "ephemeral", "ttl": "1h" } }與區塊層級快取結合使用
自動快取與明確快取斷點相容。兩者一起使用時,自動快取斷點會佔用 4 個可用斷點位置中的一個。
這讓您可以結合兩種方法。例如,使用明確斷點來快取您的系統提示,同時由自動快取處理對話:
{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"cache_control": { "type": "ephemeral" },
"system": [
{
"type": "text",
"text": "You are a helpful assistant.",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "What are the key terms?" }]
}維持不變的部分
自動快取使用相同的底層快取基礎架構。定價、最低 token 門檻、上下文排序要求以及 20 個區塊的回溯視窗,都與明確斷點的情況相同。
邊界情況
- 如果最後一個區塊已有相同 TTL 的明確
cache_control,自動快取不會有任何作用。 - 如果最後一個區塊有不同 TTL 的明確
cache_control,API 會傳回 400 錯誤。 - 如果已存在 4 個明確的區塊層級斷點,API 會傳回 400 錯誤(沒有剩餘位置可供自動快取使用)。
- 如果最後一個區塊不符合作為自動快取斷點目標的資格,系統會靜默地向後尋找最近的合格區塊。如果找不到,則略過快取。
明確快取斷點
若要對快取有更多控制,您可以直接在個別內容區塊上放置 cache_control。當您需要快取以不同頻率變更的不同區段,或需要精細控制要快取的確切內容時,這會很有用。
建構您的提示
將靜態內容(工具定義、系統指示、上下文、範例)放在提示的開頭。使用 cache_control 參數標記可重複使用內容的結尾以進行快取。
快取前綴依以下順序建立:tools、system,然後是 messages。此順序形成一個階層,每個層級都建立在前面的層級之上。
自動前綴檢查的運作方式
您可以只在靜態內容的結尾使用一個快取斷點,系統會自動找出先前請求已寫入快取的最長前綴。了解其運作方式有助於您最佳化快取策略。
三個核心原則:
-
快取寫入只發生在您的斷點。 以
cache_control標記區塊時,只會寫入恰好一個快取項目:以該區塊結尾之前綴的雜湊值。系統不會為任何更早的位置寫入項目。由於雜湊值是累積的,涵蓋直到並包含斷點的所有內容,因此變更斷點處或之前的任何區塊,都會在下一個請求中產生不同的雜湊值。 -
快取讀取會向後尋找先前請求寫入的項目。 在每個請求中,系統會計算您斷點處的前綴雜湊值,並檢查是否有相符的快取項目。如果不存在,系統會一次向後移動一個區塊,檢查每個較早位置的前綴雜湊值是否與快取中已有的內容相符。它尋找的是先前的寫入,而非穩定的內容。
-
回溯視窗為 20 個區塊。 系統對每個斷點最多檢查 20 個位置,斷點本身算作第一個。如果系統在該視窗內找不到相符的項目,檢查便會停止(或從下一個明確斷點繼續,如果有的話)。在 Claude API 上,一連串連續的
tool_use區塊算作一個位置,一連串連續的tool_result區塊也是如此,因此包含許多平行工具呼叫的單一輪次,不會單獨將先前請求的項目推出視窗之外。
範例:在不斷增長的對話中回溯
您在每一輪附加新區塊,並在每個請求的最後一個區塊上設定 cache_control:
- 第 1 輪: 10 個區塊,斷點在區塊 10。不存在任何先前的快取項目。系統在區塊 10 寫入一個項目。
- 第 2 輪: 15 個區塊,斷點在區塊 15。區塊 15 沒有項目,因此系統向後移動到區塊 10,並找到第 1 輪的項目。在區塊 10 快取命中。系統只重新處理區塊 11 到 15,並在區塊 15 寫入新項目。
- 第 3 輪: 35 個區塊,斷點在區塊 35。系統檢查 20 個位置(區塊 35 到 16),但什麼都沒找到。第 2 輪在區塊 15 的項目恰好在視窗外一個位置,因此沒有快取命中。在區塊 15 新增第二個斷點,會在該處開始第二個回溯視窗,從而找到第 2 輪的項目。
常見錯誤:將斷點放在每個請求都會變更的內容上
您的提示有一個大型的靜態系統上下文(區塊 1 到 5),後面接著一個包含時間戳記和使用者訊息的每請求區塊(區塊 6)。您在區塊 6 上設定 cache_control:
- 請求 1: 在區塊 6 寫入快取。雜湊值包含時間戳記。
- 請求 2: 時間戳記不同,因此區塊 6 的前綴雜湊值也不同。回溯會經過區塊 5、4、3、2 和 1,但系統從未在這些位置寫入任何項目。沒有快取命中。您每個請求都要支付新的快取寫入費用,卻永遠得不到讀取。
回溯不會找出斷點之前的穩定內容並加以快取。它只會找到先前請求已寫入的項目,而寫入只發生在斷點。將 cache_control 移至區塊 5,也就是在各請求間保持不變的最後一個區塊,之後每個請求都會讀取快取的前綴。自動快取也有相同的問題:它會將斷點放在最後一個可快取的區塊上,而在這種結構中,該區塊正是每個請求都會變更的區塊,因此請改為在區塊 5 上使用明確斷點。
重點: 將 cache_control 放在其前綴於您希望共用快取的各請求間完全相同的最後一個區塊上。在不斷增長的對話中,只要每一輪新增的區塊少於 20 個,最後一個區塊就能正常運作:較早的內容永遠不會變更,因此下一個請求的回溯能找到先前的寫入。對於具有變動後綴(時間戳記、每請求上下文、傳入訊息)的提示,請將斷點放在靜態前綴的結尾,而非變動的區塊上。
何時使用多個斷點
如果您想要達成以下目的,可以定義最多 4 個快取斷點:
- 快取以不同頻率變更的不同區段(例如,工具很少變更,但上下文每天更新)
- 對要快取的確切內容有更多控制
- 在不斷增長的對話將您的斷點推到距離上次快取寫入 20 個或更多區塊之外時,確保快取命中
了解快取斷點的成本
快取斷點本身不會增加任何成本。 您只需為以下項目付費:
- 快取寫入: 當新內容寫入快取時(5 分鐘 TTL 比基本輸入 token 多 25%)
- 快取讀取: 當使用快取內容時(基本輸入 token 價格的 10%,各模型另有例外)
- 一般輸入 token: 任何未快取的內容
新增更多 cache_control 斷點不會增加您的成本;您仍然根據實際被快取和讀取的內容支付相同金額。斷點讓您能控制哪些區段可以獨立快取。
快取策略與考量
快取限制
在 Claude API、Claude Platform on AWS、Claude Models on Google Cloud (Google managed) 和 Microsoft Foundry 上,最低可快取提示長度為:
- Claude Fable 5.2、Claude Mythos 5.2、Claude Fable 5.1、Claude Mythos 5.1、Claude Opus 5.5、Claude Opus 5、Claude Sonnet 5.5、Claude Fable 5、Claude Mythos 5 和 Claude Haiku 5.5 為 512 個 token
- Claude Mythos Preview 和 Claude Opus 4.7 為 2,048 個 token
- Claude Opus 4.6 和 Claude Opus 4.5 為 4,096 個 token
- Claude Opus 4.8、Claude Sonnet 5、Claude Sonnet 4.6、Claude Sonnet 4.5(已棄用)、Claude Opus 4.1(已停用,Claude Models on Google Cloud (Google managed) 和 Bedrock 除外)、Claude Opus 4(已停用,Claude Models on Google Cloud (Google managed) 除外)和 Claude Sonnet 4(已停用,Claude Models on Google Cloud (Google managed) 和 Bedrock 除外)為 1,024 個 token
- Claude Haiku 4.5 為 4,096 個 token
這些最低值適用於每個模型可用的所有平台。
較短的提示無法被快取,即使標記了 cache_control 也一樣。任何快取少於此數量 token 的請求都會在不快取的情況下處理,且不會傳回錯誤。若要檢查提示是否已被快取,請查看回應用量欄位:如果 cache_creation_input_tokens 和 cache_read_input_tokens 都是 0,則表示提示未被快取(很可能是因為未達到最低長度要求)。
如果您的提示僅略低於您的模型和平台的最低值,擴充快取內容以達到門檻通常是值得的。快取讀取的成本遠低於未快取的輸入 token,因此達到最低值可以降低經常重複使用之提示的成本。
對於並行請求,請注意快取項目只有在第一個回應開始後才會變得可用。如果您需要讓平行請求命中快取,請在傳送後續請求之前等待第一個回應。
目前,ephemeral 是唯一支援的快取類型,預設存留時間為 5 分鐘。
可以快取的內容
請求中的大多數區塊都可以被快取。這包括:
- 工具:
tools陣列中的工具定義 - 系統訊息:
system陣列中的內容區塊 - 文字訊息:
messages.content陣列中的內容區塊,適用於使用者和助理輪次 - 圖片和文件:
messages.content陣列中的內容區塊,位於使用者輪次 - 工具使用和工具結果:
messages.content陣列中的內容區塊,適用於使用者和助理輪次
這些元素中的每一個都可以被快取,無論是自動快取還是透過 cache_control 標記。
無法快取的內容
雖然大多數請求區塊都可以被快取,但仍有一些例外:
-
思考區塊無法直接使用
cache_control快取。然而,當思考區塊出現在先前的助理輪次中時,它們「可以」與其他內容一起被快取。以這種方式快取時,從快取讀取時它們「確實」會計為輸入 token。 -
子內容區塊(例如引用)本身無法直接快取。請改為快取最上層區塊。
以引用為例,作為引用來源資料的最上層文件內容區塊可以被快取。這讓您能透過快取引用所參照的文件,有效地將提示快取與引用搭配使用。
-
空白文字區塊無法被快取。
使快取失效的因素
修改快取內容可能會使部分或全部快取失效。
如建構您的提示中所述,快取遵循以下階層:tools → system → messages。每個層級的變更都會使該層級及所有後續層級失效。
下表顯示不同類型的變更會使快取的哪些部分失效。✘ 表示快取失效,而 ✓ 表示快取仍然有效。
| 變更內容 | 工具快取 | 系統快取 | 訊息快取 | 影響 |
|---|---|---|---|---|
| 工具定義 | ✘ | ✘ | ✘ | 修改工具定義(名稱、描述、參數)會使整個快取失效 |
| 網路搜尋切換 | ✓ | ✘ | ✘ | 啟用/停用網路搜尋會修改系統提示 |
| 引用切換 | ✓ | ✘ | ✘ | 啟用/停用引用會修改系統提示 |
| 速度設定 | ✓ | ✘ | ✘ | 在 speed: "fast" 與標準速度之間切換會使系統和訊息快取失效 |
| 工具選擇 | ✓ | ✓ | ✘ | 變更 tool_choice 參數只會影響訊息區塊 |
| 圖片 | ✓ | ✓ | ✘ | 在提示中的任何位置新增/移除圖片會影響訊息區塊 |
| 思考參數 | 依模型而定 | 依模型而定 | ✘ | 思考設定(模式,以及擴展模式中的 budget_tokens)會被呈現到提示中,因此變更它一律會使訊息區塊失效;在將設定呈現於工具和系統之前的模型上,工具和系統快取也會失效。請參閱思考與提示快取。 |
| Effort 設定 | 依模型而定 | 依模型而定 | ✘ | 變更 output_config.effort 值一律會使訊息區塊失效,對工具和系統快取的影響則與思考參數相同,依模型而定。將 effort 明確設定為模型的預設值等同於省略它,不會造成失效。在支援每則訊息 effort 的模型上,透過 messages 內的 role: "system" 訊息進行的 effort 變更會保持快取前綴完整。 |
| 傳遞給具有思考之請求的非工具結果 | ✓ | ✓ | 依模型而定 | 在 Opus 4.5+、Sonnet 4.6+ 和 Haiku 5.5 上,思考區塊預設會被保留,因此快取仍然有效(✓)。在較早的 Opus/Sonnet 模型以及直到 Claude Haiku 4.5 的 Haiku 模型上,所有先前快取的思考區塊都會從上下文中移除,且這些思考區塊之後的任何訊息都會從快取中移除(✘)。如需更多詳細資訊,請參閱搭配思考區塊的快取。 |
| 被捨棄的思考區塊 | ✓ | ✓ | ✘ | 當 API 捨棄在該請求中未被保留的 Claude 5.1 及更新模型的思考區塊時,該請求的快取前綴會從該區塊的位置開始改變。接收模型可讀取且原封不動傳回的區塊,會保持快取完整。 |
在支援對話中途工具變更的模型上,inline-tools-2026-09-15 beta 標頭可讓您在對話中途新增工具或變更工具定義,而無須編輯 tools。請在對話中途系統訊息的 tool_addition 區塊中傳送定義,並讓 tools 保持與您第一次傳送時完全相同。快取前綴仍然相符,因此只有附加的訊息會作為新輸入處理。唯一的例外是沒有任何非延遲工具的 tools 陣列,在這種情況下,以此方式定義的第一個工具會在該請求中造成一次完整的快取未命中。請參閱在訊息中定義工具。
追蹤快取效能
使用以下 API 回應欄位監控快取效能,這些欄位位於回應中的 usage 內(若使用串流,則位於 message_start 事件中):
cache_creation_input_tokens:建立新項目時寫入快取的 token 數量cache_read_input_tokens:此請求從快取擷取的 token 數量input_tokens:未從快取讀取或未用於建立快取的輸入 token 數量(也就是最後一個快取斷點之後的 token)
搭配思考區塊的快取
將思考與提示快取一起使用時,思考區塊有特殊行為:
與其他內容一起自動快取: 雖然思考區塊無法明確以 cache_control 標記,但當您使用工具結果進行後續 API 呼叫時,它們會作為請求內容的一部分被快取。這通常發生在工具使用期間,當您將思考區塊傳回以繼續對話時。
輸入 token 計算: 當從快取讀取思考區塊時,它們會在您的用量指標中計為輸入 token。這對於成本計算和 token 預算規劃很重要。
快取失效模式:
- 當只有工具結果作為使用者訊息提供時,快取仍然有效。
- 在 Opus 4.5+、Sonnet 4.6+ 和 Haiku 5.5 上,即使新增了非工具結果的使用者內容,思考區塊預設也會被保留,因此快取仍然有效。
- 在較早的 Opus/Sonnet 模型以及直到 Claude Haiku 4.5 的 Haiku 模型上,新增非工具結果的使用者內容時,快取會失效,導致所有先前的思考區塊從上下文中移除。
- 即使沒有明確的
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]
# Depending on the model, this non-tool-result user block either keeps prior thinking blocks or strips them (see the next paragraph)在較早的 Opus/Sonnet 模型以及直到 Claude Haiku 4.5 的 Haiku 模型上,此時所有先前的思考區塊都會從上下文中移除。在 Opus 4.5+、Sonnet 4.6+ 和 Haiku 5.5 上,先前的思考區塊預設會被保留,並仍是快取前綴的一部分。
如需更詳細的資訊,請參閱思考與提示快取。
快取儲存與共用
-
組織與工作區隔離: 快取在組織之間是隔離的。不同組織永遠不會共用快取,即使它們使用相同的提示也一樣。在 Claude API、Claude Platform on AWS 和 Microsoft Foundry 上,快取在組織內也依工作區隔離;Claude Models on Google Cloud (Google managed) 和 Bedrock 則僅使用組織層級隔離。
-
完全比對: 快取命中需要 100% 相同的提示區段,包括直到並包含標記了快取控制之區塊的所有文字和圖片。
-
輸出 token 生成: 提示快取對輸出 token 生成沒有影響。您收到的回應與未使用提示快取時所得到的回應相同。
有效快取的最佳實務
若要最佳化提示快取效能:
- 對於多輪對話,從自動快取開始。它會自動處理斷點管理。
- 當您需要快取具有不同變更頻率的不同區段時,請使用明確的區塊層級斷點。
- 快取穩定、可重複使用的內容,例如系統指示、背景資訊、大型上下文或常用的工具定義。
- 將快取內容放在提示的開頭以獲得最佳效能。
- 策略性地使用快取斷點來分隔不同的可快取前綴區段。
- 將斷點放在各請求間保持完全相同的最後一個區塊上。對於具有靜態前綴和變動後綴(時間戳記、每請求上下文、傳入訊息)的提示,那就是前綴的結尾,而非變動的區塊。
- 定期分析快取命中率並視需要調整策略。
針對不同使用案例進行最佳化
根據您的情境調整提示快取策略:
- 對話代理:降低長時間對話的成本和延遲,特別是具有冗長指示或上傳文件的對話。
- 程式碼助理:透過在提示中保留相關區段或程式碼庫的摘要版本,改善自動完成和程式碼庫問答。
- 大型文件處理:在提示中納入包含圖片的完整長篇資料,而不會增加回應延遲。
- 詳細的指示集:分享大量的指示、程序和範例清單,以微調 Claude 的回應。開發人員通常會在提示中加入一兩個範例,但透過提示快取,您可以加入 20 個以上多樣化的高品質答案範例,以獲得更好的效能。
- 代理式工具使用:提升涉及多次工具呼叫和反覆程式碼變更之情境的效能,這類情境中每個步驟通常都需要新的 API 呼叫。
- 書籍、論文、文件、Podcast 逐字稿及其他長篇內容:將整份文件嵌入提示中,讓使用者向其提問,使任何知識庫都具有互動性。
常見問題疑難排解
如果您遇到非預期的行為:
- 確保快取區段在各呼叫間完全相同。對於明確斷點,請確認
cache_control標記位於相同位置。 - 檢查呼叫是否在快取存留時間內進行(預設為 5 分鐘)。
- 確認
tool_choice、圖片使用、思考設定和output_config.effort在各呼叫間保持一致。 - 驗證您快取的 token 數量至少達到您的模型和平台的最低值(請參閱快取限制)。
- 確認您的斷點位於各請求間保持完全相同的區塊上。快取寫入只發生在斷點,如果該區塊發生變更(時間戳記、每請求上下文、傳入訊息),前綴雜湊值將永遠不會相符。回溯不會找出斷點之前的穩定內容;它只會找到較早請求在其自身斷點處寫入的項目。
- 確認您
tool_use內容區塊中的鍵具有穩定的順序,因為某些語言(例如 Swift、Go)會在 JSON 轉換期間隨機化鍵的順序,導致快取中斷。 - 使用快取診斷讓 API 比較連續的請求,並回報提示的哪個部分出現分歧。
1 小時快取期限
如果您覺得 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": 148,
"ephemeral_1h_input_tokens": 100
}
}
}cache_creation_input_tokens 欄位等於 cache_creation 物件中各值的總和。
如果您在使用網路搜尋等伺服器工具時,看到並非您請求的 ephemeral_5m_input_tokens 寫入,請參閱伺服器工具結果會自動快取。
何時使用 1 小時快取
如果您以固定頻率使用某個提示(例如,您傳送頻率高於每 5 分鐘一次的系統提示),請繼續使用 5 分鐘快取,因為它會持續免費重新整理。
1 小時快取最適合用於以下情境:
- 當您的提示使用頻率可能低於每 5 分鐘一次,但高於每小時一次時。例如,當代理式輔助代理需要超過 5 分鐘的時間,或者當儲存與使用者的長時間聊天對話,而您通常預期該使用者可能不會在接下來 5 分鐘內回應時。
- 當延遲很重要,且您的後續提示可能在 5 分鐘之後才傳送時。
- 當您想要改善速率限制的使用率時,因為快取命中不會計入您的速率限制。
混合不同的 TTL
您可以在同一個請求中同時使用 1 小時和 5 分鐘的快取控制,但有一個重要的限制:TTL 較長的快取項目必須出現在 TTL 較短的項目之前(也就是說,1 小時的快取項目必須出現在任何 5 分鐘快取項目之前)。
混合使用 TTL 時,Claude API 會在您的提示中決定三個計費位置:
- 位置
A:您的提示中最後一個快取命中處的 token 數量(若無命中則為 0)。- 若某個項目以 5 分鐘 TTL 快取,而位於其之後的某個 TTL 為 1 小時的
cache_control區塊為快取未命中,則該項目上的命中不會被認定為命中。 - 讀取以 5 分鐘 TTL 快取之項目的請求,會讓該項目重新開始其 5 分鐘的存留時間,即使這次的請求設定了
"ttl": "1h"也一樣。
- 若某個項目以 5 分鐘 TTL 快取,而位於其之後的某個 TTL 為 1 小時的
- 位置
B:在A之後最後一個 1 小時cache_control區塊處的 token 數量(若不存在則等於A)。 - 位置
C:最後一個cache_control區塊處的 token 數量。
您將被收取以下費用:
A的快取讀取 token。(B - A)的 1 小時快取寫入 token。(C - B)的 5 分鐘快取寫入 token。
以下是三個範例請求,每個請求都有不同的快取命中和快取未命中。每個請求都有不同的計算價格,顯示在方塊中。
預熱快取
「Cache pre-warming」(快取預熱)可讓您在使用者觸發實際請求之前,將您的系統提示或工具定義載入提示快取中。這可以減少第一次使用者互動時的快取未命中延遲損失,為對延遲敏感的應用程式縮短「time-to-first-token」(首個 token 時間),即 TTFT。
運作方式
在您的請求中設定 max_tokens: 0。API 會將您的提示讀入模型,並在任何 cache_control 中斷點寫入快取,然後立即返回,不產生任何輸出。回應包含一個空的 content 陣列、stop_reason: "max_tokens",以及一個完整填入的 usage 區塊。
將 cache_control 中斷點放在與後續請求共用的最後一個區塊上(通常是您的系統提示或工具定義),而不是放在佔位使用者訊息上。否則快取項目會以該佔位訊息為鍵,後續請求將無法命中。也請使用與後續請求相同的思考設定和 output_config.effort:這些值會被渲染到提示中(請參閱什麼會使快取失效),因此使用不同設定進行的預熱可能會寫入一個您的實際流量永遠不會命中的項目。這表示要使用明確快取中斷點而非自動快取,因為自動快取會將中斷點放在最後一個區塊上,而在這裡最後一個區塊是佔位訊息。佔位使用者訊息可以是任何包含非空白內容的字串(此處的範例使用 "warmup");其內容會被讀入模型,但永遠不會被回答。
client = anthropic.Anthropic()
# 在使用者到來前先發送此請求,以預熱共用的系統提示快取。
prewarm = client.messages.create(
model="claude-opus-5-5",
max_tokens=0,
system=[
{
"type": "text",
"text": "You are an expert software engineer with deep knowledge of distributed systems...",
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "warmup"}],
)
print(prewarm.stop_reason) # "max_tokens"
print(prewarm.content) # []
print(prewarm.usage)API 會返回一個空的 content 陣列:
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [],
"model": "claude-opus-5-5",
"stop_reason": "max_tokens",
"stop_sequence": null,
"usage": {
"input_tokens": 8,
"cache_creation_input_tokens": 5120,
"cache_read_input_tokens": 0,
"cache_creation": {
"ephemeral_5m_input_tokens": 5120,
"ephemeral_1h_input_tokens": 0
},
"iterations": [
{
"input_tokens": 8,
"output_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 5120,
"cache_creation": {
"ephemeral_5m_input_tokens": 5120,
"ephemeral_1h_input_tokens": 0
},
"type": "message"
}
],
"output_tokens": 0,
"service_tier": "standard",
"inference_geo": "global"
}
}典型使用模式
在您的應用程式啟動時(或按排定的間隔)發出預熱請求,然後在預熱完成後發送實際的使用者請求:
client = anthropic.Anthropic()
SYSTEM_PROMPT = [
{
"type": "text",
"text": "You are an expert software engineer with deep knowledge of distributed systems...",
"cache_control": {"type": "ephemeral"},
}
]
def prewarm_cache() -> None:
"""Call this at application startup or on a scheduled interval."""
client.messages.create(
model="claude-opus-5-5",
max_tokens=0,
system=SYSTEM_PROMPT,
messages=[{"role": "user", "content": "warmup"}],
)
def respond(user_message: str) -> anthropic.types.Message:
"""The real user request; benefits from a warm cache."""
return client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
system=SYSTEM_PROMPT,
messages=[{"role": "user", "content": user_message}],
)
# 在任何使用者流量抵達之前先預熱快取。
prewarm_cache()
# 之後當使用者送出訊息時,系統提示前綴已經被快取。
response = respond("How do I implement a binary search tree?")
for block in response.content:
if block.type == "text":
print(block.text)請記住,快取 TTL 仍然適用。對於預設的 5 分鐘快取,請至少每 5 分鐘發送一次新的預熱請求,以保持快取處於預熱狀態。若使用者請求之間的間隔較長,請改用 1 小時快取期限。
限制
如果設定了以下任何一項,max_tokens: 0 請求將被拒絕並返回 invalid_request_error,因為每一項都意味著需要零 token 預算無法產生的輸出:
stream: true- 擴展思考(
thinking.type: "enabled") - 結構化輸出(
output_config.format) {"type": "tool", ...}或{"type": "any"}的tool_choice
在 Message Batches 請求中,max_tokens: 0 也會被拒絕。預熱的目標是首個 token 時間,這不適用於批次處理,而且在批次處理期間寫入的快取項目很可能在後續請求執行前就已過期。
取代 max_tokens=1 的變通方法
有些應用程式會傳送 max_tokens: 1 請求來預熱快取。在請求允許的情況下,建議優先使用 max_tokens: 0:不會產生任何輸出,因此沒有需要捨棄的單一 token 回覆,不會計費輸出 token,且請求的意圖明確無誤。
提示快取範例
為了幫助您開始使用提示快取,Claude Cookbook 中的提示快取範例提供了詳細的範例和最佳實務。
以下程式碼片段展示了各種提示快取模式。這些範例示範了如何在不同情境中實作快取,幫助您了解此功能的實際應用:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": "You are an AI assistant tasked with analyzing legal documents.",
},
{
"type": "text",
"text": "Here is the full text of a complex legal agreement: [Insert full text of a 50-page legal agreement here]",
"cache_control": {"type": "ephemeral"},
},
],
messages=[
{
"role": "user",
"content": "What are the key terms and conditions in this agreement?",
}
],
)
print(response.usage.model_dump_json())此範例示範了基本的提示快取用法,將法律協議的全文快取為前綴,同時保持使用者指示不被快取。
對於第一個請求:
input_tokens:僅使用者訊息中的 token 數量cache_creation_input_tokens:整個系統訊息(包括法律文件)中的 token 數量cache_read_input_tokens:0(第一個請求沒有快取命中)
對於快取存活期內的後續請求:
input_tokens:僅使用者訊息中的 token 數量cache_creation_input_tokens:0(沒有建立新的快取)cache_read_input_tokens:整個已快取系統訊息中的 token 數量
可以透過在 tools 陣列中的最後一個工具上放置 cache_control 來快取工具定義。在該工具之前定義的所有工具(包括該工具)都會作為單一前綴被快取。
{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"input_schema": {
"type": "object",
"properties": { "location": { "type": "string" } },
"required": ["location"]
}
},
{
"name": "get_time",
"description": "Get the current time in a given time zone",
"input_schema": {
"type": "object",
"properties": { "timezone": { "type": "string" } },
"required": ["timezone"]
},
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "What is the weather and time in New York?" }]
}在第一個請求中,cache_creation_input_tokens 反映所有工具定義的 token 數量。在快取存活期內的後續請求中,這些 token 會改為顯示在 cache_read_input_tokens 之下。
有關工具定義、defer_loading 和快取失效之間的詳細互動,請參閱搭配提示快取的工具使用。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": "...long system prompt",
"cache_control": {"type": "ephemeral"},
}
],
messages=[
# ...目前為止的長篇對話
{
"role": "user",
"content": [
{
"type": "text",
"text": "Hello, can you tell me more about the solar system?",
}
],
},
{
"role": "assistant",
"content": "Certainly! The solar system is the collection of celestial bodies that orbit our Sun. It consists of eight planets, numerous moons, asteroids, comets, and other objects. The planets, in order from closest to farthest from the Sun, are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. Each planet has its own unique characteristics and features. Is there a specific aspect of the solar system you'd like to know more about?",
},
{
"role": "user",
"content": [
{"type": "text", "text": "Good to know."},
{
"type": "text",
"text": "Tell me more about Mars.",
"cache_control": {"type": "ephemeral"},
},
],
},
],
)
print(response.usage.model_dump_json())此範例示範了如何在多輪對話中使用提示快取。
在每一輪中,最後一則訊息的最後一個區塊會被標記 cache_control,以便對話能夠被增量快取。系統會自動查找並使用先前快取的最長區塊序列來處理後續訊息。在較早輪次中標記了 cache_control 的區塊不會再次被標記,但 5 分鐘內的請求仍會從快取讀取它們並刷新其存活期。
cache_control 參數也放置在系統訊息上。如果系統訊息在超過 5 分鐘未被使用後從快取中被逐出,下一個請求會將它重新加入快取。
這種方法對於在持續進行的對話中維持上下文非常有用,無需重複處理相同的資訊。
當正確設定後,您應該會在每個請求的用量回應中看到以下內容:
input_tokens:新使用者訊息中的 token 數量(極少)cache_creation_input_tokens:新的助手和使用者輪次中的 token 數量cache_read_input_tokens:截至上一輪為止對話中的 token 數量
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=[
{
"name": "search_documents",
"description": "Search through the knowledge base",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"}
},
"required": ["query"],
},
},
{
"name": "get_document",
"description": "Retrieve a specific document by ID",
"input_schema": {
"type": "object",
"properties": {
"doc_id": {"type": "string", "description": "Document ID"}
},
"required": ["doc_id"],
},
"cache_control": {"type": "ephemeral"},
},
],
system=[
{
"type": "text",
"text": "You are a helpful research assistant with access to a document knowledge base.\n\n# Instructions\n- Always search for relevant documents before answering\n- Provide citations for your sources\n- Be objective and accurate in your responses\n- If multiple documents contain relevant information, synthesize them\n- Acknowledge when information is not available in the knowledge base",
"cache_control": {"type": "ephemeral"},
},
{
"type": "text",
"text": "# Knowledge Base Context\n\nHere are the relevant documents for this conversation:\n\n## Document 1: Solar System Overview\nThe solar system consists of the Sun and all objects that orbit it...\n\n## Document 2: Planetary Characteristics\nEach planet has unique features. Mercury is the smallest planet...\n\n## Document 3: Mars Exploration\nMars has been a target of exploration for decades...\n\n[Additional documents...]",
"cache_control": {"type": "ephemeral"},
},
],
messages=[
{
"role": "user",
"content": "Can you search for information about Mars rovers?",
},
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "tool_1",
"name": "search_documents",
"input": {"query": "Mars rovers"},
}
],
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "tool_1",
"content": "Found 3 relevant documents: Document 3 (Mars Exploration), Document 7 (Rover Technology), Document 9 (Mission History)",
}
],
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I found 3 relevant documents about Mars rovers. Let me get more details from the Mars Exploration document.",
}
],
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Yes, please tell me about the Perseverance rover specifically.",
"cache_control": {"type": "ephemeral"},
}
],
},
],
)
print(response.usage.model_dump_json())這個完整的範例示範了如何使用全部 4 個可用的快取中斷點來最佳化提示的不同部分:
-
工具快取(快取中斷點 1):最後一個工具定義上的
cache_control參數會快取所有工具定義。 -
可重複使用的指示快取(快取中斷點 2):系統提示中的靜態指示會被單獨快取。這些指示在請求之間很少變更。
-
RAG 上下文快取(快取中斷點 3):知識庫文件會被獨立快取,讓您可以更新 RAG 文件而不會使工具或指示快取失效。
-
對話歷史快取(快取中斷點 4):最後一則使用者訊息被標記
cache_control,以便在對話進行時啟用增量快取。
這種方法提供了最大的彈性:
- 如果您在對話中附加新的一輪而不變更先前的內容,所有四個快取區段都會被重複使用。
- 如果您更新了 RAG 文件但保持相同的工具和指示,前兩個快取區段會被重複使用。
- 如果您變更了對話但保持相同的工具、指示和文件,前三個區段會被重複使用。
- 任何中斷點的變更都會使該區段及其之後的所有內容失效,而較早的已快取區段仍然有效。
對於第一個請求:
input_tokens:極少(最後一個快取中斷點之後的 token,在此範例中接近 0)cache_creation_input_tokens:所有已快取區段中的 token(工具 + 指示 + RAG 文件 + 對話歷史)cache_read_input_tokens:0(沒有快取命中)
對於僅包含新使用者訊息的後續請求(並且第四個中斷點移至該新的最後一則訊息,如範例所示):
input_tokens:極少(最後一個快取中斷點之後的 token,在此範例中接近 0)cache_creation_input_tokens:新使用者訊息和上一輪助手回應中的 token(正在被快取的新對話區段)cache_read_input_tokens:所有先前已快取的 token(工具 + 指示 + RAG 文件 + 先前的對話)
此模式特別適用於:
- 具有大型文件上下文的 RAG 應用程式
- 使用多個工具的代理系統
- 需要維持上下文的長時間對話
- 需要獨立最佳化提示不同部分的應用程式
資料保留
提示快取(自動和明確兩種)符合 ZDR 資格。Anthropic 不會儲存您的提示或 Claude 回應的原始文字。
已快取內容的 KV(key-value,鍵值)快取表示和加密雜湊僅保存在記憶體中,不會以靜態方式儲存。快取項目的最短存活期為 5 分鐘(標準)或 1 小時(延長),之後會被及時(但非立即)刪除。快取項目在組織之間是隔離的,並且在 Claude API、Claude Platform on AWS 和 Microsoft Foundry 上,在同一組織內的工作區之間也是隔離的。
常見問題
在大多數情況下,在靜態內容結尾放置單一快取中斷點就足夠了。 快取寫入僅發生在您標記的區塊上。將它放在跨請求保持相同的最後一個區塊上,每個後續請求都會讀取同一個項目。如果後面的區塊在每個請求中都會變化(時間戳記、傳入的訊息),請將中斷點保持在它之前,放在最後一個穩定的區塊上。
只有在以下情況下您才需要多個中斷點:
- 不斷增長的對話使您的中斷點超過上次快取寫入 20 個或更多區塊,使先前的項目落在回溯視窗之外
- 您想要獨立快取以不同頻率更新的區段
- 您需要明確控制快取的內容以最佳化成本
範例:如果您有系統指示(很少變更)和 RAG 上下文(每天變更),您可以使用兩個中斷點分別快取它們。
不會,快取中斷點本身是免費的。您只需支付:
- 將內容寫入快取(5 分鐘 TTL 比基本輸入 token 多 25%)
- 從快取讀取(基本輸入 token 價格的一小部分)
- 未快取內容的一般輸入 token
中斷點的數量不會影響定價;只有快取和讀取的內容量才重要。
用量回應包含三個獨立的輸入 token 欄位,它們共同代表您的總輸入:
total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokenscache_read_input_tokens:從快取中擷取的 token(快取中斷點之前所有已被快取的內容)cache_creation_input_tokens:正在寫入快取的新 token(在快取中斷點處)input_tokens:最後一個快取中斷點之後未被快取的 token
重要: input_tokens 並不代表所有輸入 token,僅代表最後一個快取中斷點之後的部分。如果您有已快取的內容,input_tokens 通常會遠小於您的總輸入。
範例: 快取了一份 200k token 的文件,加上一個 50 token 的使用者問題:
cache_read_input_tokens:200,000cache_creation_input_tokens:0input_tokens:50- 總計: 200,050 個 token
這個細分對於了解您的成本和速率限制用量至關重要。如需更多詳細資訊,請參閱追蹤快取效能。
快取的預設最短存活期(TTL)為 5 分鐘。每次使用已快取的內容時,此存活期都會刷新。
如果您覺得 5 分鐘太短,Anthropic 也提供 1 小時快取 TTL。
存活期是從寫入或讀取快取項目的請求開始時計算,而非從其回應結束時計算。產生回應所花費的時間會計入存活期,因此後續請求重複使用快取的時間窗口是存活期減去產生時間。
如果您的請求會產生較長的回應,且下一個請求可能要到存活期過後才會開始,請使用 1 小時快取 TTL。
您可以在提示中定義最多 4 個快取中斷點(使用 cache_control 參數)。
所有現行的 Claude 模型都支援提示快取。
變更思考參數(切換模式,或在擴展模式中變更預算)會使已快取的訊息前綴失效,也可能使已快取的系統提示和工具失效,因為思考設定會被渲染到提示中。output_config.effort 值的行為也相同。
有關快取失效的更多詳細資訊,請參閱什麼會使快取失效。
有關思考功能的更多資訊,包括其與工具使用和提示快取的互動,請參閱思考與提示快取。
可以,提示快取可以與其他 API 功能(例如工具使用和視覺功能)一起使用。但是,變更提示中是否包含圖片或修改工具使用設定會破壞快取。
有關快取失效的更多詳細資訊,請參閱什麼會使快取失效。
提示快取有其專屬的定價:5 分鐘快取寫入的費用比基本輸入 token 多 25%,1 小時快取寫入的費用為基本輸入 token 的 2 倍,而快取命中的費用為基本輸入 token 價格的一小部分,每個模型各有其倍數。
目前無法手動清除快取。已快取的前綴會在至少 5 分鐘無活動後自動過期。
您可以使用 API 回應中的 cache_creation_input_tokens 和 cache_read_input_tokens 欄位來監控快取效能。
有關快取失效的更多詳細資訊(包括需要建立新快取項目的變更清單),請參閱什麼會使快取失效。
提示快取的設計具備強大的隱私和資料分隔措施:
-
快取鍵是使用截至快取控制點的提示的加密雜湊產生的。這表示只有具有相同提示的請求才能存取特定的快取。
-
在 Claude API、Claude Platform on AWS 和 Microsoft Foundry 上,快取在組織內依工作區隔離。在 Claude Models on Google Cloud (Google managed) 和 Bedrock 上,快取依組織隔離。在所有情況下,快取永遠不會在組織之間共用,即使提示完全相同也是如此。詳情請參閱快取儲存與共用。
-
快取機制的設計旨在維護每個獨特對話或上下文的完整性和隱私。
-
在提示中的任何位置使用
cache_control都是安全的。若要讓快取產生讀取,請將中斷點放在穩定前綴的結尾:將它放在每個請求都會變化的區塊上(例如時間戳記或使用者的任意輸入),每次都會寫入新的項目,且永遠不會命中。
這些措施確保提示快取在提供效能優勢的同時,維護資料隱私和安全性。
可以,您可以在 Message Batches API 請求中使用提示快取。但是,由於非同步批次請求可能會同時且以任意順序處理,因此快取命中是以盡力而為的方式提供的。
1 小時快取可以幫助提高您的快取命中率。最具成本效益的使用方式如下:
- 收集一組具有共用前綴的訊息請求。
- 發送一個批次請求,其中僅包含一個具有此共用前綴和 1 小時快取區塊的請求。這會將前綴寫入 1 小時快取。
- 此操作完成後,立即提交其餘的請求。您必須監控該作業以得知其何時完成。
這通常比使用 5 分鐘快取更好,因為批次請求通常需要 5 分鐘到 1 小時才能完成。
此錯誤通常出現在您升級了 SDK 或使用過時的程式碼範例時。提示快取可在 client.messages 上使用,不需要 beta 前綴。不要使用:
client.beta.prompt_caching.messages.create(**params)請使用:
client.messages.create(**params)此錯誤通常出現在您升級了 SDK 或使用過時的程式碼範例時。提示快取可在 client.messages 上使用,不需要 beta 前綴。不要使用:
client.beta.promptCaching.messages.create(/* ... */);請使用:
client.messages.create(/* ... */);可用性
Claude API
- API
- Messages API
- Managed Agents Beta
- 模型
- 所有模型
Claude Platform on AWS
- API
- Messages API
- Managed Agents Beta
- 模型
- 所有模型
Claude Models on Google Cloud (Anthropic managed)
- API
- Messages API
- Managed Agents Beta
- 模型
- 所有模型
Amazon Bedrock
- API
- Messages API
- 模型
- 所有模型
Amazon Bedrock (InvokeModel)
- API
- Messages API
- 模型
- 所有模型
Claude Models on Google Cloud (Google managed)
- API
- Messages API
- 模型
- 所有模型
Microsoft Foundry
- API
- Messages API
- 模型
- 所有模型
資料處理
資料處理概覽這個頁面有幫助嗎?