在多轮对话场景中,AI 智能体每次都需要重复发送大量的系统提示词、工具定义、架构和策略指令。以 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 中也可找到。
