前綴快取:把重複的系統提示只算一次
如果你的每個請求都帶著兩千字的系統提示,前綴快取幾乎是免費的加速。
同一個服務的請求,開頭往往完全相同——系統提示、工具定義、少樣本範例。前綴快取(prefix caching)把這段共同前綴的 KV 快取存起來重複使用,省下的正是預填充階段的計算。
效果取決於前綴佔比
- 系統提示 2000 token、使用者輸入 100 token → 幾乎全部命中,TTFT 大幅下降。
- 系統提示 100 token、使用者輸入 3000 token → 幫助有限。
讓前綴真的能命中
快取以 token 序列的前綴為準,只要有一個字不同,後面就全部失效。所以要把變動的內容放到最後。
# 不好:時間戳在最前面,每次請求前綴都不同
prompt = f"現在時間 {now}\n{SYSTEM}\n{user_input}"
# 好:固定內容在前,變動內容在後
prompt = f"{SYSTEM}\n{TOOLS}\n{EXAMPLES}\n現在時間 {now}\n{user_input}"和 API 供應商的快取
商業 API 多半也提供提示快取,通常需要在請求中標記可快取的區段,並且有最小長度限制。計費上快取命中的部分單價較低,長系統提示的服務常能省下可觀費用。
量測命中率
服務端一般會輸出快取命中的 token 數。把「命中 token / 輸入 token」做成指標,改動提示結構後立刻能看出效果。
別為了提高命中率把使用者資料塞進系統提示。快取是跨請求共用的,不同使用者的資料混進去是嚴重的隔離問題。