AI 程式開發與代理

[AI 脈絡 #7] 用提示詞快取降低 API 成本

系列最後一篇談錢。如果你曾用 API 執行代理程式,應該在帳單上看過異常:輸入權杖費用遠高於輸出。回想第 1 篇的結構就很合理。每一輪都重新傳送從系統提示詞到完整對話記錄的內容,因此 50 輪代理程式工作階段等於為同一份系統提示詞付費 50 次…

閱讀 4 分鐘
[AI 脈絡 #7] 用提示詞快取降低 API 成本 封面圖

系列最後一篇談錢。如果你曾用 API 執行代理程式,應該在帳單上看過異常:輸入權杖費用遠高於輸出。回想第 1 篇的結構就很合理。每一輪都重新傳送從系統提示詞到完整對話記錄的內容,因此 50 輪代理程式工作階段等於為同一份系統提示詞付費 50 次。

提示詞快取(prompt caching)就是用來削減這種重複成本的機制。使用得當時,輸入成本可降至十分之一,回應也會更快,但有一個條件:必須按照快取偏好的方式累積脈絡。本篇將介紹原理,以及那些不經意讓快取全部失效的錯誤。

相同的前綴不必重新計算

原理在第 1 篇已經介紹了一半。模型處理輸入時,每個權杖都會產生注意力中間結果,並以 KV 快取累積在 GPU 記憶體中。提示詞快取會在請求結束後保留這些 KV 快取;如果下一個請求以相同內容開頭,就能完整重用該區段的運算結果。

看看它多適合代理程式對話。第 10 輪輸入是「系統提示詞+第 1~9 輪+新訊息」,第 11 輪則是「系統提示詞+第 1~10 輪+新訊息」。前半段完全相同。有快取時,伺服器只需取出已計算到第 10 輪的結果,再計算新接上的尾端。

計費也遵循這個結構。以 Anthropic API 為例,從快取讀取的輸入權杖只收原價的 10%。新寫入快取的權杖會加收 25%,但對寫入一次、讀取多次的代理程式模式而言,很快就能抵銷。數百輪的工作階段中,有無快取可能造成數倍成本差異;由於快取區段不必處理,首個權杖的延遲也會明顯降低。

只有一個條件:前綴不能改變任何字元

並沒有免費午餐。重用快取的條件是前綴相符。快取只適用於從輸入開頭連續相同的區段,從第一個不同的位置起,後方內容都必須重新計算。

第 1 篇也解釋了原因。在注意力機制中,每個權杖的 KV 值都依賴前方所有權杖。只要前方有一個權杖改變,後面所有權杖的計算結果就會不同,因此無法使用快取。這就是脈絡前段越不能隨意修改的原因。

快取友善脈絡的原則可用一句話概括:穩定的放前面,可變的放後面,記錄不要修改,只能追加(append-only)。

以 append-only 累積就能命中;修改前綴後,從該處起全部重新計算
以 append-only 累積就能命中;修改前綴後,從該處起全部重新計算

讓快取全部失效的無心錯誤

原則很簡單,但違反它的方法卻很隱蔽。

第一種是系統提示詞中的可變值。如果把目前時間精確到秒寫入系統提示詞,脈絡開頭每次請求都不同,快取命中率就會是 0%。若一定要加入,應粗略到日期,或放在脈絡後方。工作階段 ID 和隨機值也是同樣的陷阱。

第二種是變更工具定義。工具結構通常位於脈絡最上方,因此在工作階段中途新增或移除工具,會使其後全部快取失效。第 4 篇建議整理 MCP 伺服器;從快取角度還要補充一句:在工作階段開始前整理,中途不要更動。

第三種是編輯記錄中段。有人會修改上一輪內容或刪除舊輪次來節省脈絡,但前綴一旦被破壞,快取就會從該處消失。為省下幾千個權杖,反而支付整個工作階段的重新計算費用,往往得不償失。若必須刪除記錄,不如建立分界後整段清空。

最後,從快取角度重新看第 3 篇的 /compact。壓縮會用新的摘要取代完整記錄,因此快取會完全重設。當然,後續輪次能在較短的記錄上建立新快取,長期仍可能受益;但要理解「compact 不是免費清理,而是需要重建快取成本的事件」。這也是頻繁 compact 往往不如每個分界使用 /clear 划算的原因。

有無快取會讓帳單產生數倍差異
有無快取會讓帳單產生數倍差異

系列總結:處理脈絡的七種感覺

逐句回顧貫穿 7 篇的原則。

  1. 脈絡視窗有限,其限制來自注意力運算與 KV 快取的物理條件。
  2. 能放進去不代表能用得好;長度本身就會降低品質。
  3. 每個工作邊界以 /clear 為預設,只有需要延續脈絡時才使用附帶指示詞的 /compact。
  4. 系統提示詞、CLAUDE.md、工具定義都是固定成本。只保留永遠為真的內容,而且要短。
  5. 過程繁重、結論簡單的工作,隔離在子代理程式的脈絡中。
  6. 需要跨越工作階段保留的知識,外部化到檔案。計畫檔、記憶,內容大時使用 RAG。
  7. 脈絡必須以 append-only 累積,快取才有用。穩定的放前面,可變的放後面。

濃縮成一句話:脈絡不是模型的能力,而是使用者設計的預算。即使進入 100 萬權杖時代,這種感覺仍然有效。視窗越大,挑選要放入什麼的眼光越能造成效能差異。