多輪對話中,智能體每一輪都要重複發送相同的系統提示詞、工具定義、架構和策略指令。一個 6 輪會話裏,即使唯一變化的是用戶最新消息或工具返回結果,開頭那段重複內容仍可能被計費 6 次。OpenRouter 近日推出的 Prompt Caching 配合 Sticky Routing,正是爲了解決這一成本黑洞。
Prompt Caching 的核心邏輯是:服務提供商從緩存中讀取提示詞中重複的部分,而非每次都按全價收費。Sticky Routing 則通過將會話固定到持有熱緩存的同一提供商,使這一機制在跨輪次中持續生效。
緩存讀取成本爲正常輸入的 0.1 到 0.5 倍
緩存讀取價格因提供商而異。Anthropic Claude Sonnet 4.6 上,緩存讀取爲每百萬 token 0.30 美元,而輸入價格爲 3.00 美元,恰好是 0.1 倍。DeepSeek 和阿里通義千問同樣提供 0.1 倍讀取價格;OpenAI 爲 0.25 至 0.5 倍;Gemini、Grok、月之暗面爲 0.25 倍;Groq 爲 0.5 倍。
但緩存並非免費午餐。首次請求需要支付緩存寫入費用,且部分提供商的寫入成本高於普通輸入。Anthropic 默認 5 分鐘 TTL 的寫入成本是輸入價格的 1.25 倍,1 小時 TTL 則爲 2.0 倍——一次從未被複用的寫入,成本反而比不用緩存更高。OpenAI GPT-5.6 及之後版本寫入成本爲 1.25 倍輸入價格。Google Gemini、Grok、月之暗面、Groq 的寫入則免費。
熱緩存的隱形陷阱:提供商漂移
緩存寫入後,如果下一輪請求被路由到不同提供商,熱緩存便失效。OpenRouter 支持 70 多個提供商,第二輪命中冷端點的概率並不低。這就是 Sticky Routing 的價值所在——在緩存請求後,當該提供商的緩存讀取價格低於常規輸入時,後續請求會被固定回同一端點。若該提供商不可用,則回退到下一個可用端點,而非讓請求失敗。
默認情況下,OpenRouter 通過哈希對話的第一條系統消息和第一條非系統消息來識別會話。但智能體常在輪次間重寫開頭消息(如總結狀態、重新排序工具上下文),導致哈希值變化、會話漂移。解決方案是使用顯式的 `session_id`。設置後,OpenRouter 直接將其作爲粘性路由鍵,粘性在首次成功請求後即生效,而非等到緩存命中後才啓動。`session_id` 可作爲請求體頂層字段或 `x-session-id` 請求頭髮送,需在整個對話期間保持穩定,控制在 256 字符以內。
緩存未命中的四大原因
一是提示詞低於提供商最低要求。Anthropic Claude Opus 4.5–4.8 和 Haiku 4.5 需 4096 token,Haiku 3.5 需 2048 token,Sonnet 4/4.5/4.6 和 Opus 4/4.1 需 1024 token;OpenAI 需 1024 token;Gemini 2.5 Pro 需 4096 token,Flash 需 1024 token。
二是緩存過期。Anthropic 默認 5 分鐘,可選 1 小時;Gemini 隱式緩存約 3–5 分鐘且讀取時不重置 TTL。
三是提示詞開頭不斷變化。應將穩定內容(系統指令、工具、模式、參考資料)放在前面,變化內容(用戶問題、時間戳、工具輸出)放在後面。第一條系統消息中的時間戳會讓每一輪提示詞看起來都是新的,如非必要應移至後面的消息中。
四是請求被路由到不同提供商。智能體工作流應設置 `session_id` 並依賴粘性路由保持會話在已預熱的提供商上。若自行設置 `provider.order`,會覆蓋粘性路由。

節省的成本隨輪次增加而增長。對於多輪對話,當重複使用的內容隨對話增長時,使用自動緩存;當確切知道哪些大塊內容應被緩存時(如檢索文檔、長參考文件、角色卡、CSV 數據),使用顯式緩存斷點;對於智能體會話、支持工單、聊天線程、工作流運行,以及開場消息可能在輪次間變化的對話,使用 `session_id`;對於較長的 Anthropic 會話,當默認 5 分鐘緩存可能過期時,使用 1 小時緩存。
確認緩存是否生效,可檢查響應中 `usage.prompt_tokens_details.cached_tokens` 字段,大於零即命中;`cache_write_tokens` 顯示寫入量;`cache_discount` 可查看單次生成的成本影響。這些信息也可在 Activity 頁面或 `/api/v1/generation` API 中獲取。
