快速结论:把 OpenAI 连接切换为 Responses API(API Type: Responses)后,Open WebUI 仍会在请求体顶层注入 reasoning_effort,导致 OpenAI 直接拒绝;优先排查请求体中是否残留该平铺参数,把它剥掉即可恢复。
适用环境:Open WebUI v0.11.0(Issue 报告版本);评论中另有用户使用 v0.12.0 复现;安装方式 Git Clone;系统 Ubuntu 24.04;浏览器 Chrome 150.0.7871.124;连接配置为 Admin → Connections → https://api.openai.com/v1 → API Type: Responses。
最快修复方案:Issue 评论中已验证的做法:在 Admin → Functions 新建一个 Filter 函数,用 Filter.request 在请求发出前执行 body.pop("reasoning_effort", None),然后启用该函数(并在设置中打开 global),在聊天中确认函数 chip 生效。
注意事项:该 Filter 只删除 reasoning_effort,不会补上 Responses API 需要的 reasoning.effort,因此如果模型或业务需要显式推理强度,相关效果会缺失;Filter.request 需要 v0.11.2 及以上版本(本 Issue 的 v0.11.0 可用 Filter.inlet 但可能不是每次请求都触发,一致性较差)。正文中提到的 OPENAI_API_PARAMS_OVERRIDE 尝试在 Issue 中未标记为已验证成功。
问题场景
用户在 Open WebUI 后台把 OpenAI 连接改为 Responses API(Admin → Connections → https://api.openai.com/v1 → API Type: Responses)后,直接向 GPT 系列模型发消息即触发报错;有用户是在刚完成 OpenAI API 连接配置后就立刻遇到,并在多个 GPT 模型上复现。触发场景还包括 GPT-5.6 系列(Sol、Terra、Luna)默认推理与函数工具并用,以及设置了 Reasoning Effort(包括设为 none 也无法绕过)的情况。
报错原文
Unsupported parameter: 'reasoning_effort'. In the Responses API, this parameter
has moved to 'reasoning.effort'. Try again with the new parameter.
See the API documentation for more information:
https://platform.openai.com/docs/api-reference/responses/create.
相关场景下 Chat Completions 侧的报错原文:
Function tools with reasoning_effort are not supported in /v1/chat/completions.
To use function tools, use /v1/responses or set reasoning_effort to 'none'.
原因分析
最可能的原因是:当 OpenAI 连接切到 Responses API 后,Open WebUI 仍按 Chat Completions 的扁平结构,把 reasoning_effort 作为顶层 key 写进发往 OpenAI 的 payload,例如 {"model": "gpt-5.6-terra", "reasoning_effort": "medium", ...}。Responses API 已把该参数迁移到嵌套对象 reasoning.effort,即期望 {"model": "gpt-5.6-terra", "reasoning": {"effort": "medium"}, ...},且不接受点号形式的 key,因此服务端直接拒绝该请求。该值可能由用户显式设置产生,也可能因先前的模型配置而被带出(包含非 null 值的情况)。
环境排查
- 确认 Open WebUI 版本(Issue 报告为 v0.11.0,评论复现为 v0.12.0);若要用
Filter.request,需 v0.11.2 及以上。 - 确认 OpenAI 连接配置:Admin → Connections 中 API 端点与 API Type(Responses)。
- 确认发往 OpenAI 的请求体中是否存在顶层
reasoning_effort,以及是否有非 null 值。 - 确认模型:是否使用 GPT-5.6 系列或其它会默认推理的模型。
- 确认是否同时启用了函数工具(function tools),这与推理参数组合会触发更严格的限制。
- 确认安装方式与运行环境(Git Clone、Ubuntu 24.04)与复现环境一致。
解决步骤
- 进入 Admin panel → Functions → Create,新建一个 Filter 函数。
- 把示例 Filter 类替换为以下代码,保存后退出回到 Functions 菜单:
""" title: Strip reasoning_effort from payload body for OpenAI API compatibility description: https://github.com/open-webui/open-webui/issues/28418 """ from typing import Optional class Filter: def __init__(self): self.toggle = True # This allows it to be turned on/off using the [integrations] menu in the chat def request(self, body: dict, __user__: Optional[dict] = None) -> dict: body.pop("reasoning_effort", None) # updated to avoid del return body - 在 Functions 菜单中打开该函数的开关(toggle)。
- 同时在该函数的小设置菜单中打开 “global”,否则在聊天中不可访问。
- 打开一个新聊天,确认出现该函数的 chip(评论中提供了未启用/已启用的对比截图)。
- 说明:
Filter.request在 v0.11.2 引入;v0.11.0 可优先尝试Filter.inlet,但评论指出它可能只应用一次而非每次请求,一致性可能较差。
验证方法
打开一个新聊天,确认函数 chip 已出现;发送消息后不再返回 Unsupported parameter: 'reasoning_effort' 报错即表示剥离生效。注意该修复只删除 reasoning_effort,并不会添加 reasoning.effort,因此可同时确认后续请求是否仍符合你的推理强度预期。
参考来源
Filter 文档:docs.openwebui.com — Filter request step
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


