agent-Specialization/cache_research/official_overseas_v2/report.md
JOJO 0b3d98d91b feat(stats): token 统计新增缓存命中追踪与命中率展示
- utils/token_usage.py:usage 归一化补全缓存命中字段提取,覆盖
  prompt_tokens_details/input_tokens_details.cached_tokens(OpenAI 系)、
  顶层 prompt_cache_hit_tokens(DeepSeek)、顶层 cached_tokens(Kimi/Step)、
  cache_read_input_tokens(Anthropic 系)、cachedContentTokenCount(Gemini);
  Anthropic 语义下把缓存读/写加回总输入以统一口径,normalize 保持幂等
- 对话级统计新增 total_cached_input_tokens 与 cache_exempt_input_tokens
  (首轮/深度压缩后首轮未命中缓存的输入视为冷启动成本,豁免出命中率分母;
  压缩通过 cache_cold_start_pending 标记在下一次真实调用时判定)
- token_update 广播与 token-statistics 接口同步携带新字段
- TokenDrawer 面板新增「累积缓存输入」「缓存命中率」(前端按 缓存/(总输入-豁免) 换算)
- 深色模式下「当前上下文」数字由灰色 --accent 改为 --text-primary(白)
- 附 cache_research/ 各厂商缓存字段调研文档(代码注释引用)
2026-08-29 12:43:14 +08:00

28 KiB
Raw Blame History

海外官方 LLM API「缓存命中 token 字段」调研报告v2 重试版)

调研时间2026-08-29 调研人:子智能体 #4 范围:海外官方 APIOpenAI / Anthropic / Google Gemini / xAI Grok / Mistral AIAWS Bedrock 与 Azure OpenAI 仅简述透传方式) 方法以官方文档为准platform.openai.com / docs.anthropic.com / platform.claude.com / ai.google.dev / docs.x.ai / docs.mistral.ai / learn.microsoft.com / aws.amazon.com 官方博客),社区与第三方内容仅作辅助并标注来源等级。 说明官方文档随时间变化2026 年的文档已覆盖 GPT-5.x、Claude Opus/Sonnet 5 等新模型),本报告同时保留「历史经典行为」(如 OpenAI 1024 阈值、Anthropic 1024/2048与「文档当前状态」供实验对照。


1. 总览对照表

