Agent 快取命中率為何失效:GPT、Claude 與可審計閘道

以一手資料拆解第三方 agent 的快取失效路徑,說明 GPT 與 Claude 的提示詞快取機制、可重現命中率測量,以及 Modelflare 公開的快取補償邊界。

Agent 的緩存不是一個可以勾選的開關,而是一份由協議、路由和賬務共同組成的契約。本文解釋:為甚麼上游模型明明支持提示詞緩存,第三方 agent 仍可能長期處於低命中;GPT 與 Claude 的復用機制和統計口徑有何不同;以及一個可審計的網關應該承諾甚麼。

一句話結論

對於依賴緩存經濟性的生產 agent,不要使用無法展示原生緩存用量、保持穩定前綴、維持模型與路由親和性、公開 TTL 和分母、並能與持久賬本對賬的第三方 agent 或網關。“支持緩存”只是功能描述;經過測量的、限定了資格範圍的命中率才是運行事實。

這不是說所有第三方 agent 都會失效。沒有固定語料、固定模型、明確觀測窗口和逐請求用量證據,公開資料無法證明某個供應商整體的命中百分比。更準確的結論是:不透明的轉換層會引入多個相互獨立的斷點,把有效的上游緩存變成幾乎每次都冷啓動的路徑。對於依賴緩存的生產流量,無法提供證據本身就足以構成不採用理由。

先定義分母,再談百分比

供應商通常會報告三個不同桶。令 R 表示從緩存讀取的 token,W 表示寫入緩存的 token,U 表示沒有復用、直接處理的輸入 token。對符合緩存資格的前綴,可比較的命中率是:

eligible_hit_rate = R / (R + W)

對發送給模型的全部輸入,復用佔比是:

input_reuse_share = R / (R + W + U)

這兩個數字回答的是不同問題。按全部輸入計算的儀錶盤,在 agent 發送大量短請求時會顯得很低;只按合格流量計算的儀錶盤,則可能掩蓋動態後綴仍佔據大部分成本的事實。報告必須同時給出兩者、資格規則和時間窗口。

穩定前綴進入可復用緩存,變化中的 agent 狀態繞過緩存

真正的證據來自供應商字段,而不是 agent 界面上的綠色徽章:

信號 OpenAI 字段 Claude 字段 能證明甚麼
復用前綴 input_tokens_details.cached_tokens cache_read_input_tokens 確實由匹配條目提供的 token
新建緩存條目 input_tokens_details.cache_write_tokens cache_creation_input_tokens 為創建或延長條目計費的 token
未復用輸入 input_tokens - input_tokens_details.cached_tokens - input_tokens_details.cache_write_tokens(需謹慎推導) breakpoint 之後的 input_tokens 緩存前綴之外的輸入;兩家語義不同
關聯信息 request ID、模型和路由 request ID、模型和路由 哪次上游嘗試產生了這份用量

下面的數字是合成示例,不是 Modelflare 生產遙測:R=720,000W=80,000U=200,000 時,合格命中率為 720,000 / 800,000 = 90%,但全輸入復用佔比只有 720,000 / 1,000,000 = 72%。只發佈其中一個數字,就隱藏了分母。

input_tokens_details.cache_write_tokens=0 不能證明“沒有緩存”:讀取已有條目的請求本來就不會創建新條目。反過來,第三方響應缺少用量字段也不等於零,而是一次可觀測性失敗,應標記為不可審計

為甚麼模型支持緩存,agent 路徑仍會丟失命中

問題通常發生在應用到供應商之間的路徑上。以下是最常見的斷點:

  • 動態字節出現得太早。 時間戳、請求 ID、用戶名、實驗標記或不斷變化的“當前日期”進入系統提示詞,會在可復用指令之前改變前綴。
  • 工具被重新序列化。 增刪、排序或不確定地序列化工具 schema 都會改變精確前綴;看似無害的 JSON 鍵順序也會造成 miss。
  • 回退改變緩存身份。 在模型別名、區域、組織或供應商憑據之間負載均衡,不會共享一個通用緩存條目。
  • 適配器丟棄原生控制項。 刪除 cache_controlprompt_cache_key、保留策略或用量詳情,會把供應商能力變成不可見的 best effort。
  • 提示詞低於供應商閾值。 很短的 agent 回合可以是有效請求,卻沒有緩存資格。
  • 跨過 TTL 窗口。 Claude 的五分鐘條目或 OpenAI 的模型相關保留窗口,可能在人機協作暫停時過期。
  • 並行預熱發生競態。 首次併發請求可能在第一個響應建立條目之前全部到達。
  • 歷史被重寫。 摘要、壓縮、截斷或不同的歷史序列化會改變前綴,而不是在末尾追加。

