Prompt CachingAPI Cost SavingContext Caching

提示詞快取完全解析:最高省下 90% 的 LLM API 成本

閱讀 1 分鐘

每個請求都送出同一份 10,000 Token 的系統提示詞。同樣的程式標準。同樣的 few-shot 範例。同樣的工具定義。你為其中每一個都付全額輸入價。用 GPT-5.5、輸入 $5/M、每天 500 次請求——一天 $25——一個月 $750——只為了那些模型已經處理過 500 次的內容。

提示詞快取把這個降到每月 $75。同樣的內容。同樣的輸出品質。一處程式變更。提示詞快取是我們的成本優化攻略裡 12 個策略之一——而且它用最小的程式變更,交出最高的 ROI。

這篇文章涵蓋四家主要供應商的快取運作方式、實作需要的確切程式碼、以及怎麼診斷你的工作負載適不適合快取。這是 TokSpan 部落格上提示詞快取的權威參考——其他文章會連結到這裡取得完整實作細節。

提示詞快取怎麼運作(以及為什麼它不是銀彈)

當你送一個提示詞給 LLM,模型會處理每一個 Token——包括它已經看過幾百次的那些。每個請求都重複計算。把那些 Token 快取起來,模型就能跳過冗餘的計算。

機制: 你把提示詞的一部分標記為可快取。供應商對那部分做雜湊。後續帶相同前綴的請求,供應商取出快取的計算,而不是重跑。你為快取 Token 付折扣費率——有些供應商甚至完全不收快取部分的推理費。

可以快取的: 系統提示詞(最常見、ROI 最高的用法)。工具定義——請求之間完全一致。few-shot 範例。靜態文件脈絡——產品文件、知識庫文章、程式標準。到最後一則訊息為止的對話紀錄——在新訊息出現之前,歷史都是相同的。

不能快取的: 使用者新的訊息——它在提示詞最末端、每個請求都不同。非決定性的前綴——任何會在請求之間變動的東西。短於供應商最小快取長度(通常是 1,024 Token)的內容。

陷阱: 快取會過期。TTL 從 5 分鐘(Anthropic、OpenAI)到可設定的數小時(Google)都有。如果你的請求間隔超過 TTL,快取就冷了,你得付全價。快取也依供應商、依模型——從 Opus 切到 Sonnet 會讓快取失效。

逐供應商實作

Anthropic——一折、業界最優、明確控制。

Anthropic 提供業界最好的快取經濟效益:快取輸入 Token 享 90% 折扣。Anthropic 的提示詞快取文件詳細說明快取斷點、TTL 行為與定價。快取寫入比基本輸入價貴一點點(見下方定價明細)。損益兩平點:每次快取寫入約 1.3 個總請求——也就是只要 2 個請求共用一個快取前綴,就省下約 32.5%。對多數生產工作負載,你會有幾十次。帶快取的 Anthropic SDK 完整設定走查,請見Claude API 開發者指南

import anthropic

client = anthropic.Anthropic(
    base_url="https://api.tokspan.com/anthropic",
    api_key="ts-your-key-here"
)

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1000,
    system=[
        {
            "type": "text",
            "text": "You are a code reviewer. Here are our 10,000-token coding standards...",
            "cache_control": {"type": "ephemeral"}  # Cache this
        }
    ],
    messages=[{"role": "user", "content": "Review this PR."}]
)

快取斷點。 你可以在訊息各處放多個 cache_control 區塊。每個標記一個「到這裡為止的前綴會被快取」的點。策略性放置:快取系統提示詞(永遠)。快取不含最後一則使用者訊息的對話紀錄(歷史是靜態的;新的使用者訊息是動態的)。快取工具定義(它們很少變)。

最小快取長度: Opus 4.5+(含 Opus 4.8/4.7/4.6/4.5)與 Haiku 4.5 是 4,096 Token;Sonnet 4.6 是 2,048 Token。比這短的提示詞不會被快取——快取管理的開銷超過節省的運算。

OpenAI——五折、全自動、零投入。

OpenAI 的提示詞快取對超過 1,024 Token 的提示詞是自動的。不用改程式。不用 cache_control 區塊。供應商偵測到重複前綴就默默套用折扣。取捨:Anthropic 的 90% 對上這裡的 50% 折扣,而且不保證命中——要不要快取由供應商決定。