提供商 缓存类型 / 启用方式 命中字段 JSON 路径(非流式) 写入(创建)字段 自动 / 显式 最低门槛 官方文档链接
OpenAI Chat Completions prompt cachingKV cache usage.prompt_tokens_details.cached_tokens usage.prompt_tokens_details.cache_write_tokensGPT-5.6+ 上报;老模型无写入字段) 自动implicitGPT-5.6+ 可选显式 breakpoint 历史 1024 tokens128 递增当前文档GPT-5.6+ = 1024更早模型 = 2048 https://platform.openai.com/docs/guides/prompt-caching
OpenAI Responses API prompt caching usage.input_tokens_details.cached_tokens usage.input_tokens_details.cache_write_tokens 自动 / 显式(prompt_cache_options.mode + prompt_cache_breakpoint 同上 https://platform.openai.com/docs/guides/prompt-caching
Anthropic Claude Messages API prompt caching前缀缓存 usage.cache_read_input_tokens usage.cache_creation_input_tokens(另有细分对象 usage.cache_creation.ephemeral_5m_input_tokens / ephemeral_1h_input_tokens 显式:块级 cache_control{"type":"ephemeral"});也提供顶层 cache_control 自动断点 因模型而异512 / 1024 / 2048 / 4096 均有(详见 §3 表) https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching platform.claude.com/docs/en/build-with-claude/prompt-caching
Google Gemini GLMGenerative Language API 隐式缓存 + 显式 Context CachingcachedContents 资源) usageMetadata.cachedContentTokenCountSDK snake_caseusage_metadata.cached_content_token_count;另有带 modality 细分 cacheTokensDetails 无「usage 内写入字段」;显式缓存通过 cachedContents.create 创建资源TTL 计费) 隐式2.5 及更新模型自动;显式:须先创建 CachedContent 再传 cachedContent 隐式Gemini 2.5 = 2048 tokensGemini 3.x = 4096 tokens历史2.5 Flash 曾 1024 / 2.5 Pro 曾 2048显式缓存资源 ≥1 分钟 TTL按 token·时长计费 https://ai.google.dev/gemini-api/docs/generate-content/caching
xAI Grok prompt cachingmessages 前缀缓存) Chat Completionsusage.prompt_tokens_details.cached_tokensResponses APIusage.input_tokens_details.cached_tokens 无独立字段(官方仅暴露 cached_tokens 自动;建议设 x-grok-conv-id / prompt_cache_key 提升命中率 官方文档未公布固定 token 门槛(按消息前缀整段匹配) https://docs.x.ai/developers/advanced-api-usage/prompt-caching
Mistral AI prompt caching前缀缓存OpenAI 兼容格式) usage.prompt_tokens_details.cached_tokens 无独立字段(未命中时该字段为 0 或省略) 显式:须在请求中传 prompt_cache_key 提高命中;命中与否由服务端决定 缓存块 = 64 tokenscached_tokens 恒为 64 的倍数;<64 token 无命中 https://docs.mistral.ai/studio/conversations/advanced/prompt-caching
AWS Bedrock 透传Claude 系用 cachePointsystem/tools 内Amazon Nova 自动缓存 usage(原生透传 Anthropic 的 cacheReadInputTokens/cacheCreationInputTokensconverse 返回 usage.cacheReadInputTokensSDK 中为 usage_metadata cacheCreationInputTokens 显式cachePoint/ Nova 自动 Claude 按模型(同 AnthropicNova 最高 20K tokens https://aws.amazon.com/blogs/machine-learning/effectively-use-prompt-caching-on-amazon-bedrock
Azure OpenAI 透传:与 OpenAI 字段一致prompt caching Chat Completionsusage.prompt_tokens_details.cached_tokensResponses APIusage.input_tokens_details.cached_tokens usage.prompt_tokens_details.cache_write_tokensGPT-5.6+ 自动GPT-5.6+ 支持 breakpoint / prompt_cache_key 最低 1024 tokens前 1024 必须完全一致 https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/prompt-caching

一句话结论:五家海外官方 API 中OpenAI / xAI / Mistral / Gemini 用「自动或半自动 + cached_tokens 类字段」Anthropic 用「显式 cache_control + read/write 双字段」。唯一同时提供「命中 + 写入」双向拆分的官方原生字段是 Anthropiccache_read_input_tokens / cache_creation_input_tokens)与 OpenAI GPT-5.6+ / Responses APIcached_tokens / cache_write_tokens)。


2. 各家详细信息

2.1 OpenAIChat Completions API + Responses API

官方文档https://platform.openai.com/docs/guides/prompt-caching2026-08 抓取,官方文档原文;历史公告 https://openai.com/index/api-prompt-caching 作辅助)

1) 是否支持 / 自动或显式

  • 支持,默认自动启用implicit caching无需改代码。
  • GPT-5.6 及更新模型支持显式缓存断点prompt_cache_options.mode: "explicit" + 块上 prompt_cache_breakpoint: {"mode":"explicit"})与 prompt_cache_key(影响路由、帮助同前缀请求命中同一台机器)。
  • 更早模型仅有隐式缓存,断点由 OpenAI 按模型间隔自动放置。

2) 命中字段完整 JSON 路径

  • Chat Completions APIusage.prompt_tokens_details.cached_tokens
  • Responses APIusage.input_tokens_details.cached_tokens
  • 官方文档定价示例Responses API 用法,摘自官方 docs 原文):
// Responses API官方文档 "Request 1 · Response usage"
{
  "usage": {
    "input_tokens": 12000,
    "input_tokens_details": {
      "cached_tokens": 0,
      "cache_write_tokens": 12000
    }
  }
}
// 第二次请求命中:
{
  "usage": {
    "input_tokens": 15000,
    "input_tokens_details": {
      "cached_tokens": 12000,
      "cache_write_tokens": 3000
    }
  }
}
  • Chat Completions经典格式官方社区/公告示例):usage.prompt_tokens_details.cached_tokens
{
  "usage": {
    "prompt_tokens": 1253,
    "completion_tokens": 72,
    "total_tokens": 1325,
    "prompt_tokens_details": {
      "cached_tokens": 1024
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0
    }
  }
}

