issue: local 9.7B model never calls the search_web tool in Native function calling mode

在 Native Function Calling 模式下,Open WebUI 不会像旧版那样自动替你执行搜索并把结果注入模型。模型本身必须自主判断并调用 search_web 工具。如果模型能力不足(例如本地 9.7B 小模型),它可能编造 google_search 之类的工具名,或干脆不用搜

快速结论:在 Native Function Calling 模式下,Open WebUI 不会像旧版那样自动替你执行搜索并把结果注入模型。模型本身必须自主判断并调用 search_web 工具。如果模型能力不足(例如本地 9.7B 小模型),它可能编造 google_search 之类的工具名,或干脆不用搜索。优先排查模型是否已勾选 Web Search 能力,并确认模型尺寸是否达到 Agentic Search 的门槛。

适用环境:Docker 部署 Open WebUI v0.11.3(ghcr.io/open-webui/open-webui:main),Ollama v0.32.6,Qwen3.5 9.7B 本地模型,SearXNG 搜索引擎,CachyOS,Firefox 155.0 x64。

最快修复方案:暂无“一键”修复方案。Issue 维护者确认:在 Native Function Calling 模式下,模型必须自行调用搜索工具,Open WebUI 不会代为搜索并注入结果。对于 9.7B 这类小模型,官方建议改为 Legacy Function Calling 以恢复旧版行为(搜索自动执行并将结果注入模型),或改用能力更强的大模型。

注意事项:“让模型列出可用工具”本身不能作为排障依据——模型经常列错。报错 Error: Tool "google_search" not found. 反而说明工具列表已成功下发,只是模型编造了不存在的工具名。另需确认模型设置中 Web Search 能力已启用且未在“Default Features”默认功能中关闭。

问题场景

用户通过 Docker 运行 Open WebUI v0.11.3,宿主机运行 Ollama 和 Qwen3.5 9.7B 模型。Open WebUI 已启用 Web Search 并配置 SearXNG(容器内 curl 已验证可正常返回 JSON),同时开启了 Native Function Calling。在普通聊天中选择该模型并询问“当前柏林天气”时,模型不执行任何网页搜索;主动要求搜索时,模型有时声称没有搜索工具,有时会尝试调用不存在的 google_search,从而报错。

报错原文

Error: Tool "google_search" not found.

issue: local 9.7B model never calls the search_web tool in Native function calling mode

原因分析

核心分歧在于 Native Function Calling 的工作机制。维护者明确说明:在 Native 模式下,模型必须自己决定何时调用搜索工具,Open WebUI 不会代跑搜索。用户遇到的三种表现(完全不搜、声称无工具、编造 google_search)都能被“9.7B 小模型指令遵循能力不足”解释——模型可能没认识到应该搜索,或即便意识到也编造了工具名。

可能原因 1:Native Function Calling 模式下,模型收到的工具列表实际上没问题(报错说明列表已送达)。根因在模型自身:9.7B 参数规模远低于 Open WebUI 官方文档规定的 Agentic Search 最低模型门槛,该模式需要模型在长上下文中稳定判断“何时调用哪个工具”。

可能原因 2:模型的 Web Search 能力开关未开启,或“Default Features”里的 Web Search 处于未勾选状态,导致 Native 模式下工具根本没有注入。此原因未能从 Issue 正文排除——用户未提供模型配置面板截图。

可能原因 3:Legacy/Native 模式差异未被告知。用户可能误以为 Web Search 开启后,Open WebUI 会像老版本那样自动搜索并把结果拼接到提示词中,但 Native 模式下这一自动注入流程已被移除。

环境排查

  • Open WebUI 版本:v0.11.3(Docker,ghcr.io/open-webui/open-webui:main
  • Ollama:v0.32.6(pacman 最新)
  • 模型:qwen3.5:latest(9.7B 本地模型)
  • 搜索引擎:SearXNG(已从容器内验证可达且返回有效 JSON)
  • 操作系统:CachyOS;浏览器:Firefox 155.0 x64
  • 需在模型“高级设置”中确认:Function Calling 模式为 Native 还是 Legacy;Web Search 能力是否勾选;“Default Features”默认功能中 Web Search 是否勾选。
  • 需核对本地模型参数规模是否达到 Agentic Search 官方文档 给出的建议门槛(9.7B 被维护者评论为“well below”明显不足)。

解决步骤

  1. 验证工具是否正常下发(可选):向模型追问“你现在有哪些工具可用”。若模型因幻觉编造出不存在的工具名(如 google_search),这反而证明工具列表已到达模型侧,问题不在 Open WebUI 的注入逻辑。
  2. 方法 A(可优先尝试):切换为 Legacy Function Calling。在选定 qwen3.5 模型的“高级参数”中,将 Function Calling 从 Native 改为 Legacy。该模式会恢复旧行为:Open WebUI 自动执行搜索并将结果注入模型上下文,不依赖模型自主调工具的能力。此方案为维护者明确提出的选项之一。
  3. 方法 B:换用能力更强的模型。如果必须使用 Native Function Calling(例如需要模型自行决定多工具调用顺序),请改用指令遵循能力更强的大模型,或按 Open WebUI Agentic Search 文档中给出的最低要求选择模型规模。
  4. 检查模型 Web Search 功能开关:确认该模型在 Open WebUI 中已勾选“Web Search”能力,同时检查“Default Features”中 Web Search 未被全局关闭。若开关未开启,即使切换到 Legacy 模式工具也可能不注入。
  5. 不要用“问模型有没有工具”来判断故障。模型列表回答不可靠,不能作为结论依据。

验证方法

切换为 Legacy Function Calling 后,在同一聊天中询问“What is the current weather in Berlin today?”(或任意需要实时信息的问题),观察模型回答中是否包含 SearXNG 返回的网页摘要或链接。若回答中出现搜索来源内容,说明搜索流程已走通。若仍需保持 Native 模式,可换大模型后重复该问题,正常时应看到 Open WebUI 界面出现工具调用记录(如 search_web 被触发)。

同时可用 SearXNG 的访问日志或 Open WebUI 容器内 docker exec open-webui curl -s 'http://searxng-core:8080/search?q=test&format=json' 确认搜索后端在切换后是否收到来自聊天会话的查询请求——这是验证搜索是否真正触发的最直接证据。

参考来源

open-webui/open-webui #29714:issue: local 9.7B model never calls the search_web tool in Native function calling mode
另可参考 Issue 中维护者引用的 Agentic Search 文档:Open WebUI Agentic Search

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22011

发表回复

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