TypeError: ‘JSONResponse’ object is not subscriptable

用户在 Open WebUI v0.9.5 中配置了 SearXNG 作为网页搜索后端,搜索请求成功返回结果并在前端显示,但随后在“Querying”阶段失败,最终呈现“No sources found”且模型声称无法获取实时网络信息。该问题在 OpenAI GPT-5.5(通过 LiteLLM)和

TypeError: 'JSONResponse' object is not subscriptable

TypeError: ‘JSONResponse’ object is not subscriptable

快速结论:此报错在使用 Open WebUI 搭配 SearXNG 进行网页搜索时触发,搜索结果成功返回但后续处理阶段失败,最终显示“No sources found”。优先排查 SafeWebBaseLoader._fetch 中是否存在重复的 allow_redirects 关键字参数。

问题场景

用户在 Open WebUI v0.9.5 中配置了 SearXNG 作为网页搜索后端,搜索请求成功返回结果并在前端显示,但随后在“Querying”阶段失败,最终呈现“No sources found”且模型声称无法获取实时网络信息。该问题在 OpenAI GPT-5.5(通过 LiteLLM)和 OpenRouter 模型上均可复现。

报错原文

TypeError: 'JSONResponse' object is not subscriptable

原因分析

根据 Issue #25038 的分析,此问题可能由两个独立回归缺陷叠加导致:

  • SafeWebBaseLoader._fetch 中的重复参数:backend/open_webui/retrieval/web/utils.py(v0.9.5)中,__init__ 已将 allow_redirects 放入 requests_kwargs,而 _fetch 方法又将其作为显式关键字参数传递,导致 TypeError: aiohttp.client.ClientSession.get() got multiple values for keyword argument 'allow_redirects'。该异常被 _fetch_with_rate_limitcontinue_on_failure=True 吞没,仅输出警告日志。
  • JSONResponse 对象不可下标:chat_web_search_handler 中直接对 JSONResponse 对象进行下标操作,导致抛出 TypeError: 'JSONResponse' object is not subscriptable。此错误是搜索流程中断的另一种表现形式。

Issue 评论指出“No sources found”症状与 JSONResponse 报错是两条独立的回归缺陷;SafeWebBaseLoader 的重复参数问题至少导致了部分“No sources found”现象。

环境排查

  • Open WebUI 版本:v0.9.5(Docker 部署)
  • langchain-community 版本:0.4.1(在 v0.9.5 容器中)
  • LiteLLM 版本:v1.84.0(如使用)
  • SearXNG 版本:2026.5.7+130cea600(如使用)
  • Python 环境:容器内 Python 3.x(验证时需注意 aiohttp 版本)

解决步骤

  1. 确认问题日志:在 Docker 容器日志中搜索 Error fetching <url>, skipping,确认 URL 获取阶段存在异常。完整的 TypeError: aiohttp.client.ClientSession.get() got multiple values for keyword argument 'allow_redirects' 栈信息可直接确认根因。
  2. 修复 SafeWebBaseLoader._fetch 重复参数(可优先尝试):编辑 backend/open_webui/retrieval/web/utils.py,移除 _fetch 方法中重复的 allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS 参数,仅保留 requests_kwargs 中的配置。修改后需重启 Open WebUI 容器。
  3. 升级 Open WebUI:由于该问题在 v0.9.5 中由 SSRF 加固变更引入,建议升级到包含修复的版本(如 v0.9.6 或更高)。检查官方仓库的发布说明,确认 SafeWebBaseLoader 相关修复。
  4. 回退 langchain-community 版本(如可执行回滚操作):在自定义镜像中将 langchain-community 固定为 0.3.x 或更早版本以避开重复参数 bug,但此操作较为激进,推荐优先采用上述修复。

验证方法

执行以下任一操作确认修复已完成:

  • 在容器内运行 Python 脚本,测试 SafeWebBaseLoader._fetch 是否不再抛出重复参数异常(参见 Issue 评论中的 docker compose exec openwebui python -c "..." 测试代码)。
  • 重新触发网页搜索流程,观察 UI 是否正常显示搜索结果并注入模型上下文,不再出现“No sources found”。
  • 检查 Docker 容器日志,确认无 TypeError: aiohttp.client.ClientSession.get() got multiple values for keyword argument 'allow_redirects'TypeError: 'JSONResponse' object is not subscriptable 错误。

参考来源

open-webui/open-webui #25038

相关 Issue:#21509 ‘JSONResponse’ object is not subscriptable(同一底层回溯)

相关 Issue:#24916 Version 0.9.5 Web Search Not Working No source found(v0.9.5 同一回归症状)

相关 Issue:#24875 SafeWebBaseLoader._fetch raises TypeError on every URL(重复参数问题的原始报告)

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 8907

发表回复

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