3) 缓存写入/创建字段

  • Responses API usage.input_tokens_details.cache_write_tokensChat Completions usage.prompt_tokens_details.cache_write_tokensGPT-5.6+ 上报;更早模型不计写入费、也不上报该字段)。
  • 注:官方 docs 的成本计算示例同时读取 cached_tokenscache_write_tokens 计算输入成本。

4) 流式响应stream=true

  • Chat Completionsusage含 cached_tokens只在最后一个 chunk 返回,且必须设置 stream_options: {"include_usage": true},否则流式响应不含 usage。
  • Responses API流式下 usage 在 response.completed 事件中携带,字段路径不变。
  • 字段路径在流式与批式下完全一致

5) 最低门槛

  • 历史2024-10 公告GPT-4o/o1 时代):≥1024 tokens 自动缓存,命中按 128 tokens 递增1024/1152/1280/1408…缓存通常 510 分钟无活动后清除、最长 1 小时。
  • 当前官方文档2026-08GPT-5.6 及以后 = 1024 visible tokensGPT-5.5 及更早 = 2048 visible tokens个别老模型可更短GPT-5.6 不再按 128 取整(精确到缓存断点),旧模型上报时向下取整到 128 倍数。

6) 计费折扣

  • 历史模型:命中 token 打 5 折50% off
  • 当前GPT-5.6+ 缓存读 0.1×、缓存写 1.25×(写一次 + 读一次 = 1.35× vs 不缓存 2×更早模型读价为模型相关折扣、写入不额外计费。

7) 注意事项

  • 缓存匹配的是「完整渲染前缀」model、tools、parallel_tool_calls、格式参数等任何相关设置变化都可能破坏前缀。
  • 命中不保证 100%(路由溢出、机器未持有缓存)。官方建议用 prompt_cache_key 提高路由一致性。
  • 实验时优先用 Responses API 的 input_tokens_details,或 Chat Completions 的 prompt_tokens_details;两处都要注意老模型字段可能为 null/缺省(cached_tokens 为 0 也算明确返回)。

2.2 Anthropic ClaudeMessages API

官方文档https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching platform.claude.com/docs/en/build-with-claude/prompt-caching 同源2026-08 抓取)

1) 是否支持 / 自动或显式

  • 支持,必须显式标记
    • 显式块级:在 system / tools / messages.content 块上加 "cache_control": {"type": "ephemeral"}(可加 "ttl": "1h" 延长到 1 小时)。
    • 自动断点:在请求顶层加一个 cache_control系统自动把断点放到最后一个可缓存块并随对话增长前移2026 新增的 automatic caching 模式)。
  • 断点最多 4 个;缓存前缀顺序 tools → system → messages。

2) 命中字段完整 JSON 路径

  • usage.cache_read_input_tokens(本次请求从缓存读取的 token 数)
  • usage.input_tokens(未命中、实际处理的 token 数)
  • 官方文档示例1 小时 TTL 输出):
{
  "usage": {
    "input_tokens": 2048,
    "cache_read_input_tokens": 1800,
    "cache_creation_input_tokens": 248,
    "output_tokens": 503,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 148,
      "ephemeral_1h_input_tokens": 100
    }
  }
}

3) 缓存写入/创建字段

  • 有:usage.cache_creation_input_tokens(写入缓存的新 token 数1 小时 TTL 时另有细分对象 usage.cache_creation.ephemeral_5m_input_tokens / ephemeral_1h_input_tokens(二者之和 = cache_creation_input_tokens

4) 流式响应stream=true

  • usage 在 message_start 事件message.usage 中(含 input_tokens / cache_creation_input_tokens / cache_read_input_tokensoutput_tokens 增量在 message_delta 事件。字段路径与批式一致。
  • 官方原文:"Monitor cache performance using these API response fields, within usage in the response (or message_start event if streaming)。"

5) 最低门槛(当前文档,按模型)

模型 最低可缓存 token 数
Claude Opus 5 / Fable 5 / Mythos 5 512
Claude Mythos Preview / Opus 4.7 2,048
Claude Opus 4.6 / 4.5 4,096
Claude Opus 4.8 / Sonnet 5 / Sonnet 4.6 / 4.5 / Opus 4.1 / Opus 4 / Sonnet 4 1,024
Claude Haiku 4.5 4,096
Claude Haiku 3.5 2,048
  • 历史经典值claude-3/3.5 时代Sonnet/Opus = 1024、Haiku = 2048。低于门槛即使打了 cache_control 也不会缓存、不报错,只会在 usage 里两个缓存字段都为 0。

6) 计费折扣

  • 缓存写5m TTL1.25× 基础输入价缓存写1h TTL2× 基础输入价;缓存读/刷新0.1× 基础输入价(约 90% 折扣)。

