Prompt Caching 入門:同一份大文件問幾百條問題,點樣慳返 90% 費用
Prompt caching 係咩、邊啲 API 支援、點設計先 cache 得中——附 Python 實測對比
重點整理
- 痛點:成個 codebase/本手冊貼落 prompt,每問一條問題就俾一次全額 input 費用——重複內容重複俾錢
- 原理:API 幫你快取 prompt 前綴,之後同前綴嘅請求 input 費用平 50~90%,仲快埋
- 實戰:Anthropic / OpenAI / Ollama 本地 KV-cache 三種做法,cache_control 點標記先中
- 設計原則:靜態內容擺 prompt 頭、動態問題擺尾——順序錯咗 cache 就白費
痛點:你係咪重複俾緊同一筆錢?
好典型嘅用法:將成個產品手冊(5 萬字)貼落 system prompt,然後問幾十條客戶問題。每次請求都計足 5 萬字 input 錢——但其實嗰 5 萬字每次都一模一樣。
Prompt caching 就係解決呢個浪費:API 供應商幫你將 prompt 嘅前綴快取落伺服器,之後嘅請求只要開頭一樣,重複部分就收平價(甚至唔計錢),延遲仲低埋。
邊啲服務支援?
| 服務 | 做法 | 折扣 |
|---|---|---|
| Anthropic | cache_control 標記 | 讀 cache 平 90%(寫入 +25%) |
| OpenAI | 自動(prefix >1024 token) | 平 50%,唔使設定 |
| Google Gemini | cachedContent 物件 | 平 75% |
| 本地 Ollama / llama.cpp | KV-cache 自動重用 | 免費(慳時間) |
實戰:Anthropic Python
import anthropic
client = anthropic.Anthropic()
manual = open("product_manual.txt").read() # 5 萬字靜態內容
r = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=[{
"type": "text",
"text": f"你係客戶服務助理,根據以下手冊回答:\n{manual}",
"cache_control": {"type": "ephemeral"}, # 標記呢段做快取
}],
messages=[{"role": "user", "content": "保養期幾長?"}],
)
print(r.usage)
# cache_creation_input_tokens=68000 (第一次,貴少少)
# cache_read_input_tokens=68000 (之後每次,平 90%)
OpenAI 嗰邊唔使做嘢:只要唔同請求嘅 prompt 開頭完全一樣,超過 1024 token 就自動計 prefix cache。
設計原則:順序係一切
Cache 係前綴匹配——由第一個 token 開始逐個比對,撞到第一個唔同位就斷。
- 靜態擺頭:手冊、規則、few-shot 例子——全部擺 system prompt 最前
- 動態擺尾:用戶問題、今日日期、session 資料——擺最後
- 千祈唔好中間插野:喺 system prompt 加「今天係 2026-09-18」,聽日 cache 即全部作廢
- 一次標一大段好過分幾細段——Anthropic 最少要 2048 token 先值得 cache
本地跑 Ollama 嘅朋友都受惠:同前綴嘅請求會重用 KV-cache,第二問開始回應速度明顯快一截——呢個就係點解「同一個 session 問跟進問題」特別快。
總結
Prompt caching 係2026 年最抵學嘅慳錢技巧——零代碼改動(OpenAI)或者一行標記(Anthropic),成本即刻減半甚至九成。記住一句:會重複嘅內容擺頭,會變嘅內容擺尾。