# No special code needed. OpenAI automatically caches repeated prefixes.
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": "Your 5,000-token system prompt here..."},
        {"role": "user", "content": "User message here."}
    ]
)
# If the system prompt was cached, you pay 50% less for those input tokens.
# Check response.usage for cache status.

Google Gemini——脈絡快取、明確、TTL 可設定。

Google 的做法不同:你建立一個帶明確 TTL 的「cached content」資源——Google 的脈絡快取文件涵蓋設定與定價。TTL 從幾分鐘到 24 小時。你在請求中引用快取的內容。快取跨多個請求與多個使用者持續存在。最適合:多個使用者查詢的靜態內容文件問答。

DeepSeek——快取命中 $0.0036/M、全自動、絕對最便宜。

DeepSeek 的快取命中價每百萬 Token $0.0036——比它已經很便宜的基本價還便宜 40 倍。快取是自動的(類似 OpenAI)。沒有明確控制。但以這個價位,幾乎任何帶重複內容的工作負載都划算。

快取定價:真正的省錢

供應商快取寫入快取讀取對比基本輸入TTL自動?
Anthropic基礎價格的 1.25 倍基礎價格的 10%省下 90%~5 min無(明確)
OpenAI基礎價格的 50%省下 50%5–60 min
Google Gemini視 TTL 而定視 TTL 而定最多省下 75%Configurable無(明確)
DeepSeek$0.0036/M省下約 97%~5 min

選擇指南。 除了帳面價格,每家供應商的快取實作還有架構上的取捨。Anthropic 給你明確控制與最深的折扣——但你要付 25% 的快取寫入加價、自己管理斷點位置。OpenAI 是射後不理:零程式、省 50%、不保證命中。Google 可設定的 TTL 獨一無二:在產品文件上設 24 小時快取,用一個快取資源服務數千使用者。DeepSeek 的絕對價格下限(每百萬快取 Token $0.0036)讓快取命中率最佳化幾乎無關緊要——在那個價位,就算 10% 命中率也省錢。

供應商最小快取長度實作投入最適合注意事項
Anthropic4,096 tokens (Opus 4.5+, Haiku 4.5); 2,048 (Sonnet 4.6)加 3 行程式碼系統提示詞、工具定義、few-shot1.25 倍寫入成本;5 分鐘 TTL
OpenAI1,024 tokens任何工作負載、被動省錢不保證命中;只有省 50%
Google Gemini視模型而定建立資源文件問答、長 TTL 需求長 TTL 成本較高
DeepSeek~1,024 tokens高量、價格敏感僅自動;較不可預測

省錢計算機。 一個每天 500 次請求、10,000 Token 快取系統提示詞、500 Token 使用者訊息、用 Claude Opus 輸入 $5/M 的工作負載:

  • 沒有快取:500 × (10,000/1,000,000 × $5) = 光快取對象內容一天就 $25
  • 有快取:500 × (10,000/1,000,000 × $0.50) = 快取對象內容一天 $2.50
  • 年度省下:$8,212——那份內容省 $821。 一處程式變更。

隱藏的快取寫入成本。 Anthropic 對快取寫入收基本輸入價的 1.25 倍。損益兩平大約是每次寫入 1.3 個總請求——也就是連單一次快取讀取(兩個請求共用同一個提示詞)都省下約 32.5%。對所有請求都相同的系統提示詞與工具定義,這永遠不是問題。對大多數請求都獨一無二(沒有快取讀取)的內容,你付 25% 的寫入加價、卻沒有任何相抵的省錢。監控你的快取命中率。目標 >80%。

你的工作負載適合快取嗎?

最適合快取的:

  • 帶長系統提示詞的聊天機器人——提示詞對所有使用者與對話都相同。命中率:接近 100%。
  • 帶靜態文件脈絡的 RAG 應用——知識庫內容對每一次查詢都一樣。命中率:高,取決於你查多少份不同文件。
  • few-shot 提示詞任務——你的範例在請求之間相同。快取它們。
  • 帶長紀錄的多輪對話——到最後一則訊息為止的歷史是靜態的。除了最後一輪使用者,其他都快取。
  • 帶工具定義的程式 Agent——工具 schema 是靜態的。快取它們。