7) 注意事项

  • 命中要求前缀 100% 一致(一个字符差异即 miss缓存生命周期 5 分钟1h 可选),从请求开始计时。
  • 思考块thinking不能单独打 cache_control但可作为助手轮内容被缓存enabling/disabling web search、citations、effort 等设置会失效部分缓存。
  • 可用 max_tokens: 0 预热缓存(不产生输出)。
  • 官方提供 cache diagnostics 接口用于排查前缀差异。

2.3 Google GeminiGenerative Language API / Vertex AI

官方文档https://ai.google.dev/gemini-api/docs/generate-content/caching 与 REST 参考 https://ai.google.dev/api/generate-content2026-08 抓取)

1) 是否支持 / 自动或显式

  • 支持两种:
    • 隐式缓存Gemini 2.5 及更新模型默认自动启用,请求里什么都不用加。
    • 显式 Context Caching:用 cachedContents.create 创建 CachedContent 资源(含 model/contents/systemInstruction/ttl然后在 generateContent 请求传 cachedContent: "<cache 资源名>" 引用。可用 OpenAI 兼容库时在 extra_bodycached_content
  • Vertex AI 同样支持context caching字段名一致。

2) 命中字段完整 JSON 路径

  • RESTGenerateContentResponse.usageMetadata.cachedContentTokenCount
  • SDKsnake_casePython/Noderesponse.usage_metadata.cached_content_token_count
  • 细分字段:usageMetadata.cacheTokensDetails[](按 modality 的命中 token 明细)。
  • 官方 REST 参考中 UsageMetadata JSON节选
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [ { "modality": "...", "tokenCount": integer } ],
  "cacheTokensDetails": [ { "modality": "...", "tokenCount": integer } ],
  "candidatesTokensDetails": [ { "modality": "...", "tokenCount": integer } ]
}
  • 社区实测示例Gemini 2.5来源discuss.ai.google.dev等级=辅助):显式缓存命中时 cached_content_token_count=4115cache_tokens_details=[{modality:'TEXT', token_count:4115}]

3) 缓存写入/创建字段

  • usage 内没有缓存写入字段;「写入」体现在显式 CachedContent 资源的计费(按 token 数 × 存储时长 TTL 计费),资源元数据中有 usageMetadata.totalTokenCount。隐式缓存的写入由 Google 内部处理,不暴露字段。

4) 流式响应stream=true / streamGenerateContent

  • usageMetadata最后一个 chunk 返回REST streamGenerateContent 的末帧SDK 中亦在流结束的响应对象上)。当前官方文档没有为缓存命中另设流式事件,字段路径不变。
  • 社区有多起「流式末尾 usageMetadata 里 cachedContentTokenCount 缺失」的报告discuss.ai.google.dev等级=辅助,未 100% 确认为官方 bug实验时建议同时打印非流式结果对照。

5) 最低门槛

  • 隐式当前文档表Gemini 2.5 Flash / 2.5 Pro = 2,048 tokensGemini 3.x3.1 Pro Preview / 3.5 / 3.6 / 3.7 Flash= 4,096 tokens
  • 历史Google 官方博客 2025-052.5 Flash 曾 1,024、2.5 Pro 曾 2,048——阈值随版本调整以文档当前值为准。
  • 显式缓存:无 token 下限但资源有 TTL默认 1h可 300s 起),按 token×时间计费≥1 分钟 TTL。

