概述
Ling.AI 会透传上游支持的提示缓存能力,并记录缓存相关 token。缓存命中配置分为显式和隐式两档价格;Session 是触发缓存的机制,不是第三档价格。当前双价候选版本仍有 Session 能力识别和异步账单证据落库的验收阻断,不能视为所有模型均已完成双价计费验收。
Batch 说明
百炼 Batch 属于独立计费路径,不支持上下文缓存折扣。对于 batch_file / batch_chat 请求,Ling.AI 会按 Batch 输入/输出价格结算,不会叠加显式缓存、隐式缓存或 Session 缓存价格。
缓存类型
1. 显式缓存
请求方式取决于模型支持的协议。例如,部分模型可在消息内容块中设置 cache_control: {"type":"ephemeral"}。网关沿用既有协议转换;只有最终发往上游的请求保留有效显式缓存标记,或上游提供可靠的显式命中证据,并且实际返回缓存命中 token,才按显式命中价计费。客户端传入同名字段本身不代表已经生效。
2. 隐式缓存
适用于支持自动前缀缓存的模型。该模式无需额外配置,是否命中缓存由上游决定;命中后,网关会从返回结果中提取 cached_tokens 并写入 prompt_cached_tokens。
3. Session 缓存
适用于 /v1/responses。当最终请求向上游传递 x-dashscope-session-cache: enable 时启用 Session;如果显式传入 x-dashscope-session-cache: disable,则关闭 Session 缓存并回退到上游默认行为(若模型支持,通常仍可能发生隐式缓存)。按官方规则,支持显式缓存的模型应使用显式命中价,仅支持隐式缓存的模型应使用隐式命中价;是否命中仍以实际用量为准。
当前候选版本尚未接入完整、权威的实际路由模型 Session 能力依据。已有路由策略只能提供有限推断;能力未知且没有其它可靠显式证据时,现有兼容路径仍使用隐式价,这可能使支持显式的 Session 模型采用错误档位。该覆盖缺口尚未解决,不能据此认定所有 Session 模型均已正确选价。最终有效显式标记或可靠响应证据加真实命中仍可选择显式价;响应缺少 cache_type 本身不暂停普通结算。
配置方式
显式缓存与 Session 缓存都可以直接从公开 API 触发;是否真正创建或命中缓存,仍取决于上游模型是否支持以及提示词长度是否达到上游要求。
curl https://api.lingyuncx.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "很长的稳定前缀……",
"cache_control": {"type": "ephemeral"}
}
]
},
{"role": "user", "content": "请概括以上内容"}
]
}'
curl https://api.lingyuncx.com/v1/responses \
-H "Authorization: Bearer sk-xxxxxxxx" \
-H "Content-Type: application/json" \
-H "x-dashscope-session-cache: enable" \
-d '{
"model": "qwen3.5-plus",
"input": "请基于上一次响应继续回答"
}'
缓存字段
| 字段 | 说明 | 来源 |
|---|---|---|
prompt_cached_tokens | 缓存命中的输入 token 数 | 上游 cached_tokens |
cache_write_tokens | 新创建缓存块的输入 token 数 | 上游 cache_creation_input_tokens / cache_creation_tokens |
cache_hit_type | 已有可靠结算证据中的命中类型:explicit / implicit;缺少证据保持未知 | 最终出站请求与实际用量证据;当前异步消费链仍缺新增类型的落库支持 |
cache_hit_price(用量明细) | 已有证据中的实际命中单价,按账单币种 / 每百万 Token 展示;未落库时不能承诺可展示 | 结算快照;不是第三个价格配置,异步消费链的新增证据落库尚未完成 |
cache_hit_rate | 控制台聚合指标,按缓存 token 与输入 token 计算 | 系统自动计算 |
缓存计费
固定价与每个价格阶梯分别配置 explicit_cache_hit_price(显式命中)和 implicit_cache_hit_price(隐式命中)。只填写一档时,保存为两档同值;填写两档时保留各自的价格。0 是有效的免费价格;两档均留空时保存为两个 NULL,命中按对应规则或阶梯的基础文本输入价计费。编辑时未提交字段表示保留原值,提交空值表示主动清空。
旧单一命中价升级为两档同值,旧阶梯价同样保留。升级后主动清空两档,不会被旧字段恢复。只有 cached_tokens 时,该字段只证明命中数量:最终出站请求存在有效显式标记则使用显式价;无显式依据的普通命中使用隐式价。可靠响应中的 cache_type=ephemeral 也支持显式分类。响应缺少 cache_type 本身不会阻断正常结算;真正互相矛盾的证据仍触发既有保护。
| 字段 | 说明 | 规则 |
|---|---|---|
cache_creation_price | 缓存写入单价(每百万 Token) | 沿用原写入计价规则 |
explicit_cache_hit_price | 显式缓存命中单价(每百万 Token) | 按模型实际配置,不按供应商名称套倍率 |
implicit_cache_hit_price | 隐式缓存命中单价(每百万 Token) | 可与显式不同;空值回退基础文本输入价,0 免费 |
input_price | 标准输入单价(非缓存 Token) | 常规输入价格 |
实际费用计算公式:
本次命中单价 = 显式命中价 或 隐式命中价
(对应档位为空时使用基础文本输入价)
基础 Token 费用 = [
标准输入 Token × input_price
+ 缓存写入 Token × cache_creation_price
+ 缓存命中 Token × 本次命中单价
+ 输出 Token × output_price
] / 1,000,000
最终账单仍沿用已有折扣、免费额度和其他计费分项。
查看实际价格
每个模型的缓存价格可能不同,具体以模型目录中的价格摘要和后台计费规则为准。目录分别展示显式和隐式命中价;是否支持某种缓存方式仍以模型能力为准,配置价格不等于模型具备相应能力。
应用场景
- 长文本多问:反复针对同一份文档、代码仓库或知识库提问。
- 多轮会话:使用
/v1/responses并结合 Session 缓存降低连续对话成本。 - 账单核对:根据
prompt_cached_tokens、cache_write_tokens、cache_hit_type校验结算是否符合上游规则。
缓存统计
有真实命中时,后台使用日志和客户用量明细会展示本次显式/隐式类型与实际单价;没有命中时不展示命中价,历史无可靠类型显示未知。历史账单不按现有配置回写。在控制台用量追踪页可查看缓存 token、缓存命中率等聚合数据;如需判断某次请求是否享受缓存价格,建议同时核对返回结果中的 usage 与控制台日志里的 cache_hit_type、prompt_cached_tokens、cache_write_tokens。
提示
网关不会额外生成 x-cache: HIT 一类公开响应头。判断缓存是否生效,应以返回的 usage 字段和控制台记录为准。