你有無試過,成個 AI 應用最貴嘅唔係答案,而係你每次都重覆送入去嗰段一模一樣嘅開場白?系統提示、工具定義、背景資料、產品目錄,來來去去都係嗰幾千隻字,但每問一次就計一次錢。Prompt caching(提示快取)就係針對呢個痛點而設:同一段前綴,模型處理過一次之後就可以重用,之後再叫佢就唔使由頭計。

Prompt caching 係將 prompt 開頭一段固定內容快取起,之後同樣前綴就唔使重複運算;寫入快取貴少少,但讀取成本可低至原本一成,重複使用越多次越慳。

一、佢到底慳咩?(原理速讀)

要理解佢慳咩,先要知模型點讀 prompt。模型收到你段文字之後,會逐個 token 計算一組內部狀態(行內叫 KV state),計完先開始生成答案。呢組狀態本來用完即棄,下一次你再送同一段文字,佢又要由頭計一次。

Prompt caching 做嘅事,就係將「開頭一段唔會變嘅文字」所計出嚟嘅狀態保存起。下一次請求如果前綴一模一樣,模型就可以直接拎返嗰組狀態,唔使重算,只集中處理新增嘅內容。因為省嘅係運算,所以同時反映喺價錢同速度兩邊:官方數字係讀取成本可以去到原價一折,延遲亦明顯縮短。

要留意一點:快取存嘅係「狀態」而唔係「文字」,所以你唔會因為快取而拎返舊答案;模型一樣要即時生成新回應,只係唔使重複消化同一段背景。

二、幾時用/幾時唔用

場景 適合快取? 原因
固定系統提示(角色、語氣、格式) ✅ 非常適合 每次開場都一樣,命中率最高
大量工具定義(function schema) ✅ 適合 每次請求都要重貼,快取後即省
大型參考資料(手冊、法規、知識庫) ✅ 適合 同一批文件被反覆引用
純一次過問答、prompt 好短 ❌ 唔值 用唔到快取,甚至得不償失

判斷原則好簡單:同一段前綴,你預計會用超過一次,就值得快取。

三、Anthropic 實戰:手動落 cache_control

Anthropic 嘅做法係由你指定「快取斷點」。概念上係三步:

  1. 排位:把唔會變嘅內容(系統提示、工具定義、大型文件)排喺最前面。
  2. 落斷點:喺佢尾度加 cache_control 標記,指明用 ephemeral 類型。
  3. 收尾:把會變嘅內容(例如用戶今次問題)排喺斷點之後。

第一次請求會產生寫入費用(比普通輸入貴約兩成半),之後同前綴嘅請求就按快取讀取價計,平得多。要記得:一旦斷點之前有任何一個字改動,嗰段同之後嘅內容就會失效,需要重新寫入。

另外,Anthropic 有一項貼心設計:即使你無特登落斷點,部分情況系統都會自動幫你喺合理位置快取,但你唔好靠佢,主動控制先至穩定。

官方文件(有齊參數同範例):【點擊前往】

Anthropic 官方 Prompt caching 文件,示範 cache_control 標記點樣落喺 content block

四、OpenAI 實戰:預設自動,唔使點落手

OpenAI 嘅取向唔同,佢係預設自動快取。只要同一段前綴達到最低長度門檻(新模型約一千個 token 起),系統就會自動幫你保存,之後同樣前綴自動命中,你唔使改任何程式碼。收費模式類似:寫入略貴,讀取大幅折讓。

想用得更盡,你可以刻意把穩定內容排前面、易變內容排後面,令命中率提高。要留意工具清單、模型選擇、輸出格式設定呢幾項都會影響前綴:改咗其中一項,之前快取就可能對唔上。所以如果你要經常改呢啲設定,最好集中喺開發階段試,唔好喺生產環境頻繁轉。

OpenAI 官方文件:【點擊前往】

OpenAI 官方 prompt caching 文件,說明自動快取嘅門檻同收費模式

五、實戰踩過嘅坑

  1. 快取有時間限制:大部分平台嘅快取係短暫保存,唔會永久留住,隔太耐再叫就要重新寫入。
  2. 順序好重要:明明內容一樣,但你調換咗段落次序,前綴就唔再匹配。
  3. 唔好放易變內容喺前面:時間戳、用戶名、隨機 ID 擺喺開頭,成段快取即刻報廢。

我自己嘅做法係,將 prompt 分三層:最底層係永遠唔變嘅系統設定同工具定義,中間層係一段時間內唔變嘅參考資料,最上層先係今次請求。咁樣命中率最高,亦最易排查點解無快取到。

六、值得唔值得做?

如果你嘅應用每日只跑幾次,慳嘅錢可能唔夠你改 code 嘅時間。但只要係 agent、客服機械人、內容生成呢類「同一段背景會反覆用到」嘅場景,快取幾乎係免費嘅減成本手法,改動量細、回報直接。我自己實測,同一段長背景連續問十次,成本可以由原本嘅十倍降到兩倍左右,效果相當明顯。

記住一句:穩定嘅內容排前面,會變嘅內容排最後。呢句記得住,你就已經掌握咗快取九成精髓。