6) 计费折扣

  • 隐式缓存命中按缓存价计费Gemini 2.5 起缓存输入约为基础价 10% 档;具体以官方定价页为准)。
  • 显式缓存:命中 token 折扣 90%2.5+ 模型)/ 75%2.0 模型),外加缓存存储费($/token·hour

7) 注意事项

  • 隐式缓存命中率不受控制、非保证显式缓存保证计费折扣但要多维护资源生命周期create/list/update/delete API
  • cachedContentTokenCount 只统计命中的 tokenpromptTokenCount 仍含全部输入;计算未命中部分 = promptTokenCount cachedContentTokenCount。
  • 实验时注意 SDK 属性名 snake_casecached_content_token_count)与 REST camelCasecachedContentTokenCount)的差异。

2.4 xAI Grok

官方文档https://docs.x.ai/developers/advanced-api-usage/prompt-cachingHow it works / Usage & Pricing / Best Practices & FAQ2026-08 抓取)

1) 是否支持 / 自动或显式

  • 支持,完全自动(按 messages 数组起始匹配前缀);建议设置 HTTP 头 x-grok-conv-id(或 Responses API 的 prompt_cache_key)提升命中率。
  • 无 cache_control 之类显式标记。

2) 命中字段完整 JSON 路径

  • Chat Completions APIusage.prompt_tokens_details.cached_tokens
  • Responses APIusage.input_tokens_details.cached_tokens
  • 官方示例Chat Completions
{
  "usage": {
    "prompt_tokens": 125,
    "completion_tokens": 48,
    "total_tokens": 173,
    "prompt_tokens_details": {
      "text_tokens": 125,
      "audio_tokens": 0,
      "image_tokens": 0,
      "cached_tokens": 98
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  }
}
  • 官方示例Responses APIusage.input_tokens_details.cached_tokens(路径同 OpenAI Responses API

3) 缓存写入/创建字段

  • 无。官方只暴露 cached_tokens≤0 表示 miss等于 prompt_tokens 表示整段命中)。

4) 流式响应stream=true

  • 官方 FAQ流式与非流式均支持缓存;流式下第一个空 token 对应缓存查找与 prefill 阶段。usage 聚合到最后一个 chunk沿用 OpenAI 风格,需 stream_options.include_usage)。字段路径不变。

5) 最低门槛

  • 官方文档未公布固定 token 门槛;机制按「消息前缀精确匹配」整段生效(示例中 3 条消息被整体缓存)。实验时建议让共享前缀 ≥ 数百 token 并保持多轮对话以观察命中增长。

6) 计费折扣

  • 缓存命中 token 按「cached prompt token 价」计费(低于常规输入价;具体比率见各模型定价页)。

7) 注意事项

  • 命中无保证(内存压力可驱逐缓存、请求可能路由到别的机器);换 x-grok-conv-id 可强制 miss便于对照实验。
  • 典型多轮turn1 cached=0建缓存→ turn2 cached=前 50 → turn3 cached=前 120官方示例

2.5 Mistral AI

官方文档https://docs.mistral.ai/studio/conversations/advanced/prompt-caching 与 API 参考 https://docs.mistral.ai/api/endpoint/chat2026-08 抓取)

1) 是否支持 / 自动或显式

  • 支持 prompt caching需在请求中显式传 prompt_cache_key(会话/工作流 ID来提升命中且请求体必须保留共享前缀多轮重发完整历史。命中与否由服务端决定key 不保证命中。
  • 接口格式 OpenAI 兼容(/v1/chat/completions

2) 命中字段完整 JSON 路径

  • usage.prompt_tokens_details.cached_tokens
  • 官方示例:
{
  "id": "a4db7c530548494f8ff9986bcd2a7737",
  "created": 1773840064,
  "model": "mistral-large-latest",
  "usage": {
    "prompt_tokens": 1013,
    "total_tokens": 1043,
    "completion_tokens": 30,
    "prompt_tokens_details": {
      "cached_tokens": 1008
    }
  },
  "object": "chat.completion"
}
  • 未命中时 cached_tokens 为 0 或字段被省略。

3) 缓存写入/创建字段

  • 无独立写入字段;计费侧「可收费未缓存输入 = prompt_tokens cached_tokens」。

4) 流式响应stream=true

  • 官方文档未单列流式差异API 与 OpenAI 兼容,流式下 usage含 cached_tokens在最后一个 chunk需 stream_options.include_usage 等开关)。实验时建议以「最后一个 chunk 的 usage」为准核对并用非流式对照等级基于兼容性推断官方未明示

