Ori联系我们

文档OriHub

Prompt 缓存

缓存命中和缓存创建是分开计价的两个维度;缓存本身由上游做,平台透传。

Prompt 缓存在平台上有三个计费维度:缓存命中价、5 分钟缓存创建价、1 小时缓存创建价。命中的部分按便宜的那个算,没命中的部分照常按输入价算。

价在哪看

每条渠道分组的定价里都有这三个字段:

字段 含义
input_cache_hit_price 缓存命中价
input_cache_write_5m_price 5 分钟缓存创建价
input_cache_write_1h_price 1 小时缓存创建价

值是 0 表示这条渠道没有这个计费维度 —— 比如只支持 5 分钟缓存的渠道,1 小时那项就是 0。

查一个模型的全部渠道定价:

curl https://api.lk888.ai/v1/skills/models/tt-6-luna/pricing \
  -H "Authorization: Bearer $OPENAI_API_KEY"

返回里每个渠道分组一份,还带 tier2_* / tier3_* —— 那是按上下文长度分的档位,各档有自己的输入价和缓存价。

默认返回所有渠道分组(包括 is_active=false 的,那些不是永久关闭,平台可能随时开关)。只看当前在跑的加 ?status=active。

怎么触发

缓存是各家上游自己做的,平台原样透传,请求里该怎么标就怎么标:

  • Anthropic 格式 —— 在 messages 或 system 的内容块上打 cache_control 断点,指定要缓存到哪一段
  • OpenAI 格式 —— 上游自动缓存,相同前缀的请求直接命中,不用自己标断点

断点能打几个、TTL 怎么选、命中条件是什么,都以各家的 API 文档为准,平台不改。

怎么看有没有命中

响应里的 usage 会把缓存部分单独算出来(字段名跟上游一致,Anthropic 格式是 cache_read_input_tokens / cache_creation_input_tokens,OpenAI 格式在 prompt_tokens_details.cached_tokens)。

特别注意

  • 换线路就不命中。缓存是上游按线路维度存的,平台按密钥的调度策略选线路 —— 这次选了另一条渠道,前缀再一样也命不中
  • 分组路由的三个字段都不改路由:请求体里的 channel_group 和请求头 X-Channel-Group 都不影响选路,只会被透传给上游
  • 缓存价也是分档的。上下文跨过 tier2_threshold / tier3_threshold 之后,输入价和缓存价都会换档
  • 分组路由由密钥的调度策略决定(价格优先 / 速度优先 / 成功率优先),要缓存稳定命中,一般让策略固定在同一条线路上