bug: features.web_search keeps the previous model’s value after in-chat model switch

在聊天中切换模型后立即发送消息时,请求体里的 features.web_search 仍保留上一个模型的值(UI 上“地球”开关已点亮,但 payload 仍为 false )。优先排查前端 feature 状态是否在模型切换后被重新对齐。

快速结论:在聊天中切换模型后立即发送消息时,请求体里的 features.web_search 仍保留上一个模型的值(UI 上“地球”开关已点亮,但 payload 仍为 false)。优先排查前端 feature 状态是否在模型切换后被重新对齐。

适用环境:Open WebUI v0.11.13(Docker 安装);Ubuntu 26.04;浏览器 Brave 1.90.122;另一复现者报告在 v0.11.4 上仍可复现且每次都触发。Issue 未提供 Ollama、Python、CUDA、显卡信息。

最快修复方案:暂无确认的一步修复方案。可优先尝试:切换模型后新建对话或整页刷新,使默认 feature 重新初始化;或关注 PR #29500 的修复进展。

注意事项:该问题是 in-chat 模型切换这条代码路径,与 #29058 修复的 sidebar/New Chat 路径不同,升级到包含 #29058 的版本不会解决本问题。目前“新建对话或刷新页面”只是规避手段,不是根因修复。

问题场景

在 Open WebUI 中配置了两个模型:Model A(Default Features 中关闭 Web Search)设为默认模型,Model B(Default Features 中开启 Web Search)用于切换。用户点击 New Chat 后默认选中 Model A,再在 composer 内的模型选择器中切换到 Model B,随后输入并发送消息。此时 UI 上 Web Search 的“地球”开关显示为点亮状态,但发往 /api/chat/completions 的请求体中 features.web_search 仍为 false。同一请求中 features.code_interpreter 却为 true,两个来自同一 model.info.meta.defaultFeatureIds 的默认 feature 开关出现不一致。

报错原文

bug: features.web_search keeps the previous model's value after in-chat model switch

"features": {
  "web_search": false
}

Expected: "features": { "web_search": true }

原因分析

根据 Issue 中复现者的前端状态追踪,最可能的原因是 UI 显示与 payload 使用了两个不同的状态来源:UI 读取的是 webSearchEnabled,而 getFeatures() 发送的是单独派生的 webSearchActive。模型切换路径通过 resetInput() / setDefaults() 更新 webSearchEnabled,但这可能让 webSearchActive 保持陈旧状态,导致显示与请求体不一致。

另一位复现者指出,feature 状态在 chat 初始化时只被 seed 一次,之后任何模型变更都不会重新 seed。输入栏的开关会跟随新模型变化,因此显示和 payload 会在两个方向上都不一致。原报告描述为“间歇性”触发,但后续复现者表示在 v0.11.4 上每次都失败。

环境排查

  • 确认 Open WebUI 版本:Issue 原始环境为 v0.11.13,后续复现者报告 v0.11.4 仍存在。
  • 确认安装方式:Docker。
  • 确认浏览器:Brave 1.90.122;后续复现未说明浏览器,可在其他浏览器复测以排除前端缓存因素。
  • 确认模型配置:至少一个默认模型未开启 Web Search,另一个模型在 Default Features 中开启 Web Search。
  • 确认对比两个 feature:请求体中 web_search 与 code_interpreter 是否出现一个正确、一个错误的分歧。
  • Issue 未提供 Python、CUDA、PyTorch、显卡信息,无需据此排查。

解决步骤

  1. 在 composer 中切换到目标模型后,不要立即发送消息;先整页刷新或新建一个对话,让 feature 状态重新初始化。
  2. 若必须使用 in-chat 模型切换,切换后手动关闭再重新打开 Web Search 开关,使 UI 状态与内部状态同步,再进行发送。
  3. 打开浏览器开发者工具 Network 面板,发送消息并检查 /api/chat/completions 请求体中的 features.web_search 是否为期望值。
  4. 如果问题持续且需要根因修复,关注并跟踪 PR #29500 是否合并;该 PR 被指向本问题。
  5. 若使用包含 #29058 的版本,注意该修复针对的是 New Chat/sidebar-pinned 路径,不覆盖本问题描述的 in-chat 切换路径,需要分别验证。

验证方法

按复现步骤操作后,在浏览器开发者工具中查看 /api/chat/completions 请求体:当 Model B 的 Web Search 开关点亮时,features.web_search 应为 true,并且与 code_interpreter 的取值来源保持一致。同时确认 UI 上的开关状态与 payload 不再分歧。如果刷新页面后问题消失、切换后立即发送又出现,说明仍处于本问题的触发路径中。

参考来源

open-webui/open-webui #29326

关联参考:PR #29500、#29050、PR #29058、#14157

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27088

发表回复

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