主题
提示词缓存与计费
什么是缓存计价
同一段前缀(系统提示、长文档、工具定义)在短时间内重复使用时,上游可以复用计算结果,这部分按「缓存读取」单价计费,通常比正常输入便宜一个数量级。
怎么确认命中
看响应的 usage:
| 协议 | 字段 |
|---|---|
| OpenAI | usage.prompt_tokens_details.cached_tokens |
| Anthropic | usage.cache_read_input_tokens / cache_creation_input_tokens |
| Gemini | usageMetadata.cachedContentTokenCount |
怎么提高命中率
- 前缀稳定:把不常变的内容(系统提示、工具定义、知识库)放最前,把用户输入放最后
- 别塞时间戳:系统提示里带「当前时间」会让每次前缀都不同
- 连续调用:缓存有存活时间(常见 5 分钟 / 1 小时两档),间隔太久会失效
高性价比线路:缓存可能「冷启动」
稳定 / 特惠 / 越狱 更便宜,但缓存命中不如官方直连稳定:
- 线路切换、限流重试或服务端资源调整时,之前建立的缓存可能不再命中
- 首次请求命中率为 0,会重新走「缓存写入」——部分模型的写入单价比普通输入还高
- 表现:同样一段系统提示,平时很便宜,某次突然变贵、首 token 变慢;
usage里出现cache_creation_input_tokens而不是cache_read_input_tokens
怎么减少这部分损耗
- 成本敏感或要稳定 → 走「满血」,缓存能持续命中
- 前缀保持稳定:别把时间戳、随机 ID、用户名放在系统提示最前面
- 长文档别整段重传:先摘要或做检索,再按需引用片段
- 批量任务集中跑:短时间窗口内完成,减少缓存反复失效的次数
为什么账单比手算的高
- 没命中缓存,按正常输入价计费
- 写缓存本身有单独单价(部分模型)
- 上下文超过阈值后切到更高档位
- 分组倍率不是 1