5) 最低门槛

  • 缓存块 = 64 tokenscached_tokens 恒为 64 的倍数prompt < 64 tokens 不会命中;共享前缀越长可复用越多。

6) 计费折扣

  • 缓存命中 token 按标准输入价 10% 计费(官方原文)。

7) 注意事项

  • prompt_cache_key 不应包含密钥/敏感数据;变更 prompt 开头部分会导致 miss命中率可在 Admin Panel Usage 按模型查看。

2.6 AWS Bedrock / Azure OpenAI透传简述

AWS Bedrock

  • 透传方式Claude 系模型在 converse / invoke_model 请求的 system/tools 内放 {"cachePoint": {"type": "default"}} 标记缓存点Claude 平台另有 cache_control 等效写法Amazon Nova 模型则自动缓存(文本 prompt最多 20K tokens
  • 响应中透传 Anthropic 原样字段:usage.cacheReadInputTokens / usage.cacheCreationInputTokensREST/ SDK usage_metadatacache_read_input_tokens / cache_creation_input_tokensAWS 官方博客示例:
"usage": {
  "input_tokens": 10,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 37209,
  "output_tokens": 324
}

Azure OpenAI

  • 透传方式:与 OpenAI 同名请求结构与字段,模型名改为 Azure 部署名。
  • 命中字段Chat Completions usage.prompt_tokens_details.cached_tokensResponses API usage.input_tokens_details.cached_tokensGPT-5.6+ 另有 usage.prompt_tokens_details.cache_write_tokens
  • 门槛:≥1024 tokens 且前 1024 tokens 完全一致GPT-5.5 及更早按 128 递增取整GPT-5.6+ 不取整默认自动启用GPT-5.6+ 支持 prompt_cache_key / prompt_cache_options.mode / prompt_cache_breakpointprompt_cache_options.ttl="30m"
  • 官方示例:
{
  "usage": {
    "prompt_tokens": 1566,
    "completion_tokens": 1518,
    "total_tokens": 3084,
    "prompt_tokens_details": {
      "audio_tokens": null,
      "cached_tokens": 1408,
      "cache_write_tokens": 0
    },
    "completion_tokens_details": { "audio_tokens": null, "reasoning_tokens": 576 }
  }
}

3. 实验建议(按供应商)

通用思路:连续发两条「共享固定前缀 + 不同后缀」的请求,记录第 1 次(写入/未命中)与第 2 次(命中)的 usage 字段;前缀长度务必超出各家门槛;两次请求间隔须在缓存 TTL 内。

OpenAI

  • 构造:固定 system/developer 指令≥1024 tokens建议 2000+)放最前 + 每次变化的 user 后缀;两次请求只改后缀。
  • 读取字段Chat Completions usage.prompt_tokens_details.cached_tokensResponses API usage.input_tokens_details.cached_tokensGPT-5.6+ 可同时看 cache_write_tokens/cache_read 0.1× 计费)。
  • 断言:第 2 次请求 cached_tokens > 0(且应为前缀长度附近,老模型按 128 取整)。
  • 流式:必须 stream_options: {"include_usage": true},取最后一个 chunk 的 usage。
  • 建议同时打印完整 usage 对象,防止 SDK 解包时字段为 None。

