多轮对话中,智能体每一轮都要重复发送相同的系统提示词、工具定义、架构和策略指令。一个 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 中获取。
.png)
发评论,每天都得现金奖励!超多礼品等你来拿
登录 在评论区留言并审核通过后,即可获得现金奖励,奖励规则可见: 查看奖励规则