[Bug]: Snowflake Claude provider drops cache_creation_input_tokens and cache_read_input_tokens from response usage

当你在 LiteLLM 中通过 snowflake/ 前缀调用 Claude 模型(例如 snowflake/claude-opus-4-5 )时,响应 usage 会丢失缓存字段,报错核心为 [Bug]: Snowflake Claude provider drops cache_creation

快速结论:当你在 LiteLLM 中通过 snowflake/ 前缀调用 Claude 模型(例如 snowflake/claude-opus-4-5)时,响应 usage 会丢失缓存字段,报错核心为 [Bug]: Snowflake Claude provider drops cache_creation_input_tokens and cache_read_input_tokens from response usage;应优先检查 LiteLLM 版本是否已包含对应修复。

适用环境:Issue 中确认的环境为 LiteLLM Python SDK v1.94.0,provider 使用 Snowflake,模型为 snowflake/claude-opus-4-5;未提供操作系统、Python、CUDA、显卡等信息。

最快修复方案:升级到包含 PR #39453 修复的 LiteLLM 版本;该 Issue 已标记为已解决,评论确认 “Has been fixed in #39453”。

注意事项:Issue 未给出具体修复版本号,需以实际安装的版本中包含 #39453 为准;升级前建议先在测试环境验证 Snowflake 代理响应中的缓存字段是否恢复。

问题场景

用户在 LiteLLM 中配置 Snowflake 作为 provider,并通过 LiteLLM proxy 调用 Snowflake 上的 Claude 模型(如 sf-claude-opus-4-5,对应 snowflake/claude-opus-4-5)。请求体中启用了 Anthropic 的 prompt caching(例如 cache_control: {"type": "ephemeral"})后,响应中的 usage 只包含 input_tokensoutput_tokens,缺失 cache_creation_input_tokenscache_read_input_tokens,导致无法统计缓存命中与缓存写入情况。

报错原文

[Bug]: Snowflake Claude provider drops cache_creation_input_tokens and cache_read_input_tokens from response usage

用户观察到的响应 usage 对比:

带缓存字段的响应:"usage":{"input_tokens":2,"output_tokens":256}

不带缓存字段的响应:{"input_tokens":2943,"output_tokens":256}

原因分析

根据 Issue 描述,问题出在 LiteLLM SDK 的 Snowflake provider 转换层。文件 litellm/llms/snowflake/chat/transformation.py 第 401-406 行的实现只从 usage_data 中提取 input_tokensoutput_tokens,并据此构造 Usage 对象,没有把响应中可能存在的 cache_creation_input_tokenscache_read_input_tokens 映射进去,因此这两个缓存字段在返回给调用方时被丢弃。用户明确指出该问题发生在 SDK 层,而不只是 proxy 层。

环境排查

  • 确认当前安装的 LiteLLM 版本,Issue 中复现版本为 v1.94.0。
  • 确认 provider 配置为 Snowflake,模型名类似 snowflake/claude-opus-4-5
  • 确认请求体中确实启用了 prompt caching,例如包含 cache_control 字段。
  • 确认问题发生在 SDK 调用还是 LiteLLM proxy 调用;Issue 作者反馈两者都涉及,但根因在 SDK。
  • 检查 litellm/llms/snowflake/chat/transformation.pyUsage 构造逻辑是否已包含缓存字段映射。
  • 操作系统、Python、CUDA、PyTorch、显卡等环境信息 Issue 未提供,无需额外确认。

解决步骤

  1. 先确认当前 LiteLLM 版本是否为 v1.94.0 或同样未包含修复的版本。
  2. 升级 LiteLLM 到包含 PR #39453 的版本;Issue 评论已确认 “Has been fixed in #39453”。
  3. 升级后重新发起带 cache_control 的 Snowflake Claude 请求,检查响应 usage 是否包含 cache_creation_input_tokenscache_read_input_tokens
  4. 如果暂时无法升级,可优先尝试在本地基于 transformation.pyUsage 构造逻辑补充这两个字段的映射;但这只是推测性绕过方案,Issue 中没有验证过后续兼容性,需自行评估维护成本。

验证方法

使用与 Issue 中相同的请求方式(LiteLLM proxy 或 SDK 直接调用)向 Snowflake Claude 模型发送带 cache_control 的请求,并检查响应 usage 对象中是否同时出现 cache_creation_input_tokenscache_read_input_tokens。如果这两个字段恢复且数值合理,说明问题已修复。

参考来源

BerriAI/litellm #35229

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24043

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注