三種請求形狀展示讀取、寫入和未緩存輸入如何形成不同分母

這些失敗不需要供應商有意欺騙用戶;它們是把 agent 請求當作任意文本、而沒有維護供應商緩存契約的可預測結果。實際警告比營銷比較更直接:如果 agent 不能指出是哪一個 breakpoint 失敗,就無法可靠地給緩存流量定價或排障。

GPT 與 Claude 的思路相近,但統計語義不能混用

兩家都要求精確匹配的可復用前綴,但控制面和用量口徑不同。下表依據 2026-08-25 檢查的官方指南;模型名稱、最小長度和保留策略會變化,生產策略調整前應重新查看鏈接。

維度 OpenAI prompt caching Claude prompt caching
復用單元 完整渲染的上下文前綴,包括指令、工具、歷史和多模態部分 經過 cache_control breakpoint 的有序前綴:工具、system、messages
最小長度 當前指南列出 GPT-5.6+ 可見 token 為 1,024,舊模型通常為 2,048 按模型區分,目前約為 512–4,096 token;更短提示詞不緩存
控制方式 隱式緩存;受支持模型可用顯式 breakpoint 和穩定的 prompt_cache_key 頂層自動緩存或顯式 block breakpoint;最多四個 breakpoint,回看 20 個 block
保留時間 GPT-5.6+ 支持 30 分鐘 TTL;舊模型提供供應商定義典型窗口的保留模式 默認五分鐘,每次使用會刷新;可選一小時但寫入價格更高
價格形態 當前 GPT-5.6+ 指南中,寫入為基礎輸入價的 1.25 倍,讀取為 0.1 倍 五分鐘寫入為 1.25 倍,一小時寫入為 2 倍;讀取為 0.1 倍
用量證據 input_tokens_details.cached_tokens,以及適用時的 input_tokens_details.cache_write_tokens cache_read_input_tokenscache_creation_input_tokens 和 breakpoint 後的 input_tokens
常見失效原因 模型、工具、設置變化,機器溢出,或 breakpoint 前綴變化 模型、system、工具、消息變化,找不到上一條消息,或並行預熱 miss

OpenAI 說明緩存條目位於單獨機器上;prompt_cache_key 可以幫助分組和路由,但不能固定機器,也不能保證命中。Claude 文檔說明精確匹配、workspace 級隔離,以及 tools_changedmessages_changed 等診斷原因。隱藏這些差異的網關,不能誠實地把供應商文檔轉換成一個統一“緩存率”承諾。

價格倍率說明瞭影響。以引用的 OpenAI 模型為例,一次寫入後一次讀取,緩存部分成本約為 1.25 + 0.10 = 1.35× 未緩存輸入單位,而不是兩個未緩存單位;十次完全復用約為 1.25 + 9×0.10 = 2.15×,而不是 10×。這是官方的說明性計算,不是 Modelflare 賬單,也不是每個模型的保證。

適配器稅可以被測量

不要用截圖,使用故障矩陣。固定應用提示詞、模型、憑據和請求速率,每次只改變一個變量,並保留原始 usage 對象。

控制變化 供應商預期信號 不透明 agent 可能隱藏甚麼 發佈判斷
只追加用戶回合 首次 WR 上升 歷史被重寫或路由改變 前綴保持成功
在 system prompt 加時間戳 R 歸零或出現新的 W 哪些字節發生變化 動態前綴是緩存斷點
調換一個工具屬性順序 tools_changed 或新的寫入 序列化行為 工具 schema 必須確定性生成
在別名或機器間拆分流量 R 更低且波動更大 選中的路由和緩存鍵 缺少親和性策略
休眠超過文檔 TTL 過期後再次寫入 過期時刻和保留模式 人工暫停場景需單獨測量
並行發送兩個相同首請求 一個或兩個都可能寫入 預熱競態和嘗試順序 冷啓動突發不能代表容量

測試必須保留 request ID、流模式、首個事件時間、精確模型、選中路由、緩存字段和 UTC 時間戳。提示詞、密鑰和客戶內容要脫敏。如果網關只返回歸一化的“輸入 token 總數”,應將該輪標記為不可審計;不要把缺失維度變成虛構的零值或有利估計。

一份可復現的審計記錄

下面是一個小型合成記錄格式。外層保持供應商中立,usage 內保留原生字段;它不是 benchmark 結果。

