調用大模型時,不同推理請求可能出現輸入內容的重疊(例如多輪對話或對同一本書的多次提問)。上下文緩衝(Context Cache)技術可以緩衝這些請求的公用首碼,減少推理時的重複計算。這能提升響應速度,並在不影響回複效果的前提下降低您的使用成本。
為滿足不同情境的需求,上下文緩衝提供兩種工作模式,可以根據對便捷性、確定性及成本的需求進行選擇:
與隱式緩衝相比,顯式緩衝需要顯式建立並承擔相應開銷,但能實現更高的快取命中率和更低的訪問延遲。
在 messages 中加入
系統將建立首個緩衝塊,記為 A 緩衝塊。
2. 發起第二個請求:發送以下結構的請求:
以下樣本展示了在 OpenAI 相容、DashScope 和 Anthropic 相容協議中,緩衝塊的建立與命中機制。
類比的代碼倉庫內容通過添加
在複雜情境中,提示詞通常由多個重用頻率不同的部分組成。使用多個快取標籤可實現精細控制。
例如,智能客服的提示詞通常包括:
顯式緩衝僅影響輸入 Token 的計費方式。規則如下:
僅
此結構同樣適用於
由於工具定義會被序列化為 JSON 字串參與緩衝計算,請確保每次請求的工具定義完全一致,以避免緩衝失效。具體需注意:
在並行工具調用情境下,模型會一次返回多個
合并後(合并傳,推薦)
將所有工具結果合并為一條訊息 + 多個
在訊息數組的其他穩定位置(如系統訊息末尾)可設定額外的
向支援隱式緩衝的模型發送請求時,該功能會自動開啟。系統的工作方式如下:
隱式緩衝的命中邏輯是判斷不同請求的首碼是否存在重複內容。為提高命中機率,請將重複內容置於提示詞開頭,差異內容置於末尾。
開啟隱式緩衝模式無需額外付費。
當請求命中緩衝時,命中的輸入 Token 按
可從返回結果的
如果您的不同請求有著相同的首碼資訊,上下文緩衝可以有效提升這些請求的推理速度,降低推理成本與首包延遲。以下是幾個典型的應用情境:
之後請求的訊息數組
雖然提問的問題不同,但都基於同一篇文章。相同的系統提示和文章內容構成了大量重複的首碼資訊,有較大機率命中緩衝。
2. 代碼自動補全
在代碼自動補全情境,大模型會結合上下文中存在的代碼進行代碼自動補全。隨著使用者的持續編碼,代碼的首碼部分會保持不變。上下文緩衝可以緩衝之前的代碼,提升補全速度。
3. 多輪對話
實現多輪對話需要將每一輪的對話資訊添加到 messages 數組中,因此每輪對話的請求都會存在與前輪對話首碼相同的情況,有較高機率命中緩衝。
第一輪對話的訊息數組
第二輪對話的訊息數組
隨著對話輪數的增加,緩衝帶來的推理速度優勢與成本優勢會更明顯。
4. 角色扮演或 Few Shot
在角色扮演或 Few-shot 學習的情境中,您通常需要在提示詞中加入大量資訊來指引大模型的輸出格式,這樣不同的請求之間會有大量重複的首碼資訊。
以讓大模型扮演營銷專家為例,System prompt包含有大量文本資訊,以下是兩次請求的訊息樣本:
使用上下文緩衝後,即使使用者頻繁更換詢問的產品類型(如從智能手錶到膝上型電腦),系統也可以在觸發緩衝後快速響應。
5. 視頻理解
在視頻理解情境中,如果對同一個視頻提問多次,將
A:上下文緩衝的有效期間取決於緩衝類型:
A:無法關閉。隱式緩衝對所有適用模型請求開啟的前提是對回複效果沒有影響,且在命中緩衝時降低使用成本,提升響應速度。
A:有以下可能原因:
A:是的,每次命中都會將該緩衝塊的有效期間重設為5分鐘。
A:不會。無論是隱式緩衝還是顯式緩衝,資料都在帳號層級隔離,不會共用。
A:不會。快取資料存在模型間隔離,不會共用。
A:為了確保模型輸出效果,後端服務會在使用者提供的提示詞之後追加少量 Token(通常在10以內),這些 Token 在
A:可通過以下方式擷取指定時間段內的快取命中資料:
- 顯式緩衝:需要主動開啟的緩衝模式。需要主動為指定內容建立緩衝,以在有效期間(5分鐘)內實現確定性命中。除了輸入 Token 計費,用於建立緩衝的 Token 通常按輸入 Token 標準單價的 125% 計費,後續命中通常僅需支付 10% 的費用,具體價格見如何計費。
- 隱式緩衝:此為自動模式,無需額外配置,且無法關閉,適合追求便捷的通用情境。系統會自動識別請求內容的公用首碼並進行緩衝,但緩衝命中率不確定。對命中緩衝的部分,通常按輸入 Token 標準單價的 20% 計費,具體價格見如何計費。
專案 | 顯式緩衝 | 隱式緩衝 |
|---|---|---|
是否影響回複效果 | 不影響 | 不影響 |
用於建立緩衝Token計費 | 通常為輸入 Token 單價的125% | 輸入 Token 單價的100% |
命中緩衝的輸入 Token 計費 | 通常為輸入 Token 單價的10%(詳見計費說明) | 通常為輸入 Token 單價的20%(詳見計費說明) |
緩衝最少 Token 數 | 1024 | 256 |
緩衝有效期間 | 5分鐘(命中後重設) | 不確定,系統會定期清理長期未使用的快取資料 |
顯式緩衝、隱式緩衝兩者互斥,單個請求只能應用其中一種模式。
預置吞吐(PTU)部署同樣支援上下文緩衝。命中緩衝時,PTU 額度消耗按緩衝折扣係數折算。詳見預置吞吐長輸入與緩衝。
本文內容適用 OpenAI Chat Completions 、 DashScope 與 Anthropic 相容介面。使用 Responses API 可通過 Session 緩衝降低推理延遲與成本,詳情參考Session 緩衝。
顯式緩衝
與隱式緩衝相比,顯式緩衝需要顯式建立並承擔相應開銷,但能實現更高的快取命中率和更低的訪問延遲。
使用方式
在 messages 中加入"cache_control": {"type": "ephemeral"}標記,系統將以每個cache_control標記位置為終點,向前回溯最多 20 個 content 塊,嘗試命中緩衝。
單次請求最多支援加入4 個快取標籤。
-
未命中緩衝
系統將從messages數組開頭到
cache_control標記之間的內容建立為新的緩衝塊,有效期間為 5 分鐘。緩衝建立發生在模型響應之後,建議在建立請求完成後再嘗試命中該緩衝。
緩衝塊的內容最少為 1024 Token。
- 命中緩衝 選取最長的匹配首碼作為命中的緩衝塊,並將該緩衝塊的有效期間重設為5分鐘。
- 發起第一個請求:發送包含超 1024 Token 文本 A 的系統訊息,並加入快取標籤:
- 若“其他message”不超過 20 條,則命中 A 緩衝塊,並將其有效期間重設為 5 分鐘;同時,系統會基於 A、其他message和 B 建立一個新的緩衝塊。
- 若“其他message”超過 20 條,則無法命中 A 緩衝塊,系統仍會基於完整上下文(A + 其他message + B)建立新緩衝塊。
支援的模型
- 新加坡
- 美國(維吉尼亞)
- 華北2(北京)
- 德國(法蘭克福)
- 中國香港
- 日本(東京)
以下模型均為國際部署範圍。千問 Max:qwen3.8-max、qwen3.7-max、qwen3.7-max-2026-05-20、qwen3.7-max-2026-06-08、qwen3.6-max-preview、qwen3-max千問開源:qwen3.8-2.4t-a95b、qwen3.8-27b千問 Plus:qwen3.7-plus、qwen3.7-plus-2026-05-26、qwen3.6-plus、qwen3.5-plus、qwen3.5-plus-2026-04-20、qwen-plus千問 Flash:qwen3.8-flash、qwen3.7-flash、qwen3.7-flash-2026-07-15、qwen3.6-flash、qwen3.5-flash、qwen-flash千問 Coder:qwen3-coder-plus、qwen3-coder-flash千問 VL:qwen3-vl-plus、qwen3-vl-flashDeepSeek:deepseek-v3.2Kimi:kimi-k2.7-code
快速開始
以下樣本展示了在 OpenAI 相容、DashScope 和 Anthropic 相容協議中,緩衝塊的建立與命中機制。
- OpenAI 相容
- DashScope
- Anthropic 相容
cache_control標記啟用顯式緩衝。後續針對該代碼倉庫的提問請求,系統可複用該緩衝塊,無需重新計算,可獲得比建立緩衝前更快的響應與更低的成本。
使用多個快取標籤實現精細控制
在複雜情境中,提示詞通常由多個重用頻率不同的部分組成。使用多個快取標籤可實現精細控制。
例如,智能客服的提示詞通常包括:
- 系統人設:高度穩定,幾乎不變。
- 外部知識:半穩定,通過知識庫檢索或工具查詢獲得,可能在連續對話中保持不變。
- 對話歷史:動態增長。
- 當前問題:每次不同。
如何計費
顯式緩衝僅影響輸入 Token 的計費方式。規則如下:
-
建立緩衝:新建立的緩衝內容按標準輸入單價的 125% 計費。若新請求的緩衝內容包含已有緩衝作為首碼,則僅對新增部分計費(即新緩衝 Token 數減去已有緩衝 Token 數)。
例如:若已有 1200 Token 的緩衝 A,新請求需緩衝 1500 Token 的內容 AB,則前 1200 Token 按快取命中計費(標準單價的 10%),新增的 300 Token 按建立緩衝計費(標準單價的 125%)。
建立緩衝所用的 Token數通過
cache_creation_input_tokens參數查看。 -
命中緩衝:按標準輸入單價的 10% 計費。
命中緩衝的 Token數通過
cached_tokens參數查看。 - 其他 Token:未命中且未建立緩衝的 Token 按原價計費。
- 例外:qwen3.8-max、qwen3.8-flash、qwen3.8-2.4t-a95b 的顯式快取命中價格不是標準輸入單價的 10%,具體價格請參見百鍊控制台(緩衝建立價格仍為標準單價的 125%)。
可緩衝內容
僅 messages 數組中的以下訊息類型支援添加快取標籤:
-
系統訊息(System Message)
若請求包含
tools參數(Function Calling 情境),工具定義會作為系統訊息的一部分參與緩衝計算。工具定義不支援獨立緩衝,在工具定義中添加快取標籤會被忽略,快取標籤只能添加在 messages 的 content 中。 -
使用者訊息(User Message)
使用
qwen3-vl-plus模型建立緩衝時,cache_control標記可放置在多模態內容或文本之後,其位置不影響緩衝整個使用者訊息的效果。 - 助手訊息(Assistant Message)
- 工具訊息(Tool Message,即工具執行後的結果)
content 欄位改為數組形式,並添加 cache_control 欄位:
messages 數組中的其他訊息類型。
緩衝限制
- 最小可緩衝提示詞長度為 1024Token。
-
緩衝採用從後向前的首碼匹配策略,系統會自動檢查最近的 20 個 content 塊。若待匹配內容與帶有
cache_control標記的訊息之間間隔超過 20 個 content 塊,則無法命中緩衝。 -
僅支援將
type設定為ephemeral,有效期間為 5 分鐘。 -
單次請求最多可添加 4 個快取標籤。
若快取標籤個數大於4,則最後四個快取標籤生效。
提高 Function Calling 快取命中率
由於工具定義會被序列化為 JSON 字串參與緩衝計算,請確保每次請求的工具定義完全一致,以避免緩衝失效。具體需注意:
- 工具列表順序一致:tools 數組中各工具的排列順序需保持一致;
- 欄位順序一致:同一個 tool 的 JSON 欄位順序需保持一致;
- 欄位結構一致:不要遺漏或新增欄位,即使該欄位為空白或可選。
並行工具調用情境下的訊息結構最佳化
在並行工具調用情境下,模型會一次返回多個 tool_calls,需逐一執行這些工具並將結果回傳。如果將每個工具結果作為獨立的 tool 訊息傳入,多條連續同角色訊息會在訊息數組中各自佔據一個 content 塊位置。當待匹配內容(如系統訊息上的快取標籤)與最後一條 tool 訊息之間的 content 塊數量超過 20,緩衝將無法命中。
最佳化方案:在發送請求前,將連續同角色的 tool 訊息預先合并為一條訊息 + 多個 content 塊,減少訊息數組中的塊層級,降低超出 20 塊回溯視窗的風險。
合并前(分開傳,不推薦)
每個工具結果單獨一條 tool 訊息,多條訊息分別佔據獨立的 content 塊位置:
content 塊,並在最後一個 content 塊添加 cache_control 標記:
cache_control 標記,單次請求最多支援 4 個標記,合理分布可進一步提升快取命中率。
使用樣本
針對長文本的不同提問
針對長文本的不同提問
Function Calling 時緩衝工具列表
Function Calling 時緩衝工具列表
在使用 Function Calling 情境下緩衝系統訊息時,運行代碼得到類似如下輸出:
tools 參數會作為系統訊息的一部分參與緩衝。需確保每次請求的工具定義完全一致(包括工具順序、欄位順序、欄位結構),並在 messages 的最後一個 content 上添加 cache_control 標記。以下為完整流程:第一次請求建立緩衝,第二次請求命中緩衝。持續多輪對話
持續多輪對話
在日常聊天的多輪對話情境,可將每一次請求的 messages 數組中最後一個 content 添加快取標籤。從第二輪對話開始,每次請求都將命中並重新整理前一輪對話建立的緩衝塊,且建立新的緩衝塊。運行以上代碼,輸入問題與大模型溝通,每次提問都會命中前一輪建立的緩衝塊。
隱式緩衝
支援的模型
- 新加坡
- 華北2(北京)
- 美國(維吉尼亞)
- 德國(法蘭克福)
- 中國香港
- 日本(東京)
以下模型均為國際部署範圍。
-
文本產生模型
- 千問 Max:qwen3.8-max、qwen3.7-max、qwen3.7-max-2026-05-20、qwen3.7-max-2026-06-08、qwen3-max、qwen3-max-preview、qwen-max
- 千問 Plus:qwen3.7-plus、qwen3.7-plus-2026-05-26、qwen-plus
- 千問 Flash:qwen3.8-flash、qwen3.7-flash、qwen3.7-flash-2026-07-15、qwen-flash
- 千問 Turbo:qwen-turbo
- 千問 Coder:qwen3-coder-plus、qwen3-coder-flash
- 千問開源:qwen3.8-2.4t-a95b、qwen3.8-27b
- DeepSeek:deepseek-v4-pro、deepseek-v4-flash、deepseek-v3.2
- GLM(阿里雲百鍊部署):glm-5.1
- Kimi(阿里雲百鍊部署):kimi-k3、kimi-k2.7-code
- GLM(智譜部署):ZHIPU/GLM-5.3、ZHIPU/GLM-5.2
-
視覺理解模型
- 千問 VL:qwen3-vl-plus、qwen3-vl-flash、qwen-vl-max、qwen-vl-plus
工作方式
向支援隱式緩衝的模型發送請求時,該功能會自動開啟。系統的工作方式如下:
-
尋找:收到請求後,系統基於首碼匹配原則,檢查緩衝中是否存在請求中
messages數組內容的公用首碼。 -
判斷:
- 若命中緩衝,系統直接使用緩衝結果進行後續部分的推理。
- 若未命中,系統按常規處理請求,並將本次提示詞的首碼存入緩衝,以備後續請求使用。
系統會定期清理長期未使用的快取資料。上下文快取命中機率並非100%,即使請求上下文完全一致,仍可能未命中,具體命中機率由系統判定。
Qwen3.7系列模型觸發隱式緩衝的最少 Token 數約為2000,其他模型為256。
提升命中緩衝的機率
隱式緩衝的命中邏輯是判斷不同請求的首碼是否存在重複內容。為提高命中機率,請將重複內容置於提示詞開頭,差異內容置於末尾。
- 文本模型:假設系統已緩衝"ABCD",則請求"ABE"可能命中"AB"部分,而請求"BCD"則無法命中。
-
視覺理解模型:
- 對同一映像或視頻進行多次提問:將映像或視頻放在文本資訊前會提高命中機率。
- 對不同映像或視頻提問同一問題:將文本資訊放在映像或視頻前面會提高命中機率。
如何計費
開啟隱式緩衝模式無需額外付費。
當請求命中緩衝時,命中的輸入 Token 按 cached_token 計費,折扣比例因模型而有差異;未被命中的輸入 Token 按標準 input_token 計費。輸出 Token 仍按原價計費。
- 除 deepseek-v4-pro、qwen3.8-max、qwen3.8-2.4t-a95b 外的模型:
cached_token單價為input_token單價的 20% - deepseek-v4-pro:
cached_token單價不是input_token單價的 20%,具體價格請參見百鍊控制台 - qwen3.8-max、qwen3.8-flash、qwen3.8-2.4t-a95b:
cached_token單價不是input_token單價的 20%,具體價格請參見百鍊控制台 - GLM(阿里雲百鍊部署):glm-5.2、glm-5.2-fast-preview 為 25%,其餘glm系列模型均為 20%
- 未命中 Token (5,000):按 100% 單價計費
- 命中 Token (5,000):按 20% 單價計費

cached_tokens屬性擷取命中緩衝的 Token 數。
OpenAI相容-Batch(檔案輸入)方式調用無法享受緩衝折扣。
命中緩衝的案例
- 文本產生模型
- 視覺理解模型
- OpenAI相容
- DashScope
- Anthropic 相容
當您使用 OpenAI 相容的方式調用模型並觸發了隱式緩衝後,可以得到如下的返回結果,在
usage.prompt_tokens_details.cached_tokens可以查看命中緩衝的 Token 數(該數值為usage.prompt_tokens的一部分)。典型情境
如果您的不同請求有著相同的首碼資訊,上下文緩衝可以有效提升這些請求的推理速度,降低推理成本與首包延遲。以下是幾個典型的應用情境:
- 基於長文本的問答 適用於需要針對固定的長文本(如小說、教材、法律檔案等)發送多次請求的業務情境。 第一次請求的訊息數組
video放在text前會提高命中緩衝的機率;如果對不同的視頻提問相同的問題,則將text放在video前面,會提高命中緩衝的機率。以下是對同一個視頻請求兩次的訊息樣本:
常見問題
Q:上下文緩衝的有效期間是多久(可以保留多長時間)?
A:上下文緩衝的有效期間取決於緩衝類型:
- 顯式緩衝:有效期間為 5 分鐘,且每次命中後會重新計時 5 分鐘;若超過 5 分鐘未被命中,系統將自動清理該緩衝塊。
- 隱式緩衝:由系統自動管理,無固定有效期間,系統會定期清理長期未使用的快取資料。
此處的有效期間指通過 API 呼叫時上下文緩衝的生命週期,與控制台「模型體驗 / 模型調試」頁面中展示的歷史對話記錄不是同一功能。
Q:如何關閉隱式緩衝?
A:無法關閉。隱式緩衝對所有適用模型請求開啟的前提是對回複效果沒有影響,且在命中緩衝時降低使用成本,提升響應速度。
Q:為什麼建立顯式緩衝後沒有命中?
A:有以下可能原因:
- 建立後 5 分鐘內未被命中,超過有效期間系統將清理該緩衝塊;
- 最後一個
content與已存在的緩衝塊的間隔大於20個content塊時,不會命中緩衝,建議建立新的緩衝塊。
Q:顯式快取命中後,是否會重設有效期間?
A:是的,每次命中都會將該緩衝塊的有效期間重設為5分鐘。
Q:不同帳號之間的顯式緩衝是否會共用?
A:不會。無論是隱式緩衝還是顯式緩衝,資料都在帳號層級隔離,不會共用。
Q:相同帳號使用不同模型顯式緩衝是否會共用?
A:不會。快取資料存在模型間隔離,不會共用。
Q:為什麼usage的input_tokens不等於cache_creation_input_tokens和cached_tokens的總和?
A:為了確保模型輸出效果,後端服務會在使用者提供的提示詞之後追加少量 Token(通常在10以內),這些 Token 在 cache_control 標記之後,因此不會被計入緩衝的建立或讀取,但會計入總的 input_tokens。