上下文缓存
上下文缓存(KV cache)自动在多个请求间缓存 prompt 前缀。当后续请求共享相同前缀时,缓存部分被复用,降低延迟和成本。
工作原理
- 默认开启 — 无需代码修改。
- 自动管理 — 缓存由网关管理,无需手动启用或配置。
- 前缀匹配 — 如果两个请求共享相同的 prompt 前缀,共享部分从缓存中提供。
计费
缓存命中按低于未命中的费率计费:
| 项目 | 费率 |
|---|---|
| 缓存命中 | $0.028 / 1M tokens(便宜 10 倍) |
| 缓存未命中 | $0.28 / 1M tokens(标准输入费率) |
每个模型的具体费率见模型目录。
监控缓存效果
响应 usage 对象包含缓存命中/未命中统计:
{
"usage": {
"prompt_tokens": 1000,
"completion_tokens": 200,
"total_tokens": 1200,
"prompt_cache_hit_tokens": 800,
"prompt_cache_miss_tokens": 200
}
}
| 字段 | 说明 |
|---|---|
prompt_cache_hit_tokens | 从缓存提供的 prompt token 数(按较低费率计费)。 |
prompt_cache_miss_tokens | 未从缓存提供的 prompt token 数(按标准费率计费)。 |
缓存命中率
你可以计算每个请求的缓存命中率:
命中率 = prompt_cache_hit_tokens / prompt_tokens
高命中率意味着有效缓存和更低成本。
最大化缓存命中率的最佳实践
- 使用一致的 prompt 前缀:如果有跨请求保持不变的系统消息或少样本示例,放在 prompt 开头。
- 批量类似请求:短时间内相似请求更可能命中缓存。
- 避免随机化 prompt:随机 ID、时间戳或变化的系统消息降低缓存效果。
缓存行为
| 行为 | 说明 |
|---|---|
| 最小缓存单位 | 64 tokens |
| 缓存构建时间 | 秒级 |
| 缓存过期 | 数小时到数天(自动) |
| 缓存失效 | 缓存过时时自动 |
成本示例
一个 10,000 token 的 prompt,8,000 缓存命中,2,000 缓存未命中:
| 项目 | Tokens | 费率 | 成本 |
|---|---|---|---|
| 缓存命中 | 8,000 | $0.028/M | $0.000224 |
| 缓存未命中 | 2,000 | $0.28/M | $0.000560 |
| 总计 | 10,000 | — | $0.000784 |
没有缓存时,同样的 prompt 成本为 $0.002800——80% 缓存命中率下节省 72%。