[BUG] total_tokens omits cache reads and writes on the native Anthropic provider

该问题出现在 CrewAI 使用原生 Anthropic Provider(而非 LiteLLM 路由)且模型启用 Prompt Caching 时,`total_tokens` 没有计入 `cache_read_input_tokens` 与 `cache_creation_input_token

快速结论:该问题出现在 CrewAI 使用原生 Anthropic Provider(而非 LiteLLM 路由)且模型启用 Prompt Caching 时,`total_tokens` 没有计入 `cache_read_input_tokens` 与 `cache_creation_input_tokens`,导致上报的 Token 总量远低于实际消耗。优先排查:确认你当前走的是不是原生 Anthropic Provider,并检查调用中是否发生了 Cache 命中。

适用环境:CrewAI(Issue 读取自 2026-08-03 的 main 分支);原生 Anthropic Provider(`llm.py:478` 中 `is_litellm=False` 路径);anthropic-sdk 0.120.2;Anthropic 模型 `claude-haiku-4-5`。Issue 未涉及操作系统、CUDA、显卡等,故不列出。

最快修复方案:暂无确认的一步修复方案。Issue 最终被维护者关闭,并标记为重复 Issue #6768,因此需要跟踪 #6768 的修复进展。如果你依赖 `total_tokens` 做成本估算或评估指标,可优先尝试自行从 `cache_creation_tokens`、`cached_prompt_tokens` 字段补偿统计。

注意事项:维护者明确表示倾向保留 `input_tokens + output_tokens` 的 `total_tokens` 计算方式,并未承诺立即修改代码;同时原生 Provider 与 LiteLLM 路由在相同流量下报告不同 `total_tokens` 是当前已知行为,任何下游统计都需要意识到该偏差。

问题场景

在 CrewAI 中配置 Crew / Agent / Task 使用原生 Anthropic Provider,并且模型命中 Prompt Cache 时,`UsageMetrics.total_tokens` 只统计了未命中缓存的

参考来源

crewAIInc/crewAI #6788

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18309

发表回复

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