最不適合快取的:

  • 一次性提示詞——每個請求都不同。沒有重複前綴。命中率:0%。
  • 每個請求一份獨特文件——如果每次查詢都是不同文件,就沒有東西可快取。
  • 非常短的提示詞(<1,024 Token)——低於多數供應商的最小快取長度。
  • 高隨機性生成——如果每個回應都是無拘束的創作,輸出不可快取(快取是關於輸入 Token 的)。

簡單診斷。 把一天的每個 API 請求前 2,000 個字元記下來。數有多少是相同的。如果你的請求有 >50% 共用一個超過 1,000 Token 的公共前綴,提示詞快取會替你省下可觀的錢。如果 <20%,省下的錢不值得明確快取的實作投入(不過自動快取仍會提供被動省錢)。

快取命中率診斷:一個 5 分鐘的腳本

在碰生產程式碼之前,先驗證你的工作負載適不適合快取。對你最近 1,000 次 API 請求跑這個腳本。它會雜湊每個請求的可快取部分,回報你的重複率——與至少另一個請求共用前綴的請求百分比。

import hashlib
import json
from collections import Counter

# Load your request log —adapt the path and format to your setup
with open("api_requests.jsonl") as f:
    requests = [json.loads(line) for line in f]

def get_cacheable_prefix(req):
    """Extract the static portion of each request.
    For most applications this is the system prompt + any messages
    before the final user turn."""
    messages = req.get("messages", [])
    prefix = messages[:-1] if len(messages) > 1 else messages
    return json.dumps(prefix, sort_keys=True)

prefixes = [get_cacheable_prefix(r) for r in requests]
hashes = [hashlib.md5(p.encode()).hexdigest() for p in prefixes]
counts = Counter(hashes)

total = len(requests)
unique = len(counts)
most_common = counts.most_common(1)[0] if counts else (None, 0)
dup_rate = (total - unique) / total * 100 if total else 0

print(f"Total requests analyzed: {total}")
print(f"Unique prefixes: {unique}")
print(f"Most-repeated prefix: {most_common[1]} occurrences")
print(f"Duplication rate: {dup_rate:.1f}%")

if dup_rate > 70:
    print("=> Cache-friendly. Implement explicit caching —high ROI.")
elif dup_rate > 40:
    print("=> Borderline. Caching helps, but audit write costs first.")
else:
    print("=> Not cache-friendly. Skip caching; use other optimizations.")

這些數字對你的帳單意味著什麼。 每天 500 次請求、10,000 Token 系統提示詞、輸入 $5/M、重複率 70%——代表 350 個請求受惠於快取。用 Anthropic 的 90% 折扣,快取 Token 從 $5/M 變 $0.50/M——光那一塊一天就省 $15.75。用 OpenAI 的自動 50% 折扣,零程式變更一天省 $8.75。就算 40% 的重複率也有意義:每天 200 次、10,000 Token,在 Anthropic 上一天省 $9。

拿不到請求紀錄? 你的 LLM 供應商儀表板會顯示總請求數與每請求平均 Token。拿你的 App 的 MAU 交叉比對。如果你用固定 5,000 Token 的系統提示詞服務 100 個日活使用者,你有 100 個相同前綴。如果每個使用者每次 session 上傳一份獨特的 20 頁文件,你的重複率趨近於零。儀表板會告訴你屬於哪一桶,一行 log 都不用挖。

提示詞快取什麼時候會害你多花錢

大部分時間,提示詞快取都在省錢。但在錯誤的條件下,它會反過來——你多付了卻什麼都沒得到。以下是你該在加快取控制之前三思的情境。

Anthropic 在低命中率工作負載上的寫入加價。 Anthropic 對每次快取寫入收基本輸入價的 1.25 倍。如果你的快取命中率跌破 20%,寫入加價就超過讀取折扣。以 $5/M 基本價的 10,000 Token 快取區塊:寫入花 $0.0625(1.25x)、讀取花 $0.005(0.1x)。損益兩平需要每次寫入約 1.3 個總請求——也就是連單一次快取讀取(共用同一提示詞的 2 個總請求)都省約 32.5%。一個每 3 次請求就輪換系統提示詞的客服機器人(1 寫 + 2 讀)比不快取省約 52%。在 Anthropic 的 usage 回應裡監控 cache_read_input_tokens 對比 cache_creation_input_tokens。如果讀寫比低於 0.5:1(每 2 次寫入不到 1 次讀取),就把快取區塊拿掉。