{"request_id":"demo-001","timestamp":"2026-08-25T02:00:00Z","model":"MODEL_ID","route":"route-a","stream":true,"usage":{"input_tokens":1000000,"input_tokens_details":{"cached_tokens":0,"cache_write_tokens":1000000}}}
{"request_id":"demo-002","timestamp":"2026-08-25T02:00:03Z","model":"MODEL_ID","route":"route-a","stream":true,"usage":{"input_tokens":1000000,"input_tokens_details":{"cached_tokens":720000,"cache_write_tokens":80000}}}

至少運行五個階段:串行預熱、只追加的對話、動態 system 變更、工具順序變更和 TTL 間隔重放。Claude 需要把原生讀寫字段映射到同一報告,但不能替換原字段;OpenAI 返回時要同時保留 cached 與 write 字段。按階段、路由、模型和 UTC 日期比較 R/(R+W) 以及 R/(R+W+U)。單一混合數字不足以決定一個 agent 是否適合生產。

Modelflare 保證甚麼,以及不保證甚麼

Modelflare 當前公開狀態頁說明瞭 OpenAI Cache Hit Rate Guarantee。對於滿足 OpenAI 緩存要求並形成有效緩存的合格請求,按 UTC 自然日計算命中率;如果測得命中率低於適用檔位,會補償差額,並在 Dashboard → Token Usage Analysis 展示。當前公開檔位為 65%75%85%

三個公開保證檔位從 65% 逐級上升到 85%

邊界是有意設計的:

  • 保證針對符合資格且有效的 OpenAI 緩存流量,不針對從未達到閾值或前綴持續變化的短請求。
  • 它不會把變化中的模型、工具 schema、路由或 TTL 自動變成可復用前綴。
  • 按 UTC 自然日計算,並通過文檔所述賬戶界面入賬;它不是“每個請求都命中”的斷言。
  • 原生用量證據和資格計算仍是必要條件。正因為分母明確,補償規則才可核驗。

這就是可審計服務承諾與第三方 agent 口號的差異:前者寫清合格人群、觀察窗口、閾值和補償去向。

價格優勢與正規運營是兩組獨立證據

當前公開價格頁還展示了適用活動/分組的 0.015 首充活動比例,並列出單筆最低充值與資格條款。這是價格權益,不應與緩存保證混為一談。做購買決策前,請以實時價格頁確認模型範圍、活動狀態和結算規則。

Modelflare 的公開信任與法律材料將 Havenbyte LLC 列為運營主體,並描述其為美國運營主體;同時列明 Stripe 用於支付處理、賬單、發票、退款和欺詐控制。這些是資金和責任邊界的信號,但不能替代閱讀條款或測試 API。本文不對具體州注冊、認證或供應商隸屬關係作超出公開材料的斷言。

生產 agent 的選擇建議

只有在第三方 agent 能通過以下清單時,才考慮將其用於生產:

  • 轉發供應商原生緩存控制項,並返回原生讀寫用量。
  • 保持穩定指令和工具前綴逐字節一致,再追加動態狀態。
  • 暴露選中的模型、路由、組織/區域邊界、TTL 模式和 request ID。
  • 記錄串行與並行預熱結果,而不是把兩者平均掉。
  • 書面定義合格流量、分母、UTC 窗口、閾值和補償方式。
  • 可以導出逐請求證據,同時不洩露密鑰或客戶內容。

只要有一項答案為“否”,就不要把這條路徑用於經濟性依賴緩存復用的工作負載。可以先用直連供應商路徑做對照實驗,或選擇可審計的 Modelflare,再用同一套語料驗證精確路由。相關主題可繼續閱讀:可靠的 AI API 路由AI API 成本追蹤價格信任中心

來源與核驗日期

以下一手資料於 2026-08-25 檢查。它們說明供應商協議和 Modelflare 當前公開政策,並不能證明某個未指名第三方 agent 的普遍命中率。

常見問題:第三方命中率低就一定是欺詐嗎?

不一定。短提示詞、變化前綴、路由分散、TTL 過期或缺少用量字段都可能造成低值。正確結論應是“不可復現”或“不可審計”,直到受控測試找出原因。

常見問題:能否用一個數字比較 Claude 與 GPT?

只有在統一分母並保留兩家原生字段後才可以。比較相同語料和工作負載階段,不要比較混合儀錶盤總數。

常見問題:有補償後還需要設計穩定前綴嗎?

需要。補償限制的是合格 OpenAI 緩存流量的財務下行風險;它不能讓不合格請求變得可復用,也不能修復會重寫前綴的 agent。