提示快取是代理程式帳單中最大的單一槓桿,也是最可能在無聲無息中未正常運作的項目。 正確標記後,請求中重複的部分會按輸入費率的十分之一計費。標記錯誤——或透過會重寫前綴的服務路由——則會按高於一般費率計費,因為你付費寫入了完全沒有人讀取的快取項目。
相關機制已在其他地方有完整文件。沒有任何地方說明的是,當請求經過閘道時會發生什麼變化,而這正是大多數讀者的情況。以下分別說明兩者。
機制簡述
你會標記穩定前綴——系統提示、工具結構描述或文件——提供者會儲存其處理結果。下一個前綴完全相同的請求會讀取它,而不是重新處理。
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "<your long, stable instructions>",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "..." }]
}兩項特性完成所有工作,也造成所有麻煩。比對依據是前綴,因此任何前段變更都會使後續全部內容失效。項目也有存留時間,因此回合之間間隔很長的對話會重新建立,而不是讀取。
費用
| 模型 | 輸入,每 1M | 快取讀取 | Kunavo 的快取寫入 |
|---|---|---|---|
| Claude Haiku 4.5 | $0.70 | $0.07 | $0.88 |
| Claude Sonnet 5 | $1.40 | $0.14 | $1.75 |
| Claude Opus 5 | $3.50 | $0.35 | $4.38 |
第三欄是標準比例:讀取成本為輸入的十分之一。第四欄也同樣標準——快取寫入成本為輸入的 1.25×,也就是 Anthropic 為五分鐘項目列出的倍數;由於兩種比例都套用到 Kunavo 的輸入價格,因此相對 Anthropic 牌價的折扣都與模型輸入相同。Kunavo 與 Anthropic 不同之處在於一小時項目:Anthropic 將該寫入列為輸入的 2×,而 Kunavo 則按相同的 1.25× 計費。這對經常重建的工作負載尤其重要——長時間執行的代理程式、緩慢的對話,以及前綴頻繁變動的任何工作負載——因為在這些工作負載中,主導快取帳單明細的是寫入,而不是讀取。
兩個數值都會在呈現時從目錄讀取;相同來源定價表與Claude 計算器也會讀取這些數值——此頁沒有任何手動輸入的費率。
讀取使用量物件
不要從帳單推測快取行為;每個回應都會直接告訴你,三個權杖計數就是完整診斷結果。
// The four numbers that tell you whether caching is working.
// Read them from every response before you tune anything.
"usage": {
"input_tokens": 312, // billed at the input rate
"cache_creation_input_tokens": 0, // billed at the write rate
"cache_read_input_tokens": 24106, // billed at the read rate
"output_tokens": 890
}
// A healthy cached agent turn looks like the above: a small
// input_tokens, a large cache_read, and a zero creation.
// If cache_creation is large on EVERY turn, the cache is being
// rebuilt each time and you are paying more, not less.為什麼經過閘道後命中率會下降
快取存在於建立它的上游端,而且前綴比對是精確的。這兩項事實結合後,會產生三種直接呼叫單一供應商時不會發生的失敗模式:
路由發生變更。 如果連續請求落在不同的上游端,第二個請求就找不到快取——第一個請求寫入的項目,從第二個請求執行的位置不可見。這在你自己的日誌中不明顯,只有當本應是讀取的請求顯示為快取建立計數時才會出現。這是最常見的單一原因,也就是為什麼能在上游端之間自由重新路由的閘道,可能每個權杖更便宜、每個工作階段卻更昂貴。
你的前綴之前被插入了某些內容。 重寫系統訊息、正規化工具定義或重新排序欄位的層會產生不同的前綴,而不同的前綴就會造成未命中。不會發生錯誤;帳單只會上升。
間隔時間超過了項目的存續時間。 如果代理程式在回合之間思考數分鐘,每次都可能重新建立。這是你的工作負載特性,而非閘道特性,但它會與第一種情況產生不良交互作用:重新建立也代表一次重新路由的機會。
三種情況的診斷方式相同——在一個工作階段中觀察cache_creation_input_tokens。數值平坦且很大,表示你正在重建。第一次很大、之後為零,表示運作正常。在 Kunavo 中,請求層級的成本與快取權杖計數位於使用量檢視中,而快取參考提供端點層級的詳細資訊。
如何處理
讓快取前綴真正保持穩定——每個請求中會變動的內容都放在標記區塊之後,絕不要放在之前。在可行的情況下,讓代理程式的回合更接近地批次處理,因為閒置時間是短生命週期項目的敵人。請以完整工作階段而非單一請求進行端到端測量:快取是序列的特性,單一請求估算無法看見它。Claude 權杖成本計算器設有快取權杖欄位正是這個原因——將其設為提示中真正重複部分的比例,月度數值才不會流於虛構。
常見問題
Claude 提示快取如何運作?
你會使用 cache_control 標記請求中的穩定前綴——通常是系統提示、工具定義或長文件——提供者會儲存這些權杖的處理結果。下一個前綴完全相同的請求會從快取提供這些權杖,並按輸入費率的一小部分計費,而不必重新處理。比對依據是完全相同的前綴,因此請求前段的任何變更都會使後續全部內容失效。
Claude 提示快取能節省多少費用?
快取讀取按模型輸入費率的十分之一計費。在 Claude Sonnet 5 上,每 1M 個 token 的費用是 $0.14,而非 $1.40;在 Claude Opus 5 上,是 $0.35,而非 $3.50;在 Claude Haiku 4.5 上,是 $0.07,而非 $0.70。節省幅度完全取決於輸入中重複內容所占的比例:每次提示詞都不同的聊天產品無法節省任何費用,而每回合重新傳送 24,000-token 儲存庫地圖的程式碼代理,會將大部分輸入帳單轉為原本的十分之一。
Kunavo 會收取快取寫入附加費嗎?
會——與 Anthropic 收取的相同,都是 1.25×,並套用模型折扣。Anthropic 自己的 API 對寫入快取項目的價格高於一般輸入費率,理由是寫入的處理成本高於普通權杖:五分鐘項目為輸入費率的 1.25×,一小時項目為 2×。Kunavo 對每次快取寫入都按模型本身輸入費率的 1.25× 計費,包括一小時項目,因此寫入相對 Anthropic 牌價的折扣與模型輸入相同——在 Claude Sonnet 5 上,每 1M 寫入權杖為 $1.75,一般輸入則為 $1.40。這是在計費程式碼的一處以 Claude 模型寫入比例 1.25 設定,本站的計算機會從同一函式讀取最終費率,而不是重新陳述,因此顯示的數字不會與實際收費不一致。
為什麼透過閘道時我的快取命中率很低?
因為快取綁定到持有它的上游,而前綴比對要求完全相同。在閘道設定中,有三件事會使快取失效,但直接對單一提供者時不會。若請求路由到與前一次不同的上游,就會在該處找不到快取,因為快取不會在上游之間共享。在你的前綴之前插入任何內容——例如重寫系統訊息或重新排列工具清單——都會產生不同的前綴,因此命中失敗。此外,超過項目存留時間的間隔會使其過期,因此回合緩慢的代理程式每回合都必須重新建立快取。使用量物件會告訴你是哪一種:如果每個請求的 cache_creation_input_tokens 都很大,表示正在重建,而不是使用快取。
如何判斷提示快取是否真的在運作?
請讀取使用量物件,而不是帳單。每個回應都會分別回報 input_tokens、cache_creation_input_tokens 和 cache_read_input_tokens。正常運作的快取會顯示較小的輸入數量、較大的 cache_read 數量,以及零或偶爾出現的建立數量。如果快取每回合都在重建,則每一回合的建立數量都很大——這比完全不使用快取還昂貴,因為你付費寫入了沒有人讀取的項目。
Claude 提示快取的最小大小是多少?
存在一個低於該大小便無法快取的下限,而且依模型層級而異,因此短系統提示可能無論如何標記都始終不會快取。實務上的測試應以經驗為準,而不是依據文件:標記前綴,傳送兩個相同請求,查看第二個請求回報的 cache_read_input_tokens 是否大於零。如果不是,前綴要麼低於下限,要麼不是逐位元組完全相同。
提示快取會改變模型回傳的內容嗎?
不會。快取是針對前綴處理所進行的計費與延遲最佳化,不會改變模型看到或產生的內容。使用或不使用 cache_control 的相同請求會回傳相同類型的答案;改變的是前綴的費用,以及第一個權杖抵達的速度。