提示快取

Prompt Caching 允許快取重複使用的 prompt 字首,減少 token 消耗和回應延遲。

工作原理#

當你的請求中包含較長的、重複使用的 system prompt 或上下文資訊時:

  • 首次請求 — 完整處理所有 token,並快取 prompt 字首
  • 後續請求 — 命中快取時,快取部分的 token 不再重複計費
  • 快取過期 — 快取有一定的 TTL(通常 5-10 分鐘),過期後需重新快取

快取支援#

诺玛AI 的模型資源分別由 AWS Bedrock、Azure OpenAI、Google Cloud、阿里雲、火山雲 等模型官方雲廠商提供。雲廠商支援 Prompt Caching 的模型,诺玛AI 同樣支援。

雲廠商

代表模型

快取機制

AWS Bedrock

Claude 系列

原生 Prompt Caching

Azure OpenAI

GPT-4o 系列

自動快取

Google Cloud

Gemini 系列

Context Caching

阿里雲

Qwen 系列

平臺側快取

火山雲

Doubao 系列

平臺側快取

具體模型的快取支援情況以各雲廠商官方

使用方式#

OpenAI 協議

OpenAI 模型的 Prompt Caching 是自動的 — 當檢測到重複的 prompt 字首時自動啟用:

程式碼
# 長 system prompt 會被自動快取
SYSTEM_PROMPT = """你是 诺玛AI 的技術支援助手。
 
以下是你需要了解的產品資訊:
- 诺玛AI 是一個 LLM Gateway,支援 多種主流 大模型
- 支援 OpenAI / Anthropic / Gemini 三大協議
- ...
(省略更多產品知識)
"""
 
# 第一次請求:快取 system prompt
response1 = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": "诺玛AI 支援哪些模型?"}
    ]
)
 
# 第二次請求:命中快取,更快更便宜
response2 = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},  # 快取命中
        {"role": "user", "content": "如何配置開發工具?"}
    ]
)

Anthropic 協議

Anthropic 模型支援顯式的 cache control:

成本節省#

快取命中後,快取部分的 token 按更低價格計費,節省比例因模型而異:

  • Anthropic Claude 系列 — 快取命中可節省約 90% 輸入成本
  • OpenAI GPT 系列 — 快取命中可節省約 50% 輸入成本
  • Google Gemini 系列 — 快取命中可節省約 50-75% 輸入成本

實際節省比例取決於快取命中率和各雲廠商的計費策略,請參考 诺玛AI 控制台的用量統計檢視詳情。

最佳實踐#

  • 將長文本放在前面 — system prompt、知識庫內容等不變的部分放在 messages 開頭
  • 保持字首一致 — 只有完全相同的字首才能命中快取
  • 合理設計 prompt 結構 — 將固定部分和變化部分分離
程式碼
# ✅ 好的設計:固定內容在前,變化內容在後
messages = [
    {"role": "system", "content": LONG_STATIC_PROMPT},   # 可快取
    {"role": "user", "content": dynamic_question}          # 變化部分
]
 
# ❌ 不好的設計:變化內容穿插在固定內容中
messages = [
    {"role": "system", "content": f"Today is {date}. {LONG_PROMPT}"}  # 每天不同,無法快取
]

快取命中可以在 API 回應的 `usage` 欄位中檢視,也可以在 诺玛AI 控制台的用量統計中檢視快取命中率。

最後更新於 2026 年 6 月 23 日