issue: search_web tool call intermittently fails with JSON delimiter error when query contains quoted phrases

当模型通过 call_tool 调用 search_web,且查询串里带引号短语时,模型把内层引号转义成了 "" 而不是 \" ,导致 params 字符串不是合法 JSON,工具调用在解析阶段失败。优先排查模型输出的 tool-call 参数本身是否合法。

快速结论:当模型通过 call_tool 调用 search_web,且查询串里带引号短语时,模型把内层引号转义成了 "" 而不是 \",导致 params 字符串不是合法 JSON,工具调用在解析阶段失败。优先排查模型输出的 tool-call 参数本身是否合法。

适用环境:Open WebUI v0.12.3(Docker 安装);操作系统 Windows 11;web_search 使用 Jina AI 作为 provider;模型为 GPT6 Luna,开启 reasoning。Issue 未提供 Python、CUDA、显卡、Ollama 版本信息。

最快修复方案:暂无确认的一步修复方案。Issue 中已由维护者合并的兼容性改动位于 dev 分支提交 d878373,随下一个版本发布;升级到包含该提交的版本后可优先尝试。

注意事项:该兼容解析会丢弃模型没有合法转义的短语引号,因此检索时引号短语约束可能失效。根因在模型输出侧而非 Open WebUI 参数结构本身,升级后仍需观察是否复现;若仍失败,应带上模型实际发送的 params 值重新反馈。

问题场景

用户在 Open WebUI v0.12.3 中开启 reasoning,由 GPT6 Luna 发起多轮工具调用流程(search_tools、view_skill、search_web、call_tool、fetch_url)。当模型生成的 search_web 查询包含引号短语(例如在 site:support.brother.com 后拼接 "Create a Self-signed Certificate" 之类的短语)时,call_tool 在解析 params 字符串时间歇性失败,该次 search_web 不会被执行。

报错原文

Expecting ',' delimiter: line 1 column 37 (char 36)

{"query":"site:support.brother.com ""Create a Self-signed Certificate"" Brother ""Common Name"""}

原因分析

维护者已确认根因在模型输出:call_tool 的 arguments 会把目标工具的参数作为一段 JSON 字符串传递,而模型把内层引号写成了 "",而不是合法转义 \"。这样该字符串本身就是非法 JSON,v0.12.3 的解析器会直接拒绝并抛出上述解析错误。也就是说,报错出现在工具调用参数解析环节,而不是 search_web 搜索接口或 Jina AI provider 侧。

环境排查

  • 确认 Open WebUI 版本是否为 v0.12.3,或是否已包含 dev 分支提交 d878373 的更宽容参数解析。
  • 确认安装方式为 Docker,并核对实际运行的镜像/容器版本,避免升级了镜像但容器仍跑旧版本。
  • 确认 web_search provider 配置为 Jina AI。
  • 确认模型为 GPT6 Luna 且 reasoning 处于开启状态,便于复现条件一致。
  • 抓取失败调用时模型发送的原始 params 值,检查其中的引号是否被写成 ""。
  • Issue 未涉及 Python、PyTorch、CUDA、显卡或 Ollama 版本,这些项暂无需作为排查重点。

解决步骤

  1. 先定位失败调用:在对话中展开失败的那次 call_tool,查看其 params 字符串里是否出现未转义的双引号,如 ""Create a Self-signed Certificate""。
  2. 确认属于上述非法转义后,升级到包含提交 d878373 的 Open WebUI 版本(该改动在 dev 分支合入,随下一个正式版本发布)。若使用 Docker,升级后确认容器实际运行的是新版本。
  3. 升级后在本版本复测前,可按 Issue 中用户的临时做法,为模型追加系统提示,提升 tool-call 参数生成的可靠性。
  4. 若升级后仍复现,保留失败时模型实际发送的 params 值,回到原 Issue 补充反馈。

验证方法

用同样的场景重试带引号短语的 search_web 调用(如 site:support.brother.com 配合带引号的短语),确认不再出现 Expecting ',' delimiter 报错且 search_web 实际执行、返回结果。同时检查最终传入的 query 内容:新解析逻辑会丢弃未合法转义的引号,query 可能变成 site:support.brother.com Create a Self-signed Certificate Brother Common Name,属于预期行为。

参考来源

open-webui/open-webui #33868

相关修复提交:d878373

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33408

发表回复

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