本文介紹顯式緩衝的使用方法和最佳實務。顯式緩衝通過在請求中添加快取標籤,確保相同輸入內容確定性命中緩衝,從而顯著降低成本和延遲。
什麼時候使用顯式緩衝
- 需要穩定命中緩衝的情境:當業務對快取命中有明確要求,需要確保指定內容被穩定複用時,建議使用顯式緩衝。顯式緩衝可做到 100% 確定性命中,不受後端資源調度影響。
- 高頻複用相同 Prompt 的情境:當相同或高度一致的 Prompt 會被反覆提交時,顯式緩衝可以顯著降低調用成本。首次寫入緩衝僅產生標準價格 25% 的額外開銷,後續命中可節省 90% 成本;只要發生至少一次命中,總體成本即低於不使用緩衝的方案。
- 工業級 Agent 的長上下文管理情境:在 Agent 應用中,常見的壓縮、recap、system reminder 等機制會導致上下文持續變化。顯式緩衝可對關鍵上下文片段進行標記和固定複用,確保這些內容在複雜上下文演化過程中仍能穩定命中緩衝。
常用 Agent 和 Coding 工具
以下 Agent 和 Coding 工具可通過 Anthropic 協議接入百鍊,原生支援顯式緩衝。只需按對應文檔完成配置,工具在運行過程中會自動使用顯式緩衝最佳化上下文管理。
以下樣本以新加坡端點為例,其他地區請替換為對應的地區端點。
- Claude Code
- Open Code
- OpenClaw
- Hermes
Claude Code 自 v2.x 起預設在請求中攜帶 確保接入端點為 Anthropic 協議:可選:關閉顯式緩衝如需關閉(一般無須關閉):支援按模型粒度關閉:
cache_control 標記(system、env、最近 user message 三處),接入百鍊 Anthropic 相容端點後無需額外配置。接入配置建立 ~/.claude/settings.json(Windows:C:\Users\<使用者名稱>\.claude\settings.json),寫入對應套餐的配置。或通過環境變數接入:- Token Plan (Team):
https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic - Coding Plan:
https://coding-intl.dashscope.aliyuncs.com/apps/anthropic - 隨用隨付:
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic,調用時請將WorkspaceId替換為真實的Workspace ID。
DISABLE_PROMPT_CACHING_HAIKU、DISABLE_PROMPT_CACHING_SONNET、DISABLE_PROMPT_CACHING_OPUS。API 接入
核心要點
- 在需要緩衝的訊息上添加
"cache_control": {"type": "ephemeral"},從 messages 數組開頭到該標記位置之間的所有內容將被建立為緩衝塊。 - 緩衝內容最少需要 1024 Token。
- 單次請求最多支援 4 個快取標籤。
- 緩衝有效期間為 5 分鐘,每次命中自動續期。
- Tools 定義是 System Prompt 的一部分參與緩衝計算,如果 Tools 改變則無法命中緩衝。
快速開始
以下樣本展示了顯式緩衝的基本使用方式:第一次請求建立緩衝,第二次請求命中緩衝。
確認緩衝狀態
請求完成後,可以通過響應中的 usage 欄位確認緩衝狀態:
cache_creation_input_tokens:本次請求新建立緩衝的 Token 數。該值大於 0 說明建立了新緩衝。cached_tokens(OpenAI 相容)或cache_read_input_tokens(Anthropic 相容):本次請求命中緩衝的 Token 數。該值大於 0 說明成功命中緩衝。
不同情境下的最佳實務
多輪對話情境
情境特點:
- 使用者與模型進行多輪互動,每輪請求攜帶完整對話歷史
- 典型應用:客服對話、知識問答、代碼輔助等
cache_control 標記。每輪對話都會命中上一輪建立的緩衝(對話歷史部分),同時為下一輪建立包含當前完整對話的新緩衝。
樣本:
複雜工業級 Agent 情境
情境特點:
- 超長多輪對話,包含:長 System Prompt + skills/tools 說明 + project 上下文 + 使用者對話 / 工具調用
- 不同部分的變化頻率不同
- 典型應用:AI 編程助手(如 Claude Code、OpenClaw)、RAG 問答系統等
- System Prompt 加一個(幾乎不變)
- skills/tools 說明加一個(可能出現組合變化)
- project 上下文加一個(可能切換/壓縮)
- 使用者對話 / 工具調用加一個(每輪增長)
- 使用者繼續追問同一商品:系統人設 + 知識庫均未變化,命中快取標籤 2 處的緩衝(最長首碼匹配),節約最大。
- 對話輪次增加:前面的內容(系統人設 + 知識庫 + 歷史對話)命中上一輪的緩衝,僅新增部分需建立新緩衝。
建議將內容按穩定性從高到低排列:將變化最少的內容放在最前面(如系統人設),變化最頻繁的內容放在最後面(如目前的交談),以最大化快取命中率。
任務完成型情境(批量處理)
情境特點:
- 單輪對話,不需要上下文記憶
- 不變的長 System Prompt(任務說明)+ 變化的使用者輸入(待處理資料)
- 典型應用:文本分類、意圖識別、資料提取、內容審核等
cache_control 標記。後續每次請求只要 System Prompt 不變,即可命中緩衝。
樣本:
Function Calling 時緩衝工具列表
情境特點:
- 使用 Function Calling 功能,工具定義列表較長
- 工具定義在多次請求間保持不變
tools 參數的內容會作為 System Prompt 的一部分參與緩衝。只需確保每次請求的工具定義完全一致(工具順序、欄位順序、欄位結構),並在 messages 的 content 上添加 cache_control 標記即可。
注意事項
- content 格式要求:添加
cache_control時,必須將 content 欄位改為數組形式。字串形式的 content 不支援添加快取標籤。 - 快取標籤粒度:Qwen3.5 及之後的模型僅支援訊息層級的緩衝截斷點。在同一條 message 的 content 數組內放置多個
cache_control不會產生多個截斷點——系統僅在該 message 的最後一個 marker 位置儲存緩衝,無法在中間 block 處截斷命中。此外,多條 system message 會被內部合并為一個整體,也無法在中間截斷。如需多個獨立截斷點,應將帶cache_control的內容分布在不同角色的 message 上(如 system 放一個,user 放一個)。Qwen3.5 之前的模型支援 content 層級(訊息內部)的緩衝截斷。 - 與隱式緩衝互斥:同一請求只能使用一種緩衝模式。若請求中包含
cache_control標記則使用顯式緩衝,否則系統自動使用隱式緩衝。