AI资讯 / 工程

工程 / 官方

提示缓存与粘性路由详解

OpenRouter

在多轮对话中,重复的系统提示、工具定义和模式会导致大量重复计费。提示缓存通过复用重复部分来降低成本,缓存读取成本仅为正常输入的 0.1 到 0.5 倍。但缓存仅在请求到达同一提供商时有效,粘性路由通过 session_id 确保后续请求始终路由到持有缓存的提供商,从而避免缓存失效。本文详细介绍了缓存读写成本差异、缓存失效的常见原因,以及如何通过检查 cached_tokens 字段确认缓存是否生效。

在多轮对话中,智能体每次交互都会发送相同的系统提示、工具定义和模式。以 6 轮对话为例,即使只有用户最新消息或工具结果发生变化,重复的开头部分仍会被计费 6 次。提示缓存解决了这一问题:提供商从缓存中读取重复部分,而不是每次按全价计费。缓存读取成本仅为正常输入的 0.1 到 0.5 倍,具体取决于提供商。例如,Claude Sonnet 4.6 的缓存读取成本为每百万 token 0.30 美元,而正常输入为 3.00 美元,相当于 0.1 倍。

缓存写入和读取的成本不同。首次请求需要支付缓存写入费用,Anthropic 的写入成本为正常输入的 1.25 倍(5 分钟 TTL)或 2.0 倍(1 小时 TTL)。如果写入后未被复用,成本反而更高。但对于多轮对话,重复是常态,写入成本会在几轮后摊平。建议短时间间隔使用 5 分钟 TTL,长时间暂停使用 1 小时 TTL。其他提供商如 OpenAI、Google Gemini 等缓存读取成本在 0.25 到 0.5 倍之间,写入成本则各有不同。

缓存仅在后续请求到达同一提供商端点时才有用。当请求可能路由到多个提供商时,第一轮在一个提供商上写入缓存,第二轮可能落到另一个提供商,导致缓存失效。粘性路由解决了这个问题:在检测到缓存命中后,将同一模型的后续请求路由回同一提供商。如果该提供商不可用,OpenRouter 会回退到下一个可用提供商,而不是失败。默认情况下,OpenRouter 通过哈希第一条系统消息和第一条非系统消息来识别对话,但智能体可能重写这些消息,导致哈希变化。

对于智能体循环,建议设置 session_id。通过 session_id,OpenRouter 直接将其作为粘性路由键,而不是从消息中派生。这样,粘性路由在首次成功请求后立即生效,无需等待缓存命中。session_id 可以通过请求体字段或 x-session-id 头部传递,保持稳定且不超过 256 字符。缓存失效的常见原因包括:提示太短、缓存过期、开头部分变化、或请求路由到不同提供商。通过检查 usage 响应中的 cached_tokens 字段,可以确认缓存是否命中。

提示缓存与粘性路由的结合,为智能体构建者提供了显著的成本优势。第一轮可能支付缓存写入费用,但后续每轮都因复用缓存而大幅降低。对于多轮对话,这种模式几乎总是划算的。开发者应确保 session_id 稳定,并监控 cached_tokens 以验证缓存效果。随着模型和提供商不断优化,缓存策略将成为降低 AI 应用成本的关键手段。

要点

  • 缓存读取成本仅为正常输入的 0.1 到 0.5 倍,多轮对话中可大幅降低费用。
  • 缓存写入成本可能高于正常输入,但多轮复用后成本摊平。
  • 粘性路由通过 session_id 确保后续请求路由到同一提供商,避免缓存失效。
  • 缓存失效的常见原因包括提示太短、过期、开头变化或路由变更。
  • 通过检查 cached_tokens 字段可确认缓存是否命中。
查看原始来源

原始标题:The Cheapest Token Is a Cached One: Prompt Caching + Sticky Routing

本文由 DataHub 基于公开来源整理,用于信息发现与摘要阅读;具体事实、数据和后续更新以原始来源为准。