串流密集、一次性的工作負載。 即時轉錄、一次性程式生成、創作——每個提示詞天生不同。在一串獨特提示詞上加 cache_control 區塊,每個請求多約 20 Token,而且永遠不會命中。OpenAI 的自動快取會默默跳過它們(沒命中、不收費)。但 Anthropic 的明確 cache_control 區塊在首次出現時一定產生寫入成本。在獨特的工作負載上,每個請求都是首次出現——你每次呼叫都付 25% 加價、卻零相抵省錢。

剛好落在最小閾值之下的提示詞。 Anthropic 要求 Opus 4.5+ 與 Haiku 4.5 是 4,096 Token、Sonnet 4.6 是 2,048 Token。OpenAI 要求 1,024 Token。在 Opus 上、帶 cache_control 區塊的 1,500 Token 系統提示詞,和不帶花的一樣多——因為低於 4,096 Token 最小值的關係,供應商默默忽略快取指令。一個 cache_control 區塊多約 20 Token。每月 500 萬次請求、輸入 $5/M,那 20 個浪費的 Token 每月要 $500。加快取控制前,用供應商的 tokenizer 檢查實際 Token 數(不是字元數)。

快速規則。 只有在以下情況才投資明確快取:(a) 你的可快取前綴超過 1,024 Token,(b) 它出現在超過 50% 的請求裡,(c) 你的請求間隔中位數低於供應商 TTL。任何一項不成立,就讓自動快取處理,或完全跳過快取、從成本優化攻略裡挑另一個策略。

快取策略指南

階層。 明確、高頻快取要最大省錢用 Anthropic。高量工作負載要絕對最便宜的快取讀取用 DeepSeek。長 TTL 文件快取(最多 24 小時)用 Google。零投入自動省錢用 OpenAI。

多供應商快取策略。 把靜態內容放在快取經濟最好的供應商(Anthropic,一折)快取。把適合快取的流量導到那家供應商。把獨特請求導到對你的使用情境基本定價最好的供應商。這是進階最佳化——先實作基本快取,路由之後再調。

平台層級快取。 有些聚合平台會在供應商快取之上再疊一層自己的快取。平台在 API 閘道層快取回應——從平台快取提供的相同請求根本不會到達供應商。對查詢模式重複的高量應用,這把省錢翻倍。TokSpan 的提示詞快取文件涵蓋平台層級快取的設定,包括命中分析與逐供應商省錢追蹤。

常見問題

用提示詞快取真的能省多少?

輸入 Token 省 50–90%,看供應商與工作負載。用 Anthropic(一折)加 80% 輸入 Token 被快取:有效輸入成本降約 72%。每月 $1,000 的輸入支出,就是每月 $280——每月省 $720。

我需要改程式嗎?

OpenAI 和 DeepSeek:不用,快取是自動的。Anthropic:要,加 cache_control 區塊(3 行程式)。Google:要,建立 cached content 資源。實作投入和省錢成正比——Anthropic 要最多程式,但給最高折扣。

快取能撐多久?

Anthropic:約 5 分鐘。OpenAI:5–60 分鐘(變動、不保證)。Google:TTL 可設定(幾分鐘到 24 小時,TTL 越長越貴)。DeepSeek:類似 OpenAI。請求間隔低於 5 分鐘的應用,快取自動生效。對更低頻的存取模式,只有 Google 的可設定 TTL 有幫助。

同一供應商的不同模型之間能共用快取嗎?

一般來說不行。快取依模型。從 Opus 切到 Sonnet 會讓快取失效。生產環境固定用特定模型版本,才能最大化命中率。

對話進行到一半快取過期會怎樣?

受影響的 Token 恢復全價——沒有錯誤、沒有中斷,只是那一個請求變貴。使用者體驗不受影響。快取過期是成本事件,不是可靠度事件。低風險、高回報。

提示詞快取用幾乎不用改程式的方式交出最高 90% 的省錢——基礎設施裡少見的免費午餐。但免費午餐向來會被定價進去。隨著快取成為每家供應商的標準,真正的問題是:今天的折扣能不能撐過下一輪定價週期,還是省下的錢會被默默併進更高的基本價、而行銷話術維持不變。

就算折扣視窗關了,問題也不是快取值不值得實作——光六個月一折輸入 Token 的省錢,就足以抵過開啟它的三行程式。在 TokSpan 上設定提示詞快取,趁經濟效益還這麼有利的時候,在每家供應商的內建折扣之上再疊一層平台層級快取。