issue: workspace model entry with base_model_id set to its own id is dropped at merge, so its settings never apply

这是 Workspace 模型条目在合并时被丢弃导致的配置不生效问题。核心原因是自定义模型条目的 base_model_id 被错误设置成了它自己的 id(或任意非空值),导致该条目在模型列表合并时被丢弃,所有元数据设置(如禁用内置工具)从未被应用。优先排查 base_model_id 字段值。

快速结论:这是 Workspace 模型条目在合并时被丢弃导致的配置不生效问题。核心原因是自定义模型条目的 base_model_id 被错误设置成了它自己的 id(或任意非空值),导致该条目在模型列表合并时被丢弃,所有元数据设置(如禁用内置工具)从未被应用。优先排查 base_model_id 字段值。

适用环境:Open WebUI v0.11.0(pip venv 安装,非 Docker),后端为 Ollama + llama3.2:3b,SQLite 后端,单实例无 Redis,WEBUI_AUTH=false

最快修复方案:已确认的修复方案:重新通过 POST /api/v1/models/model/update 发送相同更新,但将 base_model_id 显式设为 null。编辑模型时通过“Admin Settings > Models”路径操作,该路径会自动写入 null。

注意事项:只有当条目是对同 id 基础模型的覆盖(override)时,base_model_id 才必须为 null。若条目确实是基于不同基础模型的新模型,则不应设置为其自身 id;任何非 null 值都会导致与基础模型 id 冲突时条目被丢弃。这与 Issue #26823 是同一类问题。

问题场景

用户在 Open WebUI(v0.11.0)中通过 API 请求创建或编辑自定义模型条目(例如 llama3.2:3b),并尝试通过 meta.capabilities.builtin_tools: falsemeta.builtinTools.knowledge: false 禁用内置知识工具。配置已成功持久化到 SQLite 的 model 表,但实际请求时工具仍被注入并调用——即使重启服务进程后问题依旧。

报错原文

issue: workspace model entry with base_model_id set to its own id is dropped at merge, so its settings never apply

实际运行中无显式报错,但日志/请求观察显示:

search_knowledge_files is still offered to and called by the model on effectively every "tell me about X" style prompt, with an empty (0-item) knowledge base

原因分析

已确认原因:模型条目中的 base_model_id 被设置为其自身的 id(例如 "base_model_id": "llama3.2:3b")。当条目是对基础模型的覆盖且 id 相同时,base_model_id 必须为 null。任何非 null 值都会使该条目被识别为“基于其他基础模型的新模型”,导致在合并模型列表时,因 id 与已有基础模型冲突而被丢弃。因此该条目从未进入 app.state.MODELS,其所有设置(包括禁用内置工具)在请求时均不生效。重启进程无济于事,因为每次重建模型列表时该条目都会被再次丢弃。

Issue 中同时提到的 ollama.base_urls 配置被忽略问题被确认为无关,原因是配置键存储为扁平单层结构,不存在共享缓存;忽略的配置值可能是写入了一个没有代码读取的键。

环境排查

  • Open WebUI 版本:v0.11.0(pip install open-webui
  • 后端推理服务:Ollama(原生工具调用,模型 llama3.2:3b
  • 数据库:SQLite 单实例(webui.db),无 Redis
  • 认证模式:WEBUI_AUTH=false
  • 排查优先级:先确认模型条目中 base_model_id 的实际取值,再排查是否有孤立 uvicorn worker 残留(pip venv 安装时可能出现)

解决步骤

  1. 核对模型条目配置:通过 SQLite 查询确认问题条目的 base_model_id 字段:
    sqlite3 webui.db "SELECT base_model_id, meta FROM model WHERE id='llama3.2:3b';"
  2. 修正 base_model_id若该条目是对同 id 基础模型的覆盖(override),将该值改为 null,并重新发送更新请求:
    {
      "id": "llama3.2:3b",
      "base_model_id": null,
      "name": "llama3.2:3b",
      "params": {"num_thread": 8, "num_ctx": 8192, "function_calling": "native"},
      "meta": {
        "capabilities": {"builtin_tools": false},
        "builtinTools": {"knowledge": false}
      },
      "access_grants": [],
      "is_active": true
    }
  3. 若使用管理界面编辑:直接通过 Admin Settings > Models 编辑该模型。该路径会自动将基础模型覆盖的 base_model_id 写为 null。
  4. 检查残留进程(可优先尝试):若修改后仍不生效,执行 ps aux | grep -i open-webui,确认重启后没有残留的 uvicorn worker 进程持有旧状态;如有残留,手动 kill 后重新启动服务。
  5. 重新验证:完成上述修改后,重启服务(或冷启动),发起新对话并提问,观察是否仍有内置工具调用。

验证方法

修改 base_model_id 为 null 后,确认 sqlite3 webui.db "SELECT base_model_id FROM model WHERE id='llama3.2:3b';" 返回 null(或空)。随后发起新对话并提出原测试问题(如“Tell me a random fun fact about the Roman Empire”),观察是否不再出现 “View Result from search_knowledge_files” 工具调用气泡,且请求的 prompt token 计数不再包含工具 schema 部分。

参考来源

open-webui/open-webui #28923

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19812

发表回复

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