
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_limit的continue_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 版本)
解决步骤
- 确认问题日志:在 Docker 容器日志中搜索
Error fetching <url>, skipping,确认 URL 获取阶段存在异常。完整的TypeError: aiohttp.client.ClientSession.get() got multiple values for keyword argument 'allow_redirects'栈信息可直接确认根因。 - 修复 SafeWebBaseLoader._fetch 重复参数(可优先尝试):编辑
backend/open_webui/retrieval/web/utils.py,移除_fetch方法中重复的allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS参数,仅保留requests_kwargs中的配置。修改后需重启 Open WebUI 容器。 - 升级 Open WebUI:由于该问题在 v0.9.5 中由 SSRF 加固变更引入,建议升级到包含修复的版本(如 v0.9.6 或更高)。检查官方仓库的发布说明,确认 SafeWebBaseLoader 相关修复。
- 回退 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错误。
参考来源
相关 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(重复参数问题的原始报告)



