![[Bug]: reasoning_effort='none' capability gate ignores base_model, returning 400 for Azure custom deployment names (Azure GPT-5)](https://www.chat-gpts.plus/wp-content/uploads/2026/07/31243-4671730e.jpg)
[Bug]: reasoning_effort=’none’ capability gate ignores base_model, returning 400 for Azure custom deployment names (Azure GPT-5)
快速结论:使用 Azure 自定义部署名称(如 azure/my-gpt5-2025-11-13)并设置 reasoning_effort='none' 时,LiteLLM 的 GPT-5 能力门控(capability gate)仅检查部署名字符串,而忽略了 base_model,导致即使基础模型支持 none 级别,请求仍被拒绝并返回 400。优先升级到 LiteLLM v1.87.0 或更高版本;v1.87.0 包含修复。
问题场景
用户运行 LiteLLM Proxy 或通过 Python SDK 调用 Azure OpenAI 自定义部署名称(如 model: azure/gpt-5.1_2025-11-13_global,并设置 base_model: azure/gpt-5.1)。当参数中包含 reasoning_effort='none' 时,请求被 LiteLLM 自身拒绝,而不是被 Azure 拒绝。
报错原文
litellm.UnsupportedParamsError: Azure OpenAI does not support reasoning_effort='none'
for this model. Supported values are: 'low', 'medium', and 'high'. To drop this
parameter, set `litellm.drop_params=True` or for proxy.
原因分析
核心原因是 PR #22953(首次引入于 v1.82.3)中添加的 supports_none_reasoning_effort 能力检查函数在内部调用 _supports_factory 时,仅根据原始部署字符串(如 azure/gpt-5.1_2025-11-13_global)去查询能力标志,完全没有引入 base_model 作为回退依据。完整的调用链:
get_optional_params(model: str, ...)→ AzureOpenAIGPT5Config.map_openai_params调用self._supports_reasoning_effort_level(model, "none")→ _supports_reasoning_effort_level调用_supports_factory→ _get_model_info_helper
由于部署名称不是标准模型别名(registry key),查找失败走 except → return False 路径,导致请求被拒绝。然而,Azure 端实际接受 reasoning_effort='none'(用户已有实证:通过 model_info: { supports_none_reasoning_effort: true } 覆盖后,请求正常返回 200)。此外,即便 base_model 被正确解析,model_prices_and_context_window.json 中也可能缺少部分 GPT-5 模型的 supports_none_reasoning_effort: true 标记(部分被设为 false),这也可能引发同类问题。
环境排查
- 确认 LiteLLM 版本:
litellm --version或 Python 中import litellm; print(litellm.__version__)。 - 确认是否使用自定义 Azure 部署名称(如包含日期后缀、
global等非标准名称)。 - 确认是否在
model_info中设置了base_model(例如litellm.completion(model="azure/deployment-name", base_model="azure/gpt-5.1", ...))。 - 如果可能,检查
model_prices_and_context_window.json中对应基础模型是否包含"supports_none_reasoning_effort": true。
解决步骤
- 首选方案:升级到 LiteLLM v1.87.0 或更高版本。 修复 PR #28490(注意 cherry-pick 进入 release 分支,标签可能错误指向 v1.91.0,但 v1.87.0 已包含此修复)改变了
get_optional_params的解析逻辑,使 Azure 能力门控会回退到base_model进行查询。 - 临时绕过方案(仅用于验证 Azure 端接受 none): 在模型配置中显式添加
model_info: { supports_none_reasoning_effort: true }。这可以绕过 LiteLLM 的检查,但不是一个长期稳定方案。 - 如果升级后问题仍然存在:
- 检查对应基础模型的 JSON 条目是否缺少
supports_none_reasoning_effort标志(可能原因:某些 GPT-5 模型别名在model_prices_and_context_window.json中没有正确设置该字段)。 - 如确认是 registry 条目缺失,请在 GitHub 上提交 Issue 或 pr 补充对应条目。
- 检查对应基础模型的 JSON 条目是否缺少
验证方法
在升级后,用自定义部署名称再次发送 reasoning_effort='none' 请求。应当成功返回响应(不抛出 400 / UnsupportedParamsError)。也可在代码中预通过 _supports_reasoning_effort_level(model="azure/deployment-name", level="none") 直接检查能力门控结果,应返回 True。