Anthropic Claude

  • 构造system 数组放长文本(≥对应模型门槛,如 Sonnet 4.5/5 = 1024Haiku 4.5 = 4096块尾加 "cache_control": {"type": "ephemeral"};连续发两条相同前缀请求。
  • 读取字段:usage.cache_read_input_tokens(命中)与 usage.cache_creation_input_tokens(首次写入);input_tokens 为未命中部分。
  • 断言:第 1 次 cache_creation_input_tokens ≈ 前缀长、第 2 次 cache_read_input_tokens ≈ 前缀长;两次都在 5 分钟(默认 TTL内。
  • 流式:读 message_start 事件的 message.usage
  • 额外可试:max_tokens: 0 预热 + 顶层 cache_controlautomatic caching两种模式各跑一轮。

Google Gemini

  • 构造:
    • 隐式:长 system_instruction / 长首条 user 消息≥2048 tokensGemini 2.5≥4096 若用 3.x连续请求、保持前缀不变。
    • 显式:先 cachedContents.createmodel + contents + ttl如 300s~1h再 generateContent 传 cachedContent,用于对照验证。
  • 读取字段:response.usage_metadata.cached_content_token_countREST 为 usageMetadata.cachedContentTokenCount);明细看 cache_tokens_details[]
  • 断言:显式缓存第 1 次 cached=0或写资源、之后 cached ≈ 缓存内容 token 数;隐式缓存命中需 ≥ 门槛且不保证,多试几轮或调高峰时段。
  • 流式:取流末尾 chunk 的 usageMetadata 核对;若缺失可与非流式对照。
  • 注意promptTokenCount 含缓存 token未命中部分 = promptTokenCount cachedContentTokenCount。

xAI Grok

  • 构造:固定 system + 固定历史轮次 + 变化的最新 user 消息;设置 x-grok-conv-idChat Completionsprompt_cache_keyResponses API保持一致。
  • 读取字段Chat Completions usage.prompt_tokens_details.cached_tokensResponses API usage.input_tokens_details.cached_tokens
  • 断言:多轮递增 —— turn1 cached=0 → turn2 cached=前几轮总 token → turn3 更大;若一直为 0改用不同/省略 conv-id 强制 miss 对照已验证机制。
  • 流式:可观察第一个空 tokenprefillusage 取最后 chunk。

Mistral AI

  • 构造:固定 system + 历史 + 变化的最后 user 消息,每条请求都传相同 prompt_cache_key(如会话 ID并完整重发前缀;前缀建议 ≥128 tokens至少 2 个 64 块)以便观察倍数。
  • 读取字段:usage.prompt_tokens_details.cached_tokens
  • 断言:第 2 次 cached_tokens > 0 且为 64 的倍数;未命中时为 0 或字段缺失。计费未缓存输入 = prompt_tokens cached_tokens10% 折扣)。
  • 流式:取最后一个 chunk 的 usage必要时非流式对照。

AWS Bedrock / Azure OpenAI顺带

  • BedrockClaudesystem 里加 {"cachePoint": {"type": "default"}},看 usage.cacheReadInputTokens / cacheCreationInputTokens 增减。
  • Azure OpenAI与 OpenAI 实验相同≥1024 tokens、前缀不动usage.prompt_tokens_details.cached_tokens 与 GPT-5.6+ 的 cache_write_tokens

附:信息来源与等级

内容 来源 等级
OpenAI 全部字段/门槛/计费 platform.openai.com/docs/guides/prompt-caching官方2026-08 抓取) 官方文档
OpenAI 历史 1024/128 递增/5 折 openai.com/index/api-prompt-caching官方公告 官方发布
Anthropic 全部字段/门槛/计费/流式 docs.anthropic.com= platform.claude.comprompt-caching官方2026-08 抓取) 官方文档
Gemini 隐式/显式/门槛 ai.google.dev/gemini-api/docs/generate-content/caching、ai.google.dev/api/generate-content官方 官方文档
Gemini usageMetadata JSON ai.google.dev/api/generate-content官方 REST 参考) 官方文档
Gemini 2.5 隐式缓存历史阈值 developers.googleblog.comGoogle 官方博客) 官方发布(辅助)
Gemini 流式/字段缺失现象 discuss.ai.google.dev 社区帖 第三方(辅助)
xAI 全部字段/机制/流式 FAQ docs.x.ai/developers/advanced-api-usage/prompt-caching官方2026-08 抓取) 官方文档
Mistral 全部字段/64 块/10% 计费 docs.mistral.ai/studio/conversations/advanced/prompt-caching、docs.mistral.ai/api/endpoint/chat官方 官方文档
Bedrock cachePoint/usage 透传 aws.amazon.com 官方博客 + AWS re:Post + Portkey 文档 官方博客/第三方辅助
Azure OpenAI 字段/门槛 learn.microsoft.com微软官方 官方文档

提示:以上信息抓取于 2026-08-29部分字段/门槛随时间迭代(如 Gemini 阈值、Anthropic 门槛、OpenAI GPT-5.6 行为改动)。实验前建议按本报告给出的官方链接复核最新值;凡第三方转述均已在文中标注「等级=辅助」。