當多個請求使用相同的提示詞前綴時,提示詞快取可以重用先前的運算結果。這帶來三項主要優點:
節省運算: 避免重新計算模型已處理過的提示詞前綴。
降低輸入 Token 費用: 重用的 Token 按模型較低的快取輸入費率計費,最高可省下 90%。
加快速度: 縮短開始回應前處理輸入所需的時間。
支援提示詞快取的 OpenAI 模型預設會啟用這項功能。使用提示詞快取儀表板 監控快取讀取命中率,並使用提示詞快取診斷工具 診斷快取未命中的原因,提高快取重用率。
Agents API 的模型呼叫採用與 Responses API 相同的提示詞快取行為。在工作階段內重用上下文可保留共用的提示詞前綴,但維持工作階段並不保證快取命中。如需瞭解工作階段的用量欄位及子代理程式的用量核算方式,請參閱可觀測性與用量 。
提示詞快取的定價依模型而異。請參閱 API 定價 ,瞭解目前快取輸入與快取寫入的費率。快取寫入並非額外收費:輸入 Token 會依未快取輸入、快取輸入或快取寫入其中一種費率計費。
模型處理輸入 Token 時,必須計算稱為鍵值(KV)狀態的中間狀態。這些狀態讓模型在處理新輸入及生成輸出 Token 時,能夠參照先前的 Token。
提示詞快取會保存可重用 前綴 的狀態;前綴是指提示詞開頭未變更的 Token。當後續請求具有相同的前綴,並找到相符的快取項目時,模型就能重用已儲存的狀態,無須再次處理那些 Token。不過,模型仍需處理所有新輸入,才能生成新的回應。
提示詞快取儲存的是鍵值(KV)張量,而非 Token 本身。
請 ChatGPT 提供更深入的說明
步驟 1
tiny chips
↓
↓
生成 power 步驟 2
tiny chips power
↓
↓
生成 big 步驟 3
tiny chips power big
↓
↓
生成 ideas
OpenAI 會快取模型組合後的完整上下文,包括 OpenAI 提供的指示、開發人員訊息 、工具定義 ,以及含有文字 、圖像 、文件 和支援的音訊 的對話歷史紀錄 。
若要重用快取,組合後的整個前綴都必須相符。如果中斷點之前的內容或相關設定有所變更,從變更位置起,前綴就無法再與現有快取項目相符。
上下文歷史紀錄
對話訊息、工具呼叫與結果、文字及多模態內容
哪些設定會影響已快取的前綴? 變更請求不一定會捨棄現有的快取項目。關鍵在於後續請求是否具有相同的前綴,以及能否找到符合條件且相符的中斷點。主要應檢查下列設定:
快取中斷點 標記提示詞前綴的結尾,OpenAI 可將該前綴存入快取,供後續請求重用。第一個請求會將符合條件的前綴寫入快取,後續請求則會尋找可用且相符的最長快取前綴,從後往前逐一檢查符合條件的中斷點,直到找到相符的前綴。
提示詞前綴必須達到模型的 可快取最小 Token 長度 ,才能存入快取。OpenAI 提供的隱藏系統內容中的 Token 不計入此下限。GPT-5.6 及後續模型的可快取最小提示詞長度為 1,024 個 Token;較早模型的下限則依請求設定而異。詳情請參閱模型比較 。
達到可快取最小 Token 長度後,您可以明確指定快取中斷點的位置,或讓 OpenAI 以隱含方式選擇位置。可用選項依模型而異。
GPT-5.6 及後續模型 對 GPT-5.6 及後續模型而言,快取寫入費率為標準未快取輸入 Token 費率的 1.25 倍。如果您確定前綴會被重用,這筆費用就值得支付,因為後續讀取的費率僅為標準費率的 0.1 倍。將前綴寫入一次並完整重用一次,成本為一般輸入成本的 1.35 倍;若不使用快取而處理兩次,成本則為 2 倍。每多讀取一次快取,就能省下更多費用:以十個請求來說,一次寫入加上九次完整讀取的成本為 2.15 倍,不使用快取則為 10 倍。
同時支援隱含快取與明確快取;明確快取可讓您更精確地控制哪些上下文會寫入快取。
明確模式: 您可依據上下文管理需求,選擇快取中斷點的位置。
將 prompt_cache_options.mode 設為 explicit,即可僅使用開發人員選定的中斷點。接著,在輸入訊息中受支援的內容區塊加入 prompt_cache_breakpoint: { "mode": "explicit" },以標記各個所需的中斷點。
若未設定任何明確中斷點,請求就不會使用提示詞快取,也不會寫入快取。
僅使用明確中斷點的模式可讓您選擇快取寫入的結束位置。最後一個選定中斷點之後的內容,會按未快取輸入 Token 費率處理,不收取快取寫入費用。如此便可避免將會變動且不太可能重用的內容寫入快取。
多個明確中斷點可保存變更頻率不同的前綴。每個請求最多可執行四次快取寫入。
additional_tools 輸入項目目前不接受 prompt_cache_breakpoint。
頂層 instructions 不能包含明確中斷點。若要標記可重用的開發人員指示,請將指示放在開發人員訊息內的 input_text 區塊中。
隱含模式: OpenAI 會自動選擇適合大多數使用案例的中斷點位置,無須額外設定。
當 prompt_cache_options.mode 為 implicit 時,OpenAI 會在最新一則符合條件的訊息結尾設定中斷點。符合條件的訊息包括:
使用者訊息
一組連續工具回應中的最後一則工具回應
開頭一組連續開發人員訊息中的最後一則開發人員訊息。
你可以新增顯式斷點,而不必關閉隱式斷點;隱式斷點會占用四個快取寫入名額中的一個,因此還有三個名額可供顯式快取寫入使用。
較早的模型 僅支援隱式快取。OpenAI 從隱藏的 OpenAI 系統訊息起點開始計算,以依模型而定的間隔 設定隱式斷點。只有達到或超過最短可快取長度(從隱藏上下文的結尾開始計算)的斷點才符合資格。
回報的 cached_tokens 計算方式為:從最後一個相符斷點對應的 Token 數中減去隱藏的系統 Token 數,再向下取整至最接近的 128 倍數。
OpenAI 只會依前綴由長到短的順序,逐一檢查傳入請求中的 快取查詢邊界 (說明如下),尋找機器上已快取且可用的相符前綴。
對於 GPT-5.6 及更新的模型,傳入請求中的快取查詢邊界包括:
僅顯式模式: 最前面的 2 個和最近的 50 個顯式斷點。
隱式模式: 最前面的 2 個和最近的 50 個顯式斷點、隱式斷點、最多 20 個較早且符合資格的訊息結尾,以及開頭連續一組開發人員訊息的結束位置。這讓隱式模式即使未在較早的訊息結尾設定顯式斷點,也能重用以該處為結尾的前綴。
隱式斷點會設在最新且符合資格的使用者訊息處。
隱藏系統 工具 開發人員 上下文歷程 後續訊息 已快取的輸入 未快取的輸入
請求參數與回應用量 請求 1 · Responses API 請求 import OpenAI from "openai" ;
const client = new OpenAI ();
const response = await client.responses. create ({
"model" : "gpt-5.6" ,
"reasoning" : {
"effort" : "medium" ,
"context" : "all_turns"
},
"text" : { "verbosity" : "medium" },
"input" : [
{
"role" : "developer" ,
"content" : [
{
"type" : "input_text" ,
"text" : "8,000 tokens"
}
]
},
{
"role" : "user" ,
"content" : [
{
"type" : "input_text" ,
"text" : "2,000 tokens"
}
]
}
],
"tools" : [
"Tool definitions, 2,000 tokens"
],
"prompt_cache_key" : "shared-workflow-v1" ,
"prompt_cache_options" : {
"mode" : "implicit" ,
"ttl" : "30m"
}
}); 請求 2 · Responses API 請求 import OpenAI from "openai" ;
const client = new OpenAI ();
const response = await client.responses. create ({
"model" : "gpt-5.6" ,
"reasoning" : {
"effort" : "medium" ,
"context" : "all_turns"
},
"text" : { "verbosity" : "medium" },
"input" : [
{
"role" : "developer" ,
"content" : [
{
"type" : "input_text" ,
"text" : "8,000 tokens"
}
]
},
{
"role" : "user" ,
"content" : [
{
"type" : "input_text" ,
"text" : "2,000 tokens"
}
]
},
{
"role" : "user" ,
"content" : [
{
"type" : "input_text" ,
"text" : "3,000 tokens"
}
]
}
],
"tools" : [
"Tool definitions, 2,000 tokens"
],
"prompt_cache_key" : "shared-workflow-v1" ,
"prompt_cache_options" : {
"mode" : "implicit" ,
"ttl" : "30m"
}
}); 請求 1 · 回應用量 {
"usage" : {
"input_tokens" : 12000 ,
"input_tokens_details" : {
"cached_tokens" : 0 ,
"cache_write_tokens" : 12000
}
}
} 請求 2 · 回應用量 {
"usage" : {
"input_tokens" : 15000 ,
"input_tokens_details" : {
"cached_tokens" : 12000 ,
"cache_write_tokens" : 3000
}
}
}
快取項目不會永久儲存。後續請求只有在快取項目仍可用時,才能重複使用已快取的前綴。重複使用前綴會重設其存留時間,且不會再次收取快取寫入費用。存留時間與保留設定依模型而異 。
GPT-5.6 及後續模型 使用 prompt_cache_options.ttl 控制快取的最短存留時間。唯一支援的值 30m 也是預設值。已快取的前綴在最近一次寫入或重複使用後的 30 分鐘內仍可重複使用,不過 OpenAI 可能會保留更長時間。
較早的模型 使用 prompt_cache_retention,支援的值依模型而異:
in_memory:項目在未使用的情況下,通常仍可使用約 5 至 10 分鐘,最長可達一小時。
24h:延長保留通常會讓項目維持可用約 30 分鐘,最長可保留 24 小時。
預設保留設定與零資料保留
提示詞快取可能會將加密的鍵/值張量作為應用程式狀態,儲存在 GPU 本機儲存空間中。對於同時支援 in_memory 和 24h 的模型,預設值取決於您組織的資料保留政策:
未啟用 零資料保留的組織,預設值為 24h。
已啟用 零資料保留的組織,預設值為 in_memory。
選擇設定值前,請先確認您的模型與組織可用的保留政策。
快取狀態儲存在個別機器上;當流量超過每分鐘 15 個請求時,可能會觸發溢位路由,將請求轉送至其他機器。請求只有送達持有相符且尚未過期快取項目的機器,才能重複使用已快取的前綴。因此,將請求路由至正確的機器,對於重複使用快取相當重要。
OpenAI 會自動處理路由。在同一組織與處理區域內,特定模型的路由取決於:
機器目前的負載與可用容量。
隱藏的 OpenAI 內容之後,起始 Token 的雜湊值;若有工具定義,也會納入其中。用來計算雜湊的 Token 數量依模型而異。
提供的 prompt_cache_key ,可讓不同請求群組分別重用各自的快取,並有助於最佳化 GPT-5.6 之前模型的快取路由。
提示詞快取鍵 使用 GPT-5.6 之前的模型時,請為共用可重用前綴的請求使用固定的 prompt_cache_key ,以協助將相關請求路由至同一個快取。對於請求量較大的群組,應以每個鍵所涵蓋的所有前綴合計每分鐘約 15 個請求為目標。流量更高時,請透過固定且具確定性的對應方式,將流量分散至多個鍵。讓相關請求使用相同的 prompt_cache_key,以便重用該鍵的快取。鍵會影響路由,但不會將請求固定至某台機器,也不保證快取命中。
使用 GPT-5.6 及更新版本的模型時,OpenAI 會自動處理快取路由,無須使用鍵來最佳化快取。您可以使用不同的鍵,為應用程式內的客戶或使用者分別核算快取用量與費用。
使用不同的鍵,可讓您更容易向每位客戶或使用者說明其快取 Token 用量與費用。例如,分別使用不同的鍵,有助於防止跨使用者的快取命中探測,也就是藉由提交候選提示詞並觀察快取是否命中,得知相符內容是否曾被快取。請參閱使用鍵分別核算快取用量與費用 。
行為 GPT-5.6 及後續模型 GPT-5.5 和 GPT-5.5 Pro 其他較早的模型 隱式中斷點 位於最新一則符合條件的訊息結尾。 每隔 2,048 個 Token 設置一個。 以固定間隔設置,間隔長度依模型而異。 顯式中斷點 支援 不支援 不支援 prompt_cache_key可選用,用於分別核算快取用量與費用 使用固定的鍵來最佳化快取路由 使用固定的鍵來最佳化快取路由 可快取的最短前綴 1,024 個可見的輸入 Token 依請求設定而異 依請求設定而異 快取 Token 數量回報 精確計算至符合條件的邊界,不含隱藏 Token 排除隱藏 Token,並向下取整至 128 的倍數 排除隱藏 Token,並向下取整至 128 的倍數 快取讀取費用 未快取輸入 Token 費率的 0.1 倍 依模型而定的快取輸入費率 依模型而定的快取輸入費率 快取寫入費用 未快取輸入 Token 費率的 1.25 倍 不另收快取寫入費用 不另收快取寫入費用 快取存留時間控制 prompt_cache_options.ttlprompt_cache_retentionprompt_cache_retention支援的保留設定值 "30m"僅支援 "24h" "in_memory" 或 "24h"* 快取存留時間 最近一次寫入或重複使用後至少 30 分鐘 通常約 30 分鐘,最長可達 24 小時 in_memory 通常在未使用後保留 5 至 10 分鐘,24h 則最長可保留 24 小時
* gpt-5.5、gpt-5.5-pro、gpt-5.4、gpt-5.2、gpt-5.1-codex-max、gpt-5.1、gpt-5.1-codex、gpt-5.1-codex-mini、gpt-5.1-chat-latest、gpt-5、gpt-5-codex 和 gpt-4.1 支援延長保留。
對於 GPT-5.6 之前的模型,可快取的最短輸入長度會隨請求設定而異,包括工具、圖像、輸出結構描述、推理強度及回覆詳細程度。
請 ChatGPT 找出我的請求可快取的最短輸入長度
重點是保留對話記錄 、保持工具定義穩定 ,以及選擇快取的位置。使用 GPT-5.6 及更新版本的模型時,請透過 prompt_cache_options.mode 和 prompt_cache_breakpoint 控制快取中斷點。若您的應用程式需要為客戶分別核算快取用量與費用,也可以選用 prompt_cache_key 。使用 GPT-5.6 之前的模型時,請為共用可重用前綴的請求使用固定的 prompt_cache_key,以最佳化快取路由。
請 ChatGPT 協助最佳化我的提示詞快取
保留對話歷史記錄 在多輪對話應用程式中,重複使用持續累積的對話歷史記錄,比只快取最初的指示更能節省輸入 Token。保留先前的訊息與工具結果,讓後續輪次能重複使用完整的共用前綴。
保持前綴穩定。 將穩定的開發者指示與共用參考資料放在最前面。如果開發者指示或共用資料包含時間戳記、使用者專屬內容或其他動態內容,請將這些內容放在末尾,而非開頭,或移至後續的對話訊息中。
保留對話歷史記錄。 附加新訊息,不要改寫先前的對話輪次。摘要、壓縮 或截斷上下文都可能改變前綴,導致快取重複使用必須重新開始。
在不改寫前綴的情況下變更推理強度。 在 GPT-6 Astra 中,附加一個 configuration_update 輸入項目,即可在回應之間變更推理強度,同時保持請求層級的 reasoning.effort 不變。這樣可保留原始前綴,以便重複使用快取。如需範例與相容性限制,請參閱在對話中途變更推理強度 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 {
"model" : "gpt-5.6" ,
"reasoning" : { "effort" : "low" , "context" : "all_turns" },
"text" : { "verbosity" : "medium" },
"prompt_cache_options" : { "mode" : "explicit" },
"input" : [
{
"role" : "developer" ,
"content" : [
{
"type" : "input_text" ,
"text" : "Stable instructions and shared reference material..." ,
"prompt_cache_breakpoint" : { "mode" : "explicit" }
}
]
},
{
"role" : "developer" ,
"content" : "Dynamic developer instructions, such as user-specific content and timestamps..."
},
{
"role" : "user" ,
"content" : "The user's current question..."
}
]
}
在不改寫前綴的情況下變更推理強度 在支援此功能的 GPT-6 及更新模型中,附加一個 configuration_update 輸入項目,即可在對話過程中變更推理強度 ,同時保留先前已快取的前綴。請保持最上層的 reasoning.effort 為原始值,因為變更此設定可能會改寫隱藏系統指示中的內容。
最新的組態更新會決定後續回應的推理強度。例如,將此項目附加至現有的 input 陣列,即可讓後續請求切換至 high 推理強度:
1
2
3
4 {
"type" : "configuration_update" ,
"reasoning" : { "effort" : "high" }
}
選擇快取模式 在 GPT-5.6 及更新模型中,快取中斷點的位置由兩項控制設定決定:prompt_cache_options.mode 用來選擇隱含快取或僅明確快取,而 prompt_cache_breakpoint 則用來標記你選定的邊界。
自動設定中斷點。 使用隱含快取,在最新一則符合條件的訊息末尾設定中斷點。對於會在現有上下文後附加內容的多輪對話串,這種方式很方便。
依需求選擇中斷點。 在穩定內容的末尾放置明確標記。使用僅明確模式,可避免為持續變動的後綴進行不必要的快取寫入。
中斷點 2 的共用快取前綴
隱藏的系統訊息
工具
開發者訊息 · 穩定前綴
開發者訊息 · 可變後綴 A
使用者訊息
工具呼叫
工具結果
助理訊息
開發者訊息 · 可變後綴 B
新使用者輸入 A
新使用者輸入 B
中斷點 1
中斷點 2
中斷點 1 的共用快取前綴
未重複使用的後綴:無快取寫入費用
新使用者輸入:無快取寫入費用
使用鍵值分開核算快取用量 使用 GPT-5.6 及更新版本的模型時,若您想為應用程式內的客戶、使用者或工作區分別核算快取用量與費用,請使用 prompt_cache_key。這有助於更清楚地說明各群組的快取 Token 用量與費用。此鍵為選用項目,這些模型無須使用它來最佳化快取。
選擇分開核算快取用量的方式。 為每個需要獨立核算快取用量的客戶或使用者指派不同的鍵值。例如,support:customer_123 和 support:customer_456 可讓兩位客戶的快取用量分開核算,即使他們的請求包含相同的前綴也一樣。
保持各群組內的鍵值穩定。 同一位客戶的相關請求應重複使用相同的鍵值。只有在工作階段或對話串需要獨立核算快取用量時,才為其產生專屬鍵值。
一致地套用鍵值。 在客戶的所有請求中使用該客戶的鍵值,以便分開核算快取用量。這也有助於防止客戶之間探測彼此的快取命中情況。
對於 GPT-5.6 之前的模型,prompt_cache_key 對最佳化快取命中率很重要。請為共用可重用前綴的請求使用固定的鍵,以協助將這些請求路由至同一個快取。對於請求量較大的群組,請遵循將流量分散至更多鍵的指引 。
將提示詞快取從較早的模型遷移至 GPT-5.6 及更新版本
保留現有的穩定前綴。
如果使用 prompt_cache_key,請保留現有值,以維持客戶或使用者各自獨立的快取用量核算。
將 prompt_cache_retention 替換為 prompt_cache_options.ttl。
確認可重用前綴符合模型的可快取最短長度 要求。
如果預設斷點涵蓋了會隨請求變動的內容,請在穩定前綴之後加入明確斷點。
當後續內容不值得寫入快取時,請使用 prompt_cache_options.mode: "explicit"。
遷移前後,比較 cached_tokens、cache_write_tokens、延遲與總成本 。
以下範例適用於 GPT-5.6 及更新版本的模型。
單輪 LLM 評判 以單輪 LLM 評判為例:它會檢視已完成的互動,判斷是否有證據顯示使用者在與聊天機器人互動後感到滿意。每個請求都使用相同的評分準則與已標註的少樣本範例,來評估不同的互動。
保留前綴: 將固定的評分準則與範例放在最前面。選用有助於校準評判模型的材料,並刻意將兩者的總長度維持在略高於模型的可快取最短長度 。將待評估的互動放在最後。
快取模式與斷點: 啟用僅明確快取模式,並在固定的評分準則與範例之後設定斷點。待評估的使用者與聊天機器人對話放在該斷點之後,不會寫入快取,避免為不太可能重用的內容支付快取寫入費用。
某個採用這些原則的部署案例回報, Token 快取命中率約為 70% 。這個數字僅用來說明一種可能的結果。實際的快取命中率上限取決於您的上下文與應用程式使用情況。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 {
"model" : "gpt-5.6-sol" ,
"reasoning" : { "effort" : "medium" , "context" : "all_turns" },
"text" : { "verbosity" : "low" },
"prompt_cache_options" : { "mode" : "explicit" },
"input" : [
{
"role" : "developer" ,
"content" : [
{
"type" : "input_text" ,
"text" : "Judge whether the completed interaction provides evidence that the user is satisfied. Return true or false. Full grading rubric and labeled few-shot examples..." ,
"prompt_cache_breakpoint" : { "mode" : "explicit" }
}
]
},
{
"role" : "user" ,
"content" : "Completed interaction to evaluate..."
}
]
}
多輪智慧體 以使用長篇共用開發者指令、且頻繁呼叫工具的多輪智慧體為例。典型使用情況是使用者同時與智慧體進行多個工作階段,並經常為對話串建立分支。
保留前綴 :每一輪都會附加新的訊息、工具呼叫與結果,而不改寫先前的上下文,因此可重用前綴會隨時間增長。
選用的提示詞快取鍵: 此範例使用 agent_123_v1:user_456 為使用者 456 維持獨立的快取用量核算,讓其快取 Token 用量與計費更容易說明。這也有助於防止使用者透過快取命中情況探測其他使用者的內容。該使用者與智慧體的各個工作階段及分支都使用相同的鍵。如果應用程式不需要這種區隔,可以省略此鍵。
隱含快取模式: 啟用隱含快取,讓最新一則符合條件的使用者或工具訊息提供斷點。
明確斷點: 在每個工具結果之後加入斷點,以保留先前可重用的前綴,並提高建立分支時的快取效率。
某個採用這些原則的部署案例回報, Token 快取命中率 >90% 。這個數字僅用來說明一種可能的結果。實際的快取命中率上限取決於您的上下文與應用程式使用情況。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 {
"model" : "gpt-5.6-sol" ,
"reasoning" : { "effort" : "medium" , "context" : "all_turns" },
"text" : { "verbosity" : "medium" },
"prompt_cache_key" : "agent_123_v1:user_456" ,
"prompt_cache_options" : { "mode" : "implicit" },
"tools" : [
{
"type" : "function" ,
"name" : "function_name" ,
"description" : "Function description" ,
"parameters" : { "..." : "..." }
}
],
"input" : [
{
"role" : "developer" ,
"content" : "Stable developer instructions and reference material..."
},
{ "role" : "user" , "content" : "Can you do...?" },
{
"type" : "function_call" ,
"call_id" : "call_123" ,
"name" : "function_name" ,
"arguments" : "..."
},
{
"type" : "function_call_output" ,
"call_id" : "call_123" ,
"output" : [
{
"type" : "input_text" ,
"text" : "Tool result..." ,
"prompt_cache_breakpoint" : { "mode" : "explicit" }
}
]
},
{ "role" : "assistant" , "content" : "Assistant response..." },
{ "role" : "user" , "content" : "Can you also do...?" }
]
}
共用前綴不一定已快取 由於隱式快取的行為有所改變,這種情況在從較早的模型遷移至 GPT-5.6 或更新版本 時尤其常見。如果多個請求共用一段較長的前綴,但後綴不同,僅以隱式快取儲存第一個完整請求,並不會讓其中較短的共用前綴變得可重用。
假設每個請求都先包含一則靜態開發人員訊息,接著是一則動態使用者訊息。這個請求會將包含動態內容在內的整段前綴寫入快取。如果下一個請求改變了動態內容,就無法符合快取中較長的前綴,而靜態內容之後也沒有獨立的斷點。
1
2
3
4
5
6
7
8
9
10 {
"model" : "gpt-5.6-sol" ,
"reasoning" : { "effort" : "medium" , "context" : "all_turns" },
"text" : { "verbosity" : "low" },
"prompt_cache_options" : { "mode" : "implicit" },
"input" : [
{ "role" : "developer" , "content" : "Static content..." },
{ "role" : "user" , "content" : "Dynamic content..." }
]
} 若要解決這個問題,請在兩個請求的靜態內容之後都設定顯式斷點。第一個請求會寫入可重用的前綴;下一個請求即使動態內容改變,仍可重用該前綴。這個範例使用僅顯式模式,避免將動態內容寫入快取。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 {
"model" : "gpt-5.6-sol" ,
"reasoning" : { "effort" : "medium" , "context" : "all_turns" },
"text" : { "verbosity" : "low" },
"prompt_cache_options" : { "mode" : "explicit" },
"input" : [
{
"role" : "developer" ,
"content" : [{
"type" : "input_text" ,
"text" : "Static content..." ,
"prompt_cache_breakpoint" : { "mode" : "explicit" }
}]
},
{ "role" : "user" , "content" : "Dynamic content..." }
]
}
切換至僅顯式模式可能會漏掉隱式寫入的快取 假設請求 1 使用隱式模式,將截至某則使用者訊息結尾的前綴寫入快取,接著請求 2 保留該前綴,但改用 prompt_cache_options.mode: "explicit"。如前綴比對的運作方式 所述,請求 2 只會檢查自身輸入中的顯式斷點,因此不會重用請求 1 儲存的隱式前綴,除非請求 2 中的某個顯式斷點與請求 1 的快取終點相符。
▼ = breakpoint
- Request 1: implicit mode
[Developer message][User message] ▼
- Request 2: explicit-only mode. Does not hit cache.
[Developer message][User message][Follow-up] ▼ 若要重用請求 1 的隱式前綴,請在請求 2 中對應的內容區塊邊界設定顯式斷點,或繼續啟用隱式模式,讓先前符合條件的訊息結尾仍可作為快取查找的候選位置。
延長訊息可能導致其快取前綴無法重用 即使兩個請求都使用隱式模式,保留相同的起始 Token 也不一定足夠。假設請求 1 的最後一則使用者訊息包含 Content A,接著請求 2 將同一則訊息延長為 Content A + Content B。原本位於 Content A 之後的終點,現在落在訊息內部,而非訊息結尾。如前綴比對的運作方式 所述,如果沒有在該邊界設定顯式斷點,請求 2 就不會重用儲存在該處的前綴。
▼ = breakpoint
- Request 1: implicit mode
[Developer message][User message: Content A] ▼
- Request 2: implicit mode. Cannot reuse the prefix through Content A.
[Developer message][User message: Content A + Content B] ▼ 如果對話結構允許,請保留原始訊息,改為附加一則新訊息。否則,請將可重用的文字放在獨立的內容區塊中,並在兩個請求中都於該區塊之後設定顯式斷點。
隱式模式不會自動將所有開發人員訊息視為快取查找邊界 在隱式模式下,位於開頭連續一組開發人員訊息之後的開發人員訊息,不會自動成為快取查找邊界。請在可重用的開發人員訊息結尾加上顯式斷點,並在後續請求中保留該斷點,讓 OpenAI 能檢查是否有相符的快取前綴。
可快取的最短長度因模型而異 在某個模型上符合快取條件的前綴,對另一個模型而言可能太短。請查看模型比較 ,並使用實際採用的模型與設定測量可重用的前綴。更換模型時,請重新檢查,不要假設先前模型的門檻仍然適用。
壓縮可能減少快取重用 壓縮 會以較精簡的形式取代先前的對話上下文。這可能改變前綴,因此即使對話在邏輯上相同,壓縮後的第一個請求仍可能只能重用較少的先前快取內容。
請盡可能維持可重用指示與參考資料不變,再讓後續回合以壓縮後的上下文為基礎繼續累積內容。請比較壓縮前後的總輸入成本:即使快取命中率下降,減少輸入 Token 仍可能節省費用。
提示詞快取會影響輸出生成嗎? 不會。提示詞快取不會改變模型生成輸出 Token 的方式。模型會使用快取的前綴生成新的回應,因此相同的請求不保證會產生相同的輸出。
我可以手動清除快取嗎? 不行。目前不支援手動清除快取。快取項目會依照模型的快取存留時間 與保留設定到期。
快取的提示詞會計入速率限制嗎? 會。快取的輸入 Token 仍會計入每分鐘 Token 數限制。提示詞快取不會改變速率限制 的計算方式。