AttributeError: ‘NoneType’ object has no attribute ‘split’` when using ddgs >= 9.x**

用户在 Open WebUI 中启用 Web 搜索功能,并将搜索引擎设置为 DuckDuckGo。执行任何需要联网搜索的对话任务时,DuckDuckGo 返回 "No results found" 或报出 AttributeError: 'NoneType' object has no attrib

AttributeError: 'NoneType' object has no attribute 'split'` when using ddgs >= 9.x**

AttributeError: ‘NoneType’ object has no attribute ‘split’` when using ddgs >= 9.x

快速结论:该错误通常发生在 Open WebUI 使用 DuckDuckGo 作为 Web 搜索后端,且 ddgs 库版本为 9.x 或以上时。优先排查 ddgs 版本以及 DuckDuckGo 后端是否能够正常响应,尝试降低 ddgs 版本或修改后端为 ‘auto’。

问题场景

用户在 Open WebUI 中启用 Web 搜索功能,并将搜索引擎设置为 DuckDuckGo。执行任何需要联网搜索的对话任务时,DuckDuckGo 返回 “No results found” 或报出 AttributeError: 'NoneType' object has no attribute 'split' 错误。即使已将 ddgs 更新至最新版本,问题依然存在。

报错原文

AttributeError: 'NoneType' object has no attribute 'split'

或日志中表现为:

DuckDuckGo returns "No results found"

原因分析

根据 Issue 讨论,根因是 DuckDuckGo 搜索后端会屏蔽来自 Open WebUI 的爬虫请求,返回 400 Bad Request,导致 ddgs 库无法解析响应,从而产生该属性错误。这是一个由服务端(DuckDuckGo)限制触发的兼容性问题,并非 Open WebUI 代码的逻辑错误。用户配置的 backend 参数(如 ‘duckduckgo’)被服务端拒绝后,ddgs 库未能正确 fallback 到其他后端(如 ‘brave’, ‘yandex’),引发异常。

环境排查

  • 确认 Open WebUI 版本(如 9.2 slim 或其他 9.x 版本)。
  • 确认 ddgs 库版本是否为最新(如 9.x 系列)。
  • 确认 Web 搜索配置中搜索引擎是否仅选用了 DuckDuckGo(而不是 ‘auto’ 或其他)。
  • 确认 Docker 容器的网络环境是否能正常访问 DuckDuckGo(部分地区或网络可能被限制)。
  • 检查 Open WebUI 的日志是否有 “400 Bad Request” 或类似网络错误提示。

解决步骤

  1. 尝试降低 ddgs 版本: 如果当前使用的是 ddgs >= 9.x,先降级到 8.x 或更早版本,旧版本可能使用不同的请求签名,暂时绕过服务端限制。
  2. 修改 backend 参数: 在 Open WebUI 的代码中,定位 duckduckgo.py 或相关搜索模块,将 backend 从固定的 'duckduckgo' 修改为 'auto',使 ddgs 库能够自动回退并使用其他备用后端(如 brave、yandex)。
  3. 配置回退链: 如果无法直接修改 Open WebUI 代码,可优先考虑将搜索后端切换到其他服务(如 Brave Search、SearXNG 或 Google),避免依赖 DuckDuckGo 单点。
  4. 检查网络/请求头: 若以上步骤无效,检查容器网络是否被限制,或考虑使用代理以变更请求的 Source IP / User-Agent。

验证方法

重新发起一次需要联网搜索的对话,确认 DuckDuckGo 后端不再返回 “No results found” 或抛 AttributeError。查看 Open WebUI 日志,搜索成功应有类似 Successfully retrieved N results with backend brave/yandex 的日志,确认已使用回退后端。

参考来源

open-webui/open-webui #24428

相关匹配 Issue #24188: AttributeError: ‘NoneType’ object has no attribute ‘split’` when using ddgs >= 9.x

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 9300

发表回复

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