你有無試過,成個 AI 應用最貴嘅唔係答案,而係你每次都重覆送入去嗰段一模一樣嘅開場白?系統提示、工具定義、背景資料、產品目錄,來來去去都係嗰幾千隻字,但每問一次就計一次錢。Prompt caching(提示快取)就係針對呢個痛點而設:同一段前綴,模型處理過一次之後就可以重用,之後再叫佢就唔使由頭計。
Prompt caching 係將 prompt 開頭一段固定內容快取起,之後同樣前綴就唔使重複運算;寫入快取貴少少,但讀取成本可低至原本一成,重複使用越多次越慳。
一、佢到底慳咩?(原理速讀)
要理解佢慳咩,先要知模型點讀 prompt。模型收到你段文字之後,會逐個 token 計算一組內部狀態(行內叫 KV state),計完先開始生成答案。呢組狀態本來用完即棄,下一次你再送同一段文字,佢又要由頭計一次。
Prompt caching 做嘅事,就係將「開頭一段唔會變嘅文字」所計出嚟嘅狀態保存起。下一次請求如果前綴一模一樣,模型就可以直接拎返嗰組狀態,唔使重算,只集中處理新增嘅內容。因為省嘅係運算,所以同時反映喺價錢同速度兩邊:官方數字係讀取成本可以去到原價一折,延遲亦明顯縮短。
要留意一點:快取存嘅係「狀態」而唔係「文字」,所以你唔會因為快取而拎返舊答案;模型一樣要即時生成新回應,只係唔使重複消化同一段背景。
二、幾時用/幾時唔用
| 場景 | 適合快取? | 原因 |
|---|---|---|
| 固定系統提示(角色、語氣、格式) | ✅ 非常適合 | 每次開場都一樣,命中率最高 |
| 大量工具定義(function schema) | ✅ 適合 | 每次請求都要重貼,快取後即省 |
| 大型參考資料(手冊、法規、知識庫) | ✅ 適合 | 同一批文件被反覆引用 |
| 純一次過問答、prompt 好短 | ❌ 唔值 | 用唔到快取,甚至得不償失 |
判斷原則好簡單:同一段前綴,你預計會用超過一次,就值得快取。
三、Anthropic 實戰:手動落 cache_control
Anthropic 嘅做法係由你指定「快取斷點」。概念上係三步:
- 排位:把唔會變嘅內容(系統提示、工具定義、大型文件)排喺最前面。
- 落斷點:喺佢尾度加
cache_control標記,指明用ephemeral類型。 - 收尾:把會變嘅內容(例如用戶今次問題)排喺斷點之後。
第一次請求會產生寫入費用(比普通輸入貴約兩成半),之後同前綴嘅請求就按快取讀取價計,平得多。要記得:一旦斷點之前有任何一個字改動,嗰段同之後嘅內容就會失效,需要重新寫入。
另外,Anthropic 有一項貼心設計:即使你無特登落斷點,部分情況系統都會自動幫你喺合理位置快取,但你唔好靠佢,主動控制先至穩定。
官方文件(有齊參數同範例):【點擊前往】

四、OpenAI 實戰:預設自動,唔使點落手
OpenAI 嘅取向唔同,佢係預設自動快取。只要同一段前綴達到最低長度門檻(新模型約一千個 token 起),系統就會自動幫你保存,之後同樣前綴自動命中,你唔使改任何程式碼。收費模式類似:寫入略貴,讀取大幅折讓。
想用得更盡,你可以刻意把穩定內容排前面、易變內容排後面,令命中率提高。要留意工具清單、模型選擇、輸出格式設定呢幾項都會影響前綴:改咗其中一項,之前快取就可能對唔上。所以如果你要經常改呢啲設定,最好集中喺開發階段試,唔好喺生產環境頻繁轉。
OpenAI 官方文件:【點擊前往】

五、實戰踩過嘅坑
- 快取有時間限制:大部分平台嘅快取係短暫保存,唔會永久留住,隔太耐再叫就要重新寫入。
- 順序好重要:明明內容一樣,但你調換咗段落次序,前綴就唔再匹配。
- 唔好放易變內容喺前面:時間戳、用戶名、隨機 ID 擺喺開頭,成段快取即刻報廢。
我自己嘅做法係,將 prompt 分三層:最底層係永遠唔變嘅系統設定同工具定義,中間層係一段時間內唔變嘅參考資料,最上層先係今次請求。咁樣命中率最高,亦最易排查點解無快取到。
六、值得唔值得做?
如果你嘅應用每日只跑幾次,慳嘅錢可能唔夠你改 code 嘅時間。但只要係 agent、客服機械人、內容生成呢類「同一段背景會反覆用到」嘅場景,快取幾乎係免費嘅減成本手法,改動量細、回報直接。我自己實測,同一段長背景連續問十次,成本可以由原本嘅十倍降到兩倍左右,效果相當明顯。
記住一句:穩定嘅內容排前面,會變嘅內容排最後。呢句記得住,你就已經掌握咗快取九成精髓。