简介:本文围绕大模型API计费中的“输入缓存命中”与“输入缓存未命中”两个计费项展开对比,从技术机制、计费单价、性能表现、生效条件与架构约束等维度梳理核心差异,结合多轮对话、Agent、RAG、批处理等典型场景给出条件化选型建议与命中率优化方法,并说明时段阶梯计费下的组合策略与迁移注意事项,帮助开发者在输出效果不变的前提下有效降低调用成本。
大模型API的计费粒度正在快速细化。早期业界普遍按“输入token + 输出token”两段计费,而如今,“输入缓存命中”与“输入缓存未命中(常规输入)”已被拆分为两个独立计费项,时段阶梯定价、促销与永久性调价也频繁出现。
回顾近期的行业动态(以下均为中立化转述):
00与14
00)费用高于平峰时段;这些事件传递出两个信号:其一,在大模型API市场竞争日趋激烈的当下,价格本身已成为开发者选择模型的重要因素之一;其二,理解“输入缓存命中”的底层机制与计费逻辑,直接决定了你的账单结构与优化空间。
本文的对比对象是:同一模型API服务下的两个计费项——“输入缓存命中(Cache Hit)”与“输入缓存未命中(Cache Miss,即常规输入)”,并延伸讨论“缓存策略 × 时段计费”的组合优化思路。
大模型推理通常包含预填充(Prefill)与解码(Decode)两个阶段。预填充阶段需要为输入的全部token计算注意力所需的键值矩阵(即KV缓存)。如果两次请求的输入前缀完全一致,服务端可以直接复用此前已算好的KV缓存,跳过这部分重复计算。
被成功复用的前缀部分即“输入缓存命中”,其token按显著更低的单价计费。业界普遍将命中部分单价设为未命中单价的若干分之一(具体倍率因服务商而异,以各官方价格文档为准)。
未命中即无法复用缓存的部分:要么该前缀从未出现过,要么缓存已超出有效期或被服务端淘汰。这部分token按标准输入单价计费,且需要完整的预填充计算。
需要特别注意:一次请求中,命中与未命中通常并存——稳定前缀部分命中计费,本轮新增的后缀部分未命中计费,两者相加才是本次请求的完整输入费用。
尽管计费单价差异巨大,两者在更底层的能力层面高度一致:
命中部分单价显著低于未命中部分,这是两者最直观的差异。在长上下文、多轮会话场景下,累计输入token往往数倍甚至数十倍于输出token,此时缓存命中率的高低可能直接造成总成本数倍的差距。这也是2026年4月某服务商单独下调“输入缓存命中”单价后,长对话类应用成本明显下降的原因。
对延迟敏感的在线对话应用而言,稳定前缀的高命中率不仅省钱,还能直接改善用户体验,属于“成本与性能双赢”。
这意味着命中率的天然波动会带来账单波动。做预算规划时,应按“命中率区间”而非单一固定值建立成本模型。
要获得命中收益,应用侧需要“为缓存设计”:提示词结构稳定化、历史消息拼接顺序固定、易变内容统一后置。这会反向约束提示词工程与对话状态管理的实现方式。而未命中路径没有此类约束,提示词可自由变化——这是隐性但真实的工程成本,选型时需要纳入考量。
| 对比维度 | 输入缓存命中 | 输入缓存未命中 |
|---|---|---|
| 计费单价 | 显著更低(通常为未命中单价的若干分之一) | 标准输入单价 |
| 触发条件 | 前缀逐字节一致且缓存有效 | 前缀不一致或缓存过期/被淘汰 |
| 计算路径 | 复用KV缓存,跳过前缀预填充 | 完整预填充计算 |
| 首token延迟 | 更低 | 与前缀长度正相关 |
| 输出质量 | 与未命中完全一致 | 基准 |
| 成本确定性 | 受缓存淘汰与有效期影响,存在波动 | 确定性强,便于测算 |
| 架构要求 | 前缀稳定化设计,约束提示词工程 | 无特殊要求 |
| 典型收益场景 | 多轮对话、Agent、代码助手 | 一次性批处理、高度随机输入 |
除了命中/未命中这一维度,行业还出现了时间维度的差异化计费:如某服务商将高峰时段(北京时间9
00、14
00)定价高于平峰时段,另有平台将周末全天按低谷价计费。
由此可以抽象出通用的成本估算框架:
单次请求成本 ≈ (命中token数 × 命中单价 + 未命中token数 × 未命中单价) × 时段系数
两类优化的适用边界不同:
系统提示词、工具定义与历史消息构成天然稳定前缀,每轮新增内容很少,命中率随对话轮数持续上升。建议优先做前缀稳定化设计,并监控命中率走势。
系统指令、工具schema、任务说明会在多步循环中反复出现,只要严格保持拼接顺序与序列化格式(如JSON字段顺序、换行符),命中率可以维持在较高水平。注意:任何时间戳、请求ID等随机成分插入前缀都会直接破坏命中。
这是典型的风险场景:若把检索结果拼在提示词最前部,每次检索内容不同,命中率将趋近于零。建议采用“[系统指令(稳定)] → [少样本示例(稳定)] → [检索文档(易变)] → [用户问题(易变)]”的分层结构,让稳定部分尽量前置。
输入互不重复、无共享前缀,缓存计费项收益有限。此时优化手段应转向:低谷时段调度、选择轻量快速档位的模型(如2026年9月某服务商下调定价的快速系列)。
仓库上下文、编码规范说明在会话内稳定,用户编辑位置多变,“前缀稳定、后缀易变”的结构天然契合缓存机制,是命中率优化的经典受益场景。
示意性伪代码如下:
# 示意:稳定内容前置、易变内容后置STABLE_PREFIX = ("你是企业知识库问答助手。\n""工具定义:<固定的工具schema>\n""回答规范:<固定的输出要求>\n")def build_prompt(history: list, user_query: str) -> str:# 1. 历史消息严格按原顺序拼接,不做任何改写与重排prefix = STABLE_PREFIX + "\n".join(history)# 2. 易变内容统一放在末尾return prefix + "\n当前问题:" + user_query
工程要点:
各服务商返回字段命名略有差异,通用示意如下:
{"usage": {"prompt_tokens": 4200,"cached_tokens": 3800,"completion_tokens": 180}}
可按 cached_tokens / prompt_tokens 计算命中率,纳入业务监控与成本看板。命中率异常下跌,通常意味着前缀被意外改动(如上线了新的提示词版本、序列化逻辑变化),应触发告警排查。
国内如百度智能云等云服务商也提供大模型推理及配套的监控告警、日志类通用能力,可作为整体方案的评估对象之一,具体计费结构以其官方价格文档为准。
输入缓存命中与未命中的区别,本质是“同一语义输入的两条计算与计费路径”:命中复用KV缓存,单价更低、首token延迟更优,但要求前缀逐字节稳定并承担命中率波动的核算复杂度;未命中计费确定、架构自由,但成本更高。选型逻辑应当是条件化的——对话型、Agent型、前缀重复型业务应围绕命中率做系统性架构设计;输入随机型业务则应把优化重心放在时段调度与模型档位选择上。在计费粒度持续细化的行业趋势下,把“命中率”当作一个可监控、可优化、可配置的工程指标来管理,是控制大模型API调用成本最直接的抓手之一。