Gemini 2.0 Flash Thinking window is wrong (1M, not 32k) and Bedrock provider resolves Claude 2.1 to 100k

这个报错通常发生在 CrewAI 中通过 LLM(...).get_context_window_size() 查询 Gemini 或 Bedrock 模型上下文窗口时,返回的数值与模型官方窗口不一致,优先排查 gemini-2.0-flash-thinking 的 32k 残留配置,以及 Bedr

快速结论:这个报错通常发生在 CrewAI 中通过 LLM(...).get_context_window_size() 查询 Gemini 或 Bedrock 模型上下文窗口时,返回的数值与模型官方窗口不一致,优先排查 gemini-2.0-flash-thinking 的 32k 残留配置,以及 Bedrock 表中是否缺少 anthropic.claude-v2:1 条目。

适用环境:Issue 中确认的环境为 CrewAI 主分支(commit 7a01af2),涉及 is_litellm=True 的 litellm 路径、Gemini 原生 provider 路径和 Bedrock 原生 provider 路径;评论中使用了 aws bedrock get-foundation-model 在 us-east-1、us-west-2、eu-west-1 进行验证。Issue 未提供 Python、CUDA、PyTorch、显卡或操作系统版本信息。

最快修复方案:暂无确认的一步修复方案。Issue 中讨论的修复方向包括修正 Gemini 2.0 Flash Thinking 的窗口值、调整 startswith 匹配顺序,以及为 Bedrock 补充或移除 anthropic.claude-v2* 条目,但均未在该 Issue 中确认最终落地。

注意事项:Bedrock 的 Claude 2.x 在 us-east-1 和 us-west-2 已被标记为 end-of-life,直接补上 200k 行可能仍不可用;同时 gemini-2.0-flash-thinking 的 32k 条目位于 gemini-2.0-flash 前缀之后,因 startswith 首次命中而实际不可达,改动表项时需同时关注匹配顺序。另有评论指出 Gemini 2.0 模型已 retired。

问题场景

用户在 CrewAI 中调用 LLM(model=...) 并读取 get_context_window_size() 时,发现同一个 gemini-2.0-flash-thinking-exp-01-21 在 litellm 路径和 Gemini 原生路径下返回的上下文窗口不一致;同时,使用 bedrock/anthropic.claude-v2:1 时返回的是 Claude 2.0 的 100k 窗口,而不是该模型 id 对应的 200k 窗口。

报错原文

# litellm path: returns 32768 * 0.85, expected 1048576 * 0.85
LLM(model="gemini-2.0-flash-thinking-exp-01-21", is_litellm=True).get_context_window_size()

# native gemini path: returns 1048576 * 0.85 (accidentally correct, table entry dead)
LLM(model="google/gemini-2.0-flash-thinking-exp-01-21").get_context_window_size()

# native bedrock path: returns 100000 * 0.85, expected 200000 * 0.85
LLM(model="bedrock/anthropic.claude-v2:1").get_context_window_size()

$ python repro.py
bedrock/anthropic.claude-v2:1 BedrockCompletion 85000 (ratio=0.85)
bedrock/anthropic.claude-v2 BedrockCompletion 85000 (ratio=0.85)

$ aws bedrock get-foundation-model --region us-east-1 --model-identifier anthropic.claude-v2:1
An error occurred (ResourceNotFoundException) when calling the GetFoundationModel operation:
This model version has reached the end of its life. Use an active model version instead.

原因分析

最可能的原因有三点:第一,LLM_CONTEXT_WINDOW_SIZES 和 Gemini 原生 provider 表中 gemini-2.0-flash-thinking 仍保留 32768,但这属于较早的 exp-1219 快照,exp-01-21 已提升到 1048576;第二,Gemini 原生 provider 的 "gemini-2.0-flash-thinking": 32768 排在 "gemini-2.0-flash": 1048576 之后,在首次命中的 startswith 循环中永远不会被匹配,导致该表项实际不可达;第三,Bedrock provider 表没有 anthropic.claude-v2:1 条目,因此 bedrock/anthropic.claude-v2:1 会通过 anthropic.claude-v2 前缀命中 Claude 2.0 的 100k,而不是 llm.py 共享表中给 :1 模型 id 的 200k。

环境排查

  • 确认 CrewAI 版本或 commit,Issue 中复现基于主分支 7a01af2。
  • 确认调用路径:使用 is_litellm=True 的 litellm 路径,还是 Gemini 原生 provider 路径。
  • 确认模型 id 写法:gemini-2.0-flash-thinking-exp-01-21 与 google/gemini-2.0-flash-thinking-exp-01-21 的解析路径不同。
  • 确认 Bedrock 模型 id:bedrock/anthropic.claude-v2:1 与 bedrock/anthropic.claude-v2 是否走同一前缀匹配。
  • 如使用 Bedrock,确认所在 region 中 Claude 2.x 是否仍可用;Issue 评论显示 us-east-1、us-west-2 返回 end-of-life,eu-west-1 返回 ValidationException: The provided model identifier is invalid。
  • Issue 未提供 Python、CUDA、PyTorch、显卡或依赖版本,无需强制核对这些项目。

解决步骤

  1. 先运行 Issue 中的三段复现代码,确认当前返回值:litellm 路径记为 32768 × ratio,Gemini 原生路径记为 1048576 × ratio,Bedrock 原生路径记为 100000 × ratio。
  2. 检查 LLM_CONTEXT_WINDOW_SIZES 中 gemini-2.0-flash-thinking-exp-01-21 的值,Issue 指出应为 1048576 而非 32768。
  3. 检查 Gemini 原生 provider 表中 gemini-2.0-flash-thinking 与 gemini-2.0-flash 的排列顺序,避免 startswith 首次命中把 thinking 模型解析为普通 flash 的前缀。
  4. 检查 Bedrock provider 表是否缺少 anthropic.claude-v2:1 条目,以及是否需要与 llm.py 共享表中 :1 模型 id 的 200k 保持一致。
  5. 在修改 Bedrock 条目之前,先用 aws bedrock get-foundation-model 和 aws bedrock list-foundation-models --region us-east-1 --by-provider Anthropic 确认 Claude 2.x 的实际可用状态;Issue 评论显示这些 id 已 end-of-life 或无效。
  6. 如果目标是清理已退役模型,可优先尝试按 #7340 的讨论移除 anthropic.claude-v2* 行,而不是新增 200k 行;该方向在 Issue 中只是建议,未被确认为最终修复。
  7. 涉及多个 PR 时注意冲突:Issue 评论提到 #7442、#7446 和 #7340 都会改动同一 Bedrock 表、llm.py 以及计划移入 llms/context_window.py 的 Gemini 表,后合并者需要处理冲突。

验证方法

重新运行 Issue 中的复现脚本,确认:litellm 路径下 gemini-2.0-flash-thinking-exp-01-21 返回 1048576 × 0.85;Gemini 原生路径返回与官方窗口一致的值;Bedrock 路径若仍保留 anthropic.claude-v2:1,应返回 200000 × 0.85,若决定移除该模型,则应确认不再命中旧的 100k 前缀。同时可用 aws bedrock get-foundation-model 验证 Bedrock 侧模型是否仍处于可用状态。

参考来源

crewAIInc/crewAI #7441

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26442

发表回复

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