Bug: @default endpoint suffix breaks adaptive thinking model classification

用户在 LiteLLM 中调用 Vertex AI(或其他类似提供商)上的 Anthropic Claude 模型时,使用 @default 后缀指定端点变体,例如 vertex_ai/claude-opus-4-8@default 。这些 @default 变体需要使用 adaptive thin

Bug: @default endpoint suffix breaks adaptive thinking model classification

# Bug: @default endpoint suffix breaks adaptive thinking model classification

Bug: @default endpoint suffix breaks adaptive thinking model classification

快速结论:该问题发生在 LiteLLM 调用 Vertex AI 等支持的 @default 后缀端点时,模型分类器无法识别 adaptive thinking API 要求,导致请求被 Vertex AI 以 HTTP 400 拒绝。最直接的排查方法是确认是否正在使用带 @default 后缀的模型名称。

问题场景

用户在 LiteLLM 中调用 Vertex AI(或其他类似提供商)上的 Anthropic Claude 模型时,使用 @default 后缀指定端点变体,例如 vertex_ai/claude-opus-4-8@default。这些 @default 变体需要使用 adaptive thinking API(thinking.type=adaptive + output_config.effort),但 LiteLLM 的 adaptive-thinking 模型分类器无法识别带后缀的名称。

报错原文

VertexAIException - thinking.type.enabled is not supported; use thinking.type.adaptive

此外,对于部分 provider 的 @default 模型不在模型成本映射表中时,reasoning_effort 会被静默忽略,导致 thinking_tokens=0

原因分析

LiteLLM 的 _is_adaptive_thinking_model 分类器依赖模型成本映射表(model cost map)来判断模型是否支持 adaptive thinking。模型成本查找辅助函数在搜索模型条目时会去除 provider 前缀(如 vertex_ai/),但没有去除版本后缀 @default(以及其他潜在的 @version 后缀)。因此,vertex_ai/claude-opus-4-8@default 产生的查找候选键为 claude-opus-4-8@default,而该键在模型成本映射表中不存在,返回 None,分类器错误地返回 False

环境排查

  • LiteLLM 版本(已知在 v1.89.3 确认触发,v1.90 对特定模型部分缓解,但根因仍在 v1.91.0 存在)
  • 是否使用 @default 后缀的模型名称
  • 使用的 provider(Vertex AI、Bedrock 等)
  • 模型成本映射表(model_cost)的版本
  • reasoning_effort 参数是否被按预期传递

解决步骤

  1. 确认你的模型名称中包含 @default 后缀,例如 vertex_ai/claude-opus-4-8@default
  2. 升级 LiteLLM 至包含修复的版本(参考 PR #31768 或 #30108)
  3. 如果你无法升级,可优先尝试以下变通方案:
    • 临时移除 @default 后缀,使用不带版本变体的标准模型名称(如果可用)
    • 在调用中显式设置 thinking.type=adaptive 和相关参数(如果不违反模型要求)
  4. 若修复版本可用,确认模型成本查找辅助函数已对 @version 后缀进行剥离处理
  5. 检查模型成本映射表中是否已有对应模型的 @default 变体条目(推荐维护者同时添加缺失条目)

验证方法

运行以下代码验证修复效果:
from litellm.llms.anthropic.common_utils import AnthropicModelInfo
AnthropicModelInfo._is_adaptive_thinking_model("vertex_ai/claude-opus-4-8@default")
预期输出:True
如果输出仍为 False,则问题未完全修复。此外,发送一次使用 reasoning_effort 的 completions 调用,确认不再出现 HTTP 400 错误且 thinking_tokens>0

参考来源

BerriAI/litellm #31760

相关 PR:

  • #31768 — 修复模型查找候选函数以剥离 @version 后缀并补充缺失的模型成本条目
  • #30108 — 相同的模型查找修复方案,额外添加基于模型名称的后备逻辑

相关重复 Issue:#30101

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 12528

发表回复

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