[GH-ISSUE #21509] issue: 'JSONResponse' object is not subscriptable #74108

Closed
opened 2026-05-13 06:47:36 -05:00 by GiteaMirror · 5 comments
Owner

Originally created by @erhhung on GitHub (Feb 17, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/21509

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

v0.8.2

Ollama Version (if applicable)

v0.16.1

Operating System

Ubuntu 24.04

Browser (if applicable)

Chromium (Playwright)

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

Initiated a chat with Web Search capability:

What are the top business news for today?

Retrieved 3 sources

  • Searching the web
  • Searching
    What are the top business news for today?
  • Searched 11 sites
    Business News - CNBC
    Business News - Latest Headlines on CNN Business | CNN Business
    Business: US & International Top Business News | AP News
    Business News: Reports and Video on Stocks, Inflation, Recalls and More | NBC News
    Reuters Business News | Today's International Headlines | Reuters
    Bloomberg - Business News, Stock Markets, Finance, Breaking & World News
    Google News - Business - Latest
    Fox Business | Business News & Stock Quotes - Saving & Investing
    BBC Business | Economy, Tech, AI, Work, Personal Finance, Market news
    Investor's Business Daily | Stock News and Stock Market Analysis - IBD
    Business Insider - Latest News in Tech, Markets, Economy & Innovation
  • Retrieved 3 sources

Expected chat to generate a response, but none was generated. Container logs immediately dumped the exception and stack trace shown below while still indicating the "Searching" step.

Actual Behavior

Web search runs okay and returns URLs; NLTK downloads data packages okay; the pipeline then stalls/fails. Exception stack trace is output in the container logs.

Steps to Reproduce

Running Open WebUI v0.8.2 and sending a chat message that invoked web search (Open WebUI -> LiteLLM (perplexity_search) -> SearXNG) and web loader (Playwright). Model used is Gemma3 via Ollama.

  1. Enable "Web Search" chat capability.
  2. Enter chat message: "What are the top business news for today?"

Logs & Screenshots

2026-02-17 06:41:23.699 | ERROR    | open_webui.utils.middleware:chat_web_search_handler:1316 - 'JSONResponse' object is not subscriptable
Traceback (most recent call last):

  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module>
    uvicorn.main()
    │       └ <Command main>
    └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'>
  File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1485, in __call__
    return self.main(*args, **kwargs)
           │    │     │       └ {}
           │    │     └ ()
           │    └ <function Command.main at 0x7f4c18d17100>
           └ <Command main>
  File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1406, in main
    rv = self.invoke(ctx)
         │    │      └ <click.core.Context object at 0x7f4c19a40cd0>
         │    └ <function Command.invoke at 0x7f4c18d16de0>
         └ <Command main>
  File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           │   │      │    │           │   └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
           │   │      │    │           └ <click.core.Context object at 0x7f4c19a40cd0>
           │   │      │    └ <function main at 0x7f4c18b13ec0>
           │   │      └ <Command main>
           │   └ <function Context.invoke at 0x7f4c18d16020>
           └ <click.core.Context object at 0x7f4c19a40cd0>
  File "/usr/local/lib/python3.11/site-packages/click/core.py", line 824, in invoke
    return callback(*args, **kwargs)
           │         │       └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
           │         └ ()
           └ <function main at 0x7f4c18b13ec0>
  File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 424, in main
    run(
    └ <function run at 0x7f4c18bc9c60>
  File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run
    server.run()
    │      └ <function Server.run at 0x7f4c18bc94e0>
    └ <uvicorn.server.Server object at 0x7f4c18d4bad0>
  File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
    return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
           │           │    │             │                      │    │      └ <function Config.get_loop_factory at 0x7f4c18ce0360>
           │           │    │             │                      │    └ <uvicorn.config.Config object at 0x7f4c18b1db50>
           │           │    │             │                      └ <uvicorn.server.Server object at 0x7f4c18d4bad0>
           │           │    │             └ None
           │           │    └ <function Server.serve at 0x7f4c18bc9580>
           │           └ <uvicorn.server.Server object at 0x7f4c18d4bad0>
           └ <function asyncio_run at 0x7f4c18d1a020>
  File "/usr/local/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
    return runner.run(main)
           │      │   └ <coroutine object Server.serve at 0x7f4c18a7b5b0>
           │      └ <function Runner.run at 0x7f4c18f6cfe0>
           └ <asyncio.runners.Runner object at 0x7f4c18b25590>
  File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:71> wai...
           │    │     └ <cyfunction Loop.run_until_complete at 0x7f4c1883e800>
           │    └ <uvloop.Loop running=True closed=False debug=False>
           └ <asyncio.runners.Runner object at 0x7f4c18b25590>

  File "/app/backend/open_webui/main.py", line 1784, in process_chat
    form_data, metadata, events = await process_chat_payload(
    │          │                        └ <function process_chat_payload at 0x7f4baf83c360>
    │          └ {'user_id': 'c3bae6bd-bdd3-4c5e-bdba-ba7ec091d388', 'chat_id': 'b26e626e-bae9-4bf8-b61b-db14e365be8d', 'message_id': 'a91b2ef...
    └ {'stream': True, 'model': 'browsing', 'messages': [{'role': 'system', 'content': 'Today is 2026-02-16, and the time is 22:41:...

  File "/app/backend/open_webui/utils/middleware.py", line 2147, in process_chat_payload
    form_data = await chat_web_search_handler(
                      └ <function chat_web_search_handler at 0x7f4baf7bfce0>

> File "/app/backend/open_webui/utils/middleware.py", line 1297, in chat_web_search_handler
    response = res["choices"[][0[]["message"[]["content"]
               └ <starlette.responses.JSONResponse object at 0x7f4bac402b90>

TypeError: 'JSONResponse' object is not subscriptable
Originally created by @erhhung on GitHub (Feb 17, 2026). Original GitHub issue: https://github.com/open-webui/open-webui/issues/21509 ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!). - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version v0.8.2 ### Ollama Version (if applicable) v0.16.1 ### Operating System Ubuntu 24.04 ### Browser (if applicable) Chromium (Playwright) ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior Initiated a chat with Web Search capability: > What are the top business news for today? Retrieved 3 sources - Searching the web - Searching What are the top business news for today? - Searched 11 sites Business News - CNBC Business News - Latest Headlines on CNN Business | CNN Business Business: US & International Top Business News | AP News Business News: Reports and Video on Stocks, Inflation, Recalls and More | NBC News Reuters Business News | Today's International Headlines | Reuters Bloomberg - Business News, Stock Markets, Finance, Breaking & World News Google News - Business - Latest Fox Business | Business News & Stock Quotes - Saving & Investing BBC Business | Economy, Tech, AI, Work, Personal Finance, Market news Investor's Business Daily | Stock News and Stock Market Analysis - IBD Business Insider - Latest News in Tech, Markets, Economy & Innovation - Retrieved 3 sources Expected chat to generate a response, but **none was generated**. Container logs immediately dumped the exception and stack trace shown below while still indicating the "Searching" step. ### Actual Behavior Web search runs okay and returns URLs; NLTK downloads data packages okay; the pipeline then stalls/fails. Exception stack trace is output in the container logs. ### Steps to Reproduce Running Open WebUI v0.8.2 and sending a chat message that invoked web search (Open WebUI -> LiteLLM (perplexity_search) -> SearXNG) and web loader (Playwright). Model used is Gemma3 via Ollama. 1. Enable "Web Search" chat capability. 2. Enter chat message: "What are the top business news for today?" ### Logs & Screenshots ``` 2026-02-17 06:41:23.699 | ERROR | open_webui.utils.middleware:chat_web_search_handler:1316 - 'JSONResponse' object is not subscriptable Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module> uvicorn.main() │ └ <Command main> └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1485, in __call__ return self.main(*args, **kwargs) │ │ │ └ {} │ │ └ () │ └ <function Command.main at 0x7f4c18d17100> └ <Command main> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1406, in main rv = self.invoke(ctx) │ │ └ <click.core.Context object at 0x7f4c19a40cd0> │ └ <function Command.invoke at 0x7f4c18d16de0> └ <Command main> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1269, in invoke return ctx.invoke(self.callback, **ctx.params) │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... │ │ │ │ └ <click.core.Context object at 0x7f4c19a40cd0> │ │ │ └ <function main at 0x7f4c18b13ec0> │ │ └ <Command main> │ └ <function Context.invoke at 0x7f4c18d16020> └ <click.core.Context object at 0x7f4c19a40cd0> File "/usr/local/lib/python3.11/site-packages/click/core.py", line 824, in invoke return callback(*args, **kwargs) │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... │ └ () └ <function main at 0x7f4c18b13ec0> File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 424, in main run( └ <function run at 0x7f4c18bc9c60> File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run server.run() │ └ <function Server.run at 0x7f4c18bc94e0> └ <uvicorn.server.Server object at 0x7f4c18d4bad0> File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory()) │ │ │ │ │ │ └ <function Config.get_loop_factory at 0x7f4c18ce0360> │ │ │ │ │ └ <uvicorn.config.Config object at 0x7f4c18b1db50> │ │ │ │ └ <uvicorn.server.Server object at 0x7f4c18d4bad0> │ │ │ └ None │ │ └ <function Server.serve at 0x7f4c18bc9580> │ └ <uvicorn.server.Server object at 0x7f4c18d4bad0> └ <function asyncio_run at 0x7f4c18d1a020> File "/usr/local/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run return runner.run(main) │ │ └ <coroutine object Server.serve at 0x7f4c18a7b5b0> │ └ <function Runner.run at 0x7f4c18f6cfe0> └ <asyncio.runners.Runner object at 0x7f4c18b25590> File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:71> wai... │ │ └ <cyfunction Loop.run_until_complete at 0x7f4c1883e800> │ └ <uvloop.Loop running=True closed=False debug=False> └ <asyncio.runners.Runner object at 0x7f4c18b25590> File "/app/backend/open_webui/main.py", line 1784, in process_chat form_data, metadata, events = await process_chat_payload( │ │ └ <function process_chat_payload at 0x7f4baf83c360> │ └ {'user_id': 'c3bae6bd-bdd3-4c5e-bdba-ba7ec091d388', 'chat_id': 'b26e626e-bae9-4bf8-b61b-db14e365be8d', 'message_id': 'a91b2ef... └ {'stream': True, 'model': 'browsing', 'messages': [{'role': 'system', 'content': 'Today is 2026-02-16, and the time is 22:41:... File "/app/backend/open_webui/utils/middleware.py", line 2147, in process_chat_payload form_data = await chat_web_search_handler( └ <function chat_web_search_handler at 0x7f4baf7bfce0> > File "/app/backend/open_webui/utils/middleware.py", line 1297, in chat_web_search_handler response = res["choices"[][0[]["message"[]["content"] └ <starlette.responses.JSONResponse object at 0x7f4bac402b90> TypeError: 'JSONResponse' object is not subscriptable ```
GiteaMirror added the bug label 2026-05-13 06:47:36 -05:00
Author
Owner

@Classic298 commented on GitHub (Feb 17, 2026):

Please try 0.8.3

<!-- gh-comment-id:3912880042 --> @Classic298 commented on GitHub (Feb 17, 2026): Please try 0.8.3
Author
Owner

@Classic298 commented on GitHub (Feb 17, 2026):

any update? is this still present int .3? how can we reproduce this? A simple web search doesnt trigger this error for me

<!-- gh-comment-id:3916189527 --> @Classic298 commented on GitHub (Feb 17, 2026): any update? is this still present int .3? how can we reproduce this? A simple web search doesnt trigger this error for me
Author
Owner

@erhhung commented on GitHub (Feb 18, 2026):

OK. I believe this is fixed in 0.8.3 as I don't see the exception anymore.

<!-- gh-comment-id:3918621326 --> @erhhung commented on GitHub (Feb 18, 2026): OK. I believe this is fixed in 0.8.3 as I don't see the exception anymore.
Author
Owner

@AkseliLaakso-1 commented on GitHub (Mar 4, 2026):

Hey, I am having the same problem and didn't find a fix. Any updates on the matter? When or will this be fixed?
I tried these versions: v0.7.2, v0.8.3, v0.8.5, v0.8.6, v0.8.7.
Clean install, without data. using DDGS, Backend Random. Tried other search engines as well and didn't find a working one.

Error message:
└ {'stream': True, 'model': 'models/gemini-2.5-flash', 'messages': [{'role': 'user', 'content': 'Do a simple web search and tel...

File "/app/backend/open_webui/utils/middleware.py", line 1581, in process_chat_payload
form_data = await chat_web_search_handler(
└ <function chat_web_search_handler at 0x7b4c71ab79c0>

File "/app/backend/open_webui/utils/middleware.py", line 782, in chat_web_search_handler
response = res["choices"][0]["message"]["content"]
└ <starlette.responses.JSONResponse object at 0x7b4c681a4050>

Image
<!-- gh-comment-id:3999753462 --> @AkseliLaakso-1 commented on GitHub (Mar 4, 2026): Hey, I am having the same problem and didn't find a fix. Any updates on the matter? When or will this be fixed? I tried these versions: v0.7.2, v0.8.3, v0.8.5, v0.8.6, v0.8.7. Clean install, without data. using DDGS, Backend Random. Tried other search engines as well and didn't find a working one. Error message: └ {'stream': True, 'model': 'models/gemini-2.5-flash', 'messages': [{'role': 'user', 'content': 'Do a simple web search and tel... File "/app/backend/open_webui/utils/middleware.py", line 1581, in process_chat_payload form_data = await chat_web_search_handler( └ <function chat_web_search_handler at 0x7b4c71ab79c0> > File "/app/backend/open_webui/utils/middleware.py", line 782, in chat_web_search_handler response = res["choices"][0]["message"]["content"] └ <starlette.responses.JSONResponse object at 0x7b4c681a4050> <img width="2236" height="934" alt="Image" src="https://github.com/user-attachments/assets/7456fa6c-ce32-49a7-aa5b-3b4755b91ae8" />
Author
Owner

@hexomethyl commented on GitHub (Mar 29, 2026):

Also having a similar issue on v0.8.12

Image Image

Have tried with DDGS + Random aswell as Searxng, same issue. Web search has been working fine for the past 3 months (Been updating regularly). It broke for me around the time I updated to v0.8.10+

<!-- gh-comment-id:4149520303 --> @hexomethyl commented on GitHub (Mar 29, 2026): Also having a similar issue on v0.8.12 <img width="172" height="153" alt="Image" src="https://github.com/user-attachments/assets/60b48bc3-5442-4ad6-9068-0d95eac84b15" /> <img width="1500" height="250" alt="Image" src="https://github.com/user-attachments/assets/802e5ed4-113b-4577-a3eb-2d7222c658e2" /> Have tried with DDGS + Random aswell as Searxng, same issue. Web search has been working fine for the past 3 months (Been updating regularly). It broke for me around the time I updated to v0.8.10+
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#74108