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 界面上的綠色徽章:
| 信號 | 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,000、W=80,000、U=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_control、prompt_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_tokens、cache_creation_input_tokens 和 breakpoint 後的 input_tokens |
| 常見失效原因 | 模型、工具、設置變化,機器溢出,或 breakpoint 前綴變化 | 模型、system、工具、消息變化,找不到上一條消息,或並行預熱 miss |
OpenAI 說明緩存條目位於單獨機器上;prompt_cache_key 可以幫助分組和路由,但不能固定機器,也不能保證命中。Claude 文檔說明精確匹配、workspace 級隔離,以及 tools_changed、messages_changed 等診斷原因。隱藏這些差異的網關,不能誠實地把供應商文檔轉換成一個統一“緩存率”承諾。
價格倍率說明瞭影響。以引用的 OpenAI 模型為例,一次寫入後一次讀取,緩存部分成本約為 1.25 + 0.10 = 1.35× 未緩存輸入單位,而不是兩個未緩存單位;十次完全復用約為 1.25 + 9×0.10 = 2.15×,而不是 10×。這是官方的說明性計算,不是 Modelflare 賬單,也不是每個模型的保證。
適配器稅可以被測量
不要用截圖,使用故障矩陣。固定應用提示詞、模型、憑據和請求速率,每次只改變一個變量,並保留原始 usage 對象。
| 控制變化 | 供應商預期信號 | 不透明 agent 可能隱藏甚麼 | 發佈判斷 |
|---|---|---|---|
| 只追加用戶回合 | 首次 W 後 R 上升 |
歷史被重寫或路由改變 | 前綴保持成功 |
| 在 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%。
邊界是有意設計的:
- 保證針對符合資格且有效的 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 的普遍命中率。
- OpenAI Prompt Caching 指南
- OpenAI API 價格
- Anthropic Prompt Caching 指南
- Anthropic 緩存診斷
- Modelflare 實時狀態與緩存保證
- Modelflare 價格與當前活動條款
- Modelflare 信任與運營主體
常見問題:第三方命中率低就一定是欺詐嗎?
不一定。短提示詞、變化前綴、路由分散、TTL 過期或缺少用量字段都可能造成低值。正確結論應是“不可復現”或“不可審計”,直到受控測試找出原因。
常見問題:能否用一個數字比較 Claude 與 GPT?
只有在統一分母並保留兩家原生字段後才可以。比較相同語料和工作負載階段,不要比較混合儀錶盤總數。
常見問題:有補償後還需要設計穩定前綴嗎?
需要。補償限制的是合格 OpenAI 緩存流量的財務下行風險;它不能讓不合格請求變得可復用,也不能修復會重寫前綴的 agent。