[GH-ISSUE #15498] issue: "Bypass Web Loader" toggle gives error with Brave web search #72184

Closed
opened 2026-05-13 04:12:25 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @teese on GitHub (Jul 3, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/15498

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

v0.6.15

Ollama Version (if applicable)

No response

Operating System

Ubuntu

Browser (if applicable)

No response

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

It's not a major thing, but when I switch to Brave web search and turn on the toggle "Bypass Web Loader", I would expect it to bypass the web loader (whatever that does, exactly).

Actual Behavior

Instead, the GUI displays "An error occurred while searching the web", and the console shows an error "1 validation error for Document" "Input should be a valid string".

Steps to Reproduce

Switch to brave web search in Admin Console.
Select "Bypass Web Loader"
Select "Web search" in GUI

Logs & Screenshots

pen-webui_1  | 2025-07-03 11:03:39.496 | INFO     | open_webui.routers.retrieval:process_web_search:1839 - trying to web search with ('brave', ['Who is Teridax?', 'Teridax origin and significance']) - {}
open-webui_1  | 2025-07-03 11:03:40.538 | ERROR    | open_webui.routers.retrieval:process_web_search:1945 - 1 validation error for Document
open-webui_1  | page_content
open-webui_1  |   Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
open-webui_1  |     For further information visit https://errors.pydantic.dev/2.10/v/string_type - {}
open-webui_1  | Traceback (most recent call last):
open-webui_1  |
open-webui_1  |   File "<frozen runpy>", line 198, in _run_module_as_main
open-webui_1  |   File "<frozen runpy>", line 88, in _run_code
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module>
open-webui_1  |     uvicorn.main()
open-webui_1  |     │       └ <Command main>
open-webui_1  |     └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in __call__
open-webui_1  |     return self.main(*args, **kwargs)
open-webui_1  |            │    │     │       └ {}
open-webui_1  |            │    │     └ ()
open-webui_1  |            │    └ <function Command.main at 0x7f4463ca2ac0>
open-webui_1  |            └ <Command main>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main
open-webui_1  |     rv = self.invoke(ctx)
open-webui_1  |          │    │      └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |          │    └ <function Command.invoke at 0x7f4463ca27a0>
open-webui_1  |          └ <Command main>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke
open-webui_1  |     return ctx.invoke(self.callback, **ctx.params)
open-webui_1  |            │   │      │    │           │   └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
open-webui_1  |            │   │      │    │           └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |            │   │      │    └ <function main at 0x7f4463934fe0>
open-webui_1  |            │   │      └ <Command main>
open-webui_1  |            │   └ <function Context.invoke at 0x7f4463ca19e0>
open-webui_1  |            └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke
open-webui_1  |     return callback(*args, **kwargs)
open-webui_1  |            │         │       └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
open-webui_1  |            │         └ ()
open-webui_1  |            └ <function main at 0x7f4463934fe0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 413, in main
open-webui_1  |     run(
open-webui_1  |     └ <function run at 0x7f4463d67b00>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 580, in run
open-webui_1  |     server.run()
open-webui_1  |     │      └ <function Server.run at 0x7f4463becc20>
open-webui_1  |     └ <uvicorn.server.Server object at 0x7f4464952f10>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run
open-webui_1  |     return asyncio.run(self.serve(sockets=sockets))
open-webui_1  |            │       │   │    │             └ None
open-webui_1  |            │       │   │    └ <function Server.serve at 0x7f4463beccc0>
open-webui_1  |            │       │   └ <uvicorn.server.Server object at 0x7f4464952f10>
open-webui_1  |            │       └ <function run at 0x7f44640bd440>
open-webui_1  |            └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'>
open-webui_1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
open-webui_1  |     return runner.run(main)
open-webui_1  |            │      │   └ <coroutine object Server.serve at 0x7f4463b048b0>
open-webui_1  |            │      └ <function Runner.run at 0x7f4463f30fe0>
open-webui_1  |            └ <asyncio.runners.Runner object at 0x7f446391f350>
open-webui_1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
open-webui_1  |     return self._loop.run_until_complete(task)
open-webui_1  |            │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai...
open-webui_1  |            │    │     └ <cyfunction Loop.run_until_complete at 0x7f446392f2a0>
open-webui_1  |            │    └ <uvloop.Loop running=True closed=False debug=False>
open-webui_1  |            └ <asyncio.runners.Runner object at 0x7f446391f350>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
open-webui_1  |     await self.app(scope, receive_or_disconnect, send_no_error)
open-webui_1  |           │    │   │      │                      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <starlette_compress.CompressMiddleware object at 0x7f446399c180>
open-webui_1  |           └ <open_webui.main.RedirectMiddleware object at 0x7f43d99458d0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
open-webui_1  |     return await self._zstd(scope, receive, send)
open-webui_1  |                  │    │     │      │        └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0>
open-webui_1  |                  │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |                  │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |                  │    └ <member '_zstd' of 'CompressMiddleware' objects>
open-webui_1  |                  └ <starlette_compress.CompressMiddleware object at 0x7f446399c180>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
open-webui_1  |     await self.app(scope, receive, wrapper)
open-webui_1  |           │    │   │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <member 'app' of 'ZstdResponder' objects>
open-webui_1  |           └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f43d9d37080>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
open-webui_1  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui_1  |           │                            │    │    │     │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80>
open-webui_1  |           │                            │    │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │                            │    │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │                            │    │    └ <starlette.requests.Request object at 0x7f43bba74e10>
open-webui_1  |           │                            │    └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |           │                            └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f43d9a94750>
open-webui_1  |           └ <function wrap_app_handling_exceptions at 0x7f4460d9c540>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
open-webui_1  |     await app(scope, receive, sender)
open-webui_1  |           │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
open-webui_1  |     await self.middleware_stack(scope, receive, send)
open-webui_1  |           │    │                │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │    │                │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │                └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f4417b4f850>>
open-webui_1  |           └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
open-webui_1  |     await route.handle(scope, receive, send)
open-webui_1  |           │     │      │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │     │      │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │     │      └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │     └ <function Route.handle at 0x7f4460d9dbc0>
open-webui_1  |           └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
open-webui_1  |     await self.app(scope, receive, send)
open-webui_1  |           │    │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <function request_response.<locals>.app at 0x7f43d996a2a0>
open-webui_1  |           └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
open-webui_1  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui_1  |           │                            │    │        │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │                            │    │        │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │                            │    │        └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │                            │    └ <starlette.requests.Request object at 0x7f43bba77c10>
open-webui_1  |           │                            └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160>
open-webui_1  |           └ <function wrap_app_handling_exceptions at 0x7f4460d9c540>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
open-webui_1  |     await app(scope, receive, sender)
open-webui_1  |           │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cc540>
open-webui_1  |           │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
open-webui_1  |     response = await f(request)
open-webui_1  |                      │ └ <starlette.requests.Request object at 0x7f43bba77c10>
open-webui_1  |                      └ <function get_request_handler.<locals>.app at 0x7f43d996a0c0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
open-webui_1  |     raw_response = await run_endpoint_function(
open-webui_1  |                          └ <function run_endpoint_function at 0x7f4460d9f9c0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
open-webui_1  |     return await dependant.call(**values)
open-webui_1  |                  │         │      └ {'user': UserModel(id='sanroediasonredisanoreidasoneridaosnreid', name='Peter Pan', email='peter.pan@fantasyland.com', role='admi...
open-webui_1  |                  │         └ <function chat_completion at 0x7f43d996b060>
open-webui_1  |                  └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant...
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/main.py", line 1357, in chat_completion
open-webui_1  |     form_data, metadata, events = await process_chat_payload(
open-webui_1  |     │          │                        └ <function process_chat_payload at 0x7f441838bb00>
open-webui_1  |     │          └ {'user_id': 'sanroediasonredisanoreidasoneridaosnreid', 'chat_id': 'local', 'message_id': '56172eba-cd70-4a5f-aa73-44fe445ff9ea',...
open-webui_1  |     └ {'stream': True, 'model': 'qwen2.5:14b', 'messages': [{'role': 'user', 'content': 'Who is teridax?'}], 'metadata': {'user_id'...
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/utils/middleware.py", line 833, in process_chat_payload
open-webui_1  |     form_data = await chat_web_search_handler(
open-webui_1  |                       └ <function chat_web_search_handler at 0x7f441838b880>
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/utils/middleware.py", line 424, in chat_web_search_handler
open-webui_1  |     results = await process_web_search(
open-webui_1  |                     └ <function process_web_search at 0x7f441bc14f40>
open-webui_1  |
open-webui_1  | > File "/app/backend/open_webui/routers/retrieval.py", line 1878, in process_web_search
open-webui_1  |     docs = [
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/routers/retrieval.py", line 1879, in <listcomp>
open-webui_1  |     Document(
open-webui_1  |     └ <class 'langchain_core.documents.base.Document'>
open-webui_1  |
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/langchain_core/documents/base.py", line 278, in __init__
open-webui_1  |     super().__init__(page_content=page_content, **kwargs)  # type: ignore[call-arg]
open-webui_1  |                                   │               └ {'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', 'snippet': None, 'link...
open-webui_1  |                                   └ None
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/langchain_core/load/serializable.py", line 130, in __init__
open-webui_1  |     super().__init__(*args, **kwargs)
open-webui_1  |                       │       └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ...
open-webui_1  |                       └ ()
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 214, in __init__
open-webui_1  |     validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui_1  |                      │    │                      │               │                   └ Document()
open-webui_1  |                      │    │                      │               └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ...
open-webui_1  |                      │    │                      └ <method 'validate_python' of 'pydantic_core._pydantic_core.SchemaValidator' objects>
open-webui_1  |                      │    └ SchemaValidator(title="Document", validator=Model(
open-webui_1  |                      │          ModelValidator {
open-webui_1  |                      │              revalidate: Never,
open-webui_1  |                      │              validator: ModelFi...
open-webui_1  |                      └ Document()
open-webui_1  |
open-webui_1  | pydantic_core._pydantic_core.ValidationError: 1 validation error for Document
open-webui_1  | page_content
open-webui_1  |   Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
open-webui_1  |     For further information visit https://errors.pydantic.dev/2.10/v/string_type
open-webui_1  | 2025-07-03 11:03:40.545 | ERROR    | open_webui.utils.middleware:chat_web_search_handler:486 - 400: [ERROR: 1 validation error for Document
open-webui_1  | page_content
open-webui_1  |   Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
open-webui_1  |     For further information visit https://errors.pydantic.dev/2.10/v/string_type] - {}
open-webui_1  | Traceback (most recent call last):
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/routers/retrieval.py", line 1878, in process_web_search
open-webui_1  |     docs = [
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/routers/retrieval.py", line 1879, in <listcomp>
open-webui_1  |     Document(
open-webui_1  |     └ <class 'langchain_core.documents.base.Document'>
open-webui_1  |
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/langchain_core/documents/base.py", line 278, in __init__
open-webui_1  |     super().__init__(page_content=page_content, **kwargs)  # type: ignore[call-arg]
open-webui_1  |                                   │               └ {'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', 'snippet': None, 'link...
open-webui_1  |                                   └ None
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/langchain_core/load/serializable.py", line 130, in __init__
open-webui_1  |     super().__init__(*args, **kwargs)
open-webui_1  |                       │       └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ...
open-webui_1  |                       └ ()
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 214, in __init__
open-webui_1  |     validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui_1  |                      │    │                      │               │                   └ Document()
open-webui_1  |                      │    │                      │               └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ...
open-webui_1  |                      │    │                      └ <method 'validate_python' of 'pydantic_core._pydantic_core.SchemaValidator' objects>
open-webui_1  |                      │    └ SchemaValidator(title="Document", validator=Model(
open-webui_1  |                      │          ModelValidator {
open-webui_1  |                      │              revalidate: Never,
open-webui_1  |                      │              validator: ModelFi...
open-webui_1  |                      └ Document()
open-webui_1  |
open-webui_1  | pydantic_core._pydantic_core.ValidationError: 1 validation error for Document
open-webui_1  | page_content
open-webui_1  |   Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
open-webui_1  |     For further information visit https://errors.pydantic.dev/2.10/v/string_type
open-webui_1  |
open-webui_1  |
open-webui_1  | During handling of the above exception, another exception occurred:
open-webui_1  |
open-webui_1  |
open-webui_1  | Traceback (most recent call last):
open-webui_1  |
open-webui_1  |   File "<frozen runpy>", line 198, in _run_module_as_main
open-webui_1  |   File "<frozen runpy>", line 88, in _run_code
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module>
open-webui_1  |     uvicorn.main()
open-webui_1  |     │       └ <Command main>
open-webui_1  |     └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in __call__
open-webui_1  |     return self.main(*args, **kwargs)
open-webui_1  |            │    │     │       └ {}
open-webui_1  |            │    │     └ ()
open-webui_1  |            │    └ <function Command.main at 0x7f4463ca2ac0>
open-webui_1  |            └ <Command main>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main
open-webui_1  |     rv = self.invoke(ctx)
open-webui_1  |          │    │      └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |          │    └ <function Command.invoke at 0x7f4463ca27a0>
open-webui_1  |          └ <Command main>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke
open-webui_1  |     return ctx.invoke(self.callback, **ctx.params)
open-webui_1  |            │   │      │    │           │   └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
open-webui_1  |            │   │      │    │           └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |            │   │      │    └ <function main at 0x7f4463934fe0>
open-webui_1  |            │   │      └ <Command main>
open-webui_1  |            │   └ <function Context.invoke at 0x7f4463ca19e0>
open-webui_1  |            └ <click.core.Context object at 0x7f4464a14b10>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke
open-webui_1  |     return callback(*args, **kwargs)
open-webui_1  |            │         │       └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
open-webui_1  |            │         └ ()
open-webui_1  |            └ <function main at 0x7f4463934fe0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 413, in main
open-webui_1  |     run(
open-webui_1  |     └ <function run at 0x7f4463d67b00>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 580, in run
open-webui_1  |     server.run()
open-webui_1  |     │      └ <function Server.run at 0x7f4463becc20>
open-webui_1  |     └ <uvicorn.server.Server object at 0x7f4464952f10>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run
open-webui_1  |     return asyncio.run(self.serve(sockets=sockets))
open-webui_1  |            │       │   │    │             └ None
open-webui_1  |            │       │   │    └ <function Server.serve at 0x7f4463beccc0>
open-webui_1  |            │       │   └ <uvicorn.server.Server object at 0x7f4464952f10>
open-webui_1  |            │       └ <function run at 0x7f44640bd440>
open-webui_1  |            └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'>
open-webui_1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
open-webui_1  |     return runner.run(main)
open-webui_1  |            │      │   └ <coroutine object Server.serve at 0x7f4463b048b0>
open-webui_1  |            │      └ <function Runner.run at 0x7f4463f30fe0>
open-webui_1  |            └ <asyncio.runners.Runner object at 0x7f446391f350>
open-webui_1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
open-webui_1  |     return self._loop.run_until_complete(task)
open-webui_1  |            │    │     │                  └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai...
open-webui_1  |            │    │     └ <cyfunction Loop.run_until_complete at 0x7f446392f2a0>
open-webui_1  |            │    └ <uvloop.Loop running=True closed=False debug=False>
open-webui_1  |            └ <asyncio.runners.Runner object at 0x7f446391f350>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
open-webui_1  |     await self.app(scope, receive_or_disconnect, send_no_error)
open-webui_1  |           │    │   │      │                      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <starlette_compress.CompressMiddleware object at 0x7f446399c180>
open-webui_1  |           └ <open_webui.main.RedirectMiddleware object at 0x7f43d99458d0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
open-webui_1  |     return await self._zstd(scope, receive, send)
open-webui_1  |                  │    │     │      │        └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0>
open-webui_1  |                  │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |                  │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |                  │    └ <member '_zstd' of 'CompressMiddleware' objects>
open-webui_1  |                  └ <starlette_compress.CompressMiddleware object at 0x7f446399c180>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
open-webui_1  |     await self.app(scope, receive, wrapper)
open-webui_1  |           │    │   │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <member 'app' of 'ZstdResponder' objects>
open-webui_1  |           └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f43d9d37080>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
open-webui_1  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui_1  |           │                            │    │    │     │      │        └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80>
open-webui_1  |           │                            │    │    │     │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │                            │    │    │     └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │                            │    │    └ <starlette.requests.Request object at 0x7f43bba74e10>
open-webui_1  |           │                            │    └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |           │                            └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f43d9a94750>
open-webui_1  |           └ <function wrap_app_handling_exceptions at 0x7f4460d9c540>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
open-webui_1  |     await app(scope, receive, sender)
open-webui_1  |           │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
open-webui_1  |     await self.middleware_stack(scope, receive, send)
open-webui_1  |           │    │                │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │    │                │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │                └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f4417b4f850>>
open-webui_1  |           └ <fastapi.routing.APIRouter object at 0x7f4417b4f850>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
open-webui_1  |     await route.handle(scope, receive, send)
open-webui_1  |           │     │      │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │     │      │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │     │      └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │     └ <function Route.handle at 0x7f4460d9dbc0>
open-webui_1  |           └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
open-webui_1  |     await self.app(scope, receive, send)
open-webui_1  |           │    │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │    │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │    │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │    └ <function request_response.<locals>.app at 0x7f43d996a2a0>
open-webui_1  |           └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
open-webui_1  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui_1  |           │                            │    │        │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20>
open-webui_1  |           │                            │    │        │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │                            │    │        └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           │                            │    └ <starlette.requests.Request object at 0x7f43bba77c10>
open-webui_1  |           │                            └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160>
open-webui_1  |           └ <function wrap_app_handling_exceptions at 0x7f4460d9c540>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
open-webui_1  |     await app(scope, receive, sender)
open-webui_1  |           │   │      │        └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cc540>
open-webui_1  |           │   │      └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60>
open-webui_1  |           │   └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '...
open-webui_1  |           └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
open-webui_1  |     response = await f(request)
open-webui_1  |                      │ └ <starlette.requests.Request object at 0x7f43bba77c10>
open-webui_1  |                      └ <function get_request_handler.<locals>.app at 0x7f43d996a0c0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
open-webui_1  |     raw_response = await run_endpoint_function(
open-webui_1  |                          └ <function run_endpoint_function at 0x7f4460d9f9c0>
open-webui_1  |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
open-webui_1  |     return await dependant.call(**values)
open-webui_1  |                  │         │      └ {'user': UserModel(id='sanroediasonredisanoreidasoneridaosnreid', name='Peter Pan', email='peter.pan@fantasyland.com', role='admi...
open-webui_1  |                  │         └ <function chat_completion at 0x7f43d996b060>
open-webui_1  |                  └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant...
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/main.py", line 1357, in chat_completion
open-webui_1  |     form_data, metadata, events = await process_chat_payload(
open-webui_1  |     │          │                        └ <function process_chat_payload at 0x7f441838bb00>
open-webui_1  |     │          └ {'user_id': 'sanroediasonredisanoreidasoneridaosnreid', 'chat_id': 'local', 'message_id': '56172eba-cd70-4a5f-aa73-44fe445ff9ea',...
open-webui_1  |     └ {'stream': True, 'model': 'qwen2.5:14b', 'messages': [{'role': 'user', 'content': 'Who is teridax?'}], 'metadata': {'user_id'...
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/utils/middleware.py", line 833, in process_chat_payload
open-webui_1  |     form_data = await chat_web_search_handler(
open-webui_1  |                       └ <function chat_web_search_handler at 0x7f441838b880>
open-webui_1  |
open-webui_1  | > File "/app/backend/open_webui/utils/middleware.py", line 424, in chat_web_search_handler
open-webui_1  |     results = await process_web_search(
open-webui_1  |                     └ <function process_web_search at 0x7f441bc14f40>
open-webui_1  |
open-webui_1  |   File "/app/backend/open_webui/routers/retrieval.py", line 1946, in process_web_search
open-webui_1  |     raise HTTPException(
open-webui_1  |           └ <class 'fastapi.exceptions.HTTPException'>
open-webui_1  |
open-webui_1  | fastapi.exceptions.HTTPException: 400: [ERROR: 1 validation error for Document
open-webui_1  | page_content
open-webui_1  |   Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
open-webui_1  |     For further information visit https://errors.pydantic.dev/2.10/v/string_type]

Additional Information

No response

Originally created by @teese on GitHub (Jul 3, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/15498 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version v0.6.15 ### Ollama Version (if applicable) _No response_ ### Operating System Ubuntu ### Browser (if applicable) _No response_ ### 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 It's not a major thing, but when I switch to Brave web search and turn on the toggle "Bypass Web Loader", I would expect it to bypass the web loader (whatever that does, exactly). ### Actual Behavior Instead, the GUI displays "An error occurred while searching the web", and the console shows an error "1 validation error for Document" "Input should be a valid string". ### Steps to Reproduce Switch to brave web search in Admin Console. Select "Bypass Web Loader" Select "Web search" in GUI ### Logs & Screenshots ``` pen-webui_1 | 2025-07-03 11:03:39.496 | INFO | open_webui.routers.retrieval:process_web_search:1839 - trying to web search with ('brave', ['Who is Teridax?', 'Teridax origin and significance']) - {} open-webui_1 | 2025-07-03 11:03:40.538 | ERROR | open_webui.routers.retrieval:process_web_search:1945 - 1 validation error for Document open-webui_1 | page_content open-webui_1 | Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] open-webui_1 | For further information visit https://errors.pydantic.dev/2.10/v/string_type - {} open-webui_1 | Traceback (most recent call last): open-webui_1 | open-webui_1 | File "<frozen runpy>", line 198, in _run_module_as_main open-webui_1 | File "<frozen runpy>", line 88, in _run_code open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module> open-webui_1 | uvicorn.main() open-webui_1 | │ └ <Command main> open-webui_1 | └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in __call__ open-webui_1 | return self.main(*args, **kwargs) open-webui_1 | │ │ │ └ {} open-webui_1 | │ │ └ () open-webui_1 | │ └ <function Command.main at 0x7f4463ca2ac0> open-webui_1 | └ <Command main> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main open-webui_1 | rv = self.invoke(ctx) open-webui_1 | │ │ └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | │ └ <function Command.invoke at 0x7f4463ca27a0> open-webui_1 | └ <Command main> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke open-webui_1 | return ctx.invoke(self.callback, **ctx.params) open-webui_1 | │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... open-webui_1 | │ │ │ │ └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | │ │ │ └ <function main at 0x7f4463934fe0> open-webui_1 | │ │ └ <Command main> open-webui_1 | │ └ <function Context.invoke at 0x7f4463ca19e0> open-webui_1 | └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke open-webui_1 | return callback(*args, **kwargs) open-webui_1 | │ │ └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... open-webui_1 | │ └ () open-webui_1 | └ <function main at 0x7f4463934fe0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 413, in main open-webui_1 | run( open-webui_1 | └ <function run at 0x7f4463d67b00> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 580, in run open-webui_1 | server.run() open-webui_1 | │ └ <function Server.run at 0x7f4463becc20> open-webui_1 | └ <uvicorn.server.Server object at 0x7f4464952f10> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run open-webui_1 | return asyncio.run(self.serve(sockets=sockets)) open-webui_1 | │ │ │ │ └ None open-webui_1 | │ │ │ └ <function Server.serve at 0x7f4463beccc0> open-webui_1 | │ │ └ <uvicorn.server.Server object at 0x7f4464952f10> open-webui_1 | │ └ <function run at 0x7f44640bd440> open-webui_1 | └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'> open-webui_1 | File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run open-webui_1 | return runner.run(main) open-webui_1 | │ │ └ <coroutine object Server.serve at 0x7f4463b048b0> open-webui_1 | │ └ <function Runner.run at 0x7f4463f30fe0> open-webui_1 | └ <asyncio.runners.Runner object at 0x7f446391f350> open-webui_1 | File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run open-webui_1 | return self._loop.run_until_complete(task) open-webui_1 | │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai... open-webui_1 | │ │ └ <cyfunction Loop.run_until_complete at 0x7f446392f2a0> open-webui_1 | │ └ <uvloop.Loop running=True closed=False debug=False> open-webui_1 | └ <asyncio.runners.Runner object at 0x7f446391f350> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro open-webui_1 | await self.app(scope, receive_or_disconnect, send_no_error) open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <starlette_compress.CompressMiddleware object at 0x7f446399c180> open-webui_1 | └ <open_webui.main.RedirectMiddleware object at 0x7f43d99458d0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__ open-webui_1 | return await self._zstd(scope, receive, send) open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <member '_zstd' of 'CompressMiddleware' objects> open-webui_1 | └ <starlette_compress.CompressMiddleware object at 0x7f446399c180> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__ open-webui_1 | await self.app(scope, receive, wrapper) open-webui_1 | │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <member 'app' of 'ZstdResponder' objects> open-webui_1 | └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f43d9d37080> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ open-webui_1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) open-webui_1 | │ │ │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80> open-webui_1 | │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ │ │ └ <starlette.requests.Request object at 0x7f43bba74e10> open-webui_1 | │ │ └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f43d9a94750> open-webui_1 | └ <function wrap_app_handling_exceptions at 0x7f4460d9c540> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app open-webui_1 | await app(scope, receive, sender) open-webui_1 | │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ open-webui_1 | await self.middleware_stack(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f4417b4f850>> open-webui_1 | └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app open-webui_1 | await route.handle(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <function Route.handle at 0x7f4460d9dbc0> open-webui_1 | └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle open-webui_1 | await self.app(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <function request_response.<locals>.app at 0x7f43d996a2a0> open-webui_1 | └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app open-webui_1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send) open-webui_1 | │ │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ │ └ <starlette.requests.Request object at 0x7f43bba77c10> open-webui_1 | │ └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160> open-webui_1 | └ <function wrap_app_handling_exceptions at 0x7f4460d9c540> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app open-webui_1 | await app(scope, receive, sender) open-webui_1 | │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cc540> open-webui_1 | │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app open-webui_1 | response = await f(request) open-webui_1 | │ └ <starlette.requests.Request object at 0x7f43bba77c10> open-webui_1 | └ <function get_request_handler.<locals>.app at 0x7f43d996a0c0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app open-webui_1 | raw_response = await run_endpoint_function( open-webui_1 | └ <function run_endpoint_function at 0x7f4460d9f9c0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function open-webui_1 | return await dependant.call(**values) open-webui_1 | │ │ └ {'user': UserModel(id='sanroediasonredisanoreidasoneridaosnreid', name='Peter Pan', email='peter.pan@fantasyland.com', role='admi... open-webui_1 | │ └ <function chat_completion at 0x7f43d996b060> open-webui_1 | └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant... open-webui_1 | open-webui_1 | File "/app/backend/open_webui/main.py", line 1357, in chat_completion open-webui_1 | form_data, metadata, events = await process_chat_payload( open-webui_1 | │ │ └ <function process_chat_payload at 0x7f441838bb00> open-webui_1 | │ └ {'user_id': 'sanroediasonredisanoreidasoneridaosnreid', 'chat_id': 'local', 'message_id': '56172eba-cd70-4a5f-aa73-44fe445ff9ea',... open-webui_1 | └ {'stream': True, 'model': 'qwen2.5:14b', 'messages': [{'role': 'user', 'content': 'Who is teridax?'}], 'metadata': {'user_id'... open-webui_1 | open-webui_1 | File "/app/backend/open_webui/utils/middleware.py", line 833, in process_chat_payload open-webui_1 | form_data = await chat_web_search_handler( open-webui_1 | └ <function chat_web_search_handler at 0x7f441838b880> open-webui_1 | open-webui_1 | File "/app/backend/open_webui/utils/middleware.py", line 424, in chat_web_search_handler open-webui_1 | results = await process_web_search( open-webui_1 | └ <function process_web_search at 0x7f441bc14f40> open-webui_1 | open-webui_1 | > File "/app/backend/open_webui/routers/retrieval.py", line 1878, in process_web_search open-webui_1 | docs = [ open-webui_1 | open-webui_1 | File "/app/backend/open_webui/routers/retrieval.py", line 1879, in <listcomp> open-webui_1 | Document( open-webui_1 | └ <class 'langchain_core.documents.base.Document'> open-webui_1 | open-webui_1 | File "/usr/local/lib/python3.11/site-packages/langchain_core/documents/base.py", line 278, in __init__ open-webui_1 | super().__init__(page_content=page_content, **kwargs) # type: ignore[call-arg] open-webui_1 | │ └ {'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', 'snippet': None, 'link... open-webui_1 | └ None open-webui_1 | File "/usr/local/lib/python3.11/site-packages/langchain_core/load/serializable.py", line 130, in __init__ open-webui_1 | super().__init__(*args, **kwargs) open-webui_1 | │ └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ... open-webui_1 | └ () open-webui_1 | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 214, in __init__ open-webui_1 | validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) open-webui_1 | │ │ │ │ └ Document() open-webui_1 | │ │ │ └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ... open-webui_1 | │ │ └ <method 'validate_python' of 'pydantic_core._pydantic_core.SchemaValidator' objects> open-webui_1 | │ └ SchemaValidator(title="Document", validator=Model( open-webui_1 | │ ModelValidator { open-webui_1 | │ revalidate: Never, open-webui_1 | │ validator: ModelFi... open-webui_1 | └ Document() open-webui_1 | open-webui_1 | pydantic_core._pydantic_core.ValidationError: 1 validation error for Document open-webui_1 | page_content open-webui_1 | Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] open-webui_1 | For further information visit https://errors.pydantic.dev/2.10/v/string_type open-webui_1 | 2025-07-03 11:03:40.545 | ERROR | open_webui.utils.middleware:chat_web_search_handler:486 - 400: [ERROR: 1 validation error for Document open-webui_1 | page_content open-webui_1 | Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] open-webui_1 | For further information visit https://errors.pydantic.dev/2.10/v/string_type] - {} open-webui_1 | Traceback (most recent call last): open-webui_1 | open-webui_1 | File "/app/backend/open_webui/routers/retrieval.py", line 1878, in process_web_search open-webui_1 | docs = [ open-webui_1 | open-webui_1 | File "/app/backend/open_webui/routers/retrieval.py", line 1879, in <listcomp> open-webui_1 | Document( open-webui_1 | └ <class 'langchain_core.documents.base.Document'> open-webui_1 | open-webui_1 | File "/usr/local/lib/python3.11/site-packages/langchain_core/documents/base.py", line 278, in __init__ open-webui_1 | super().__init__(page_content=page_content, **kwargs) # type: ignore[call-arg] open-webui_1 | │ └ {'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', 'snippet': None, 'link... open-webui_1 | └ None open-webui_1 | File "/usr/local/lib/python3.11/site-packages/langchain_core/load/serializable.py", line 130, in __init__ open-webui_1 | super().__init__(*args, **kwargs) open-webui_1 | │ └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ... open-webui_1 | └ () open-webui_1 | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 214, in __init__ open-webui_1 | validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) open-webui_1 | │ │ │ │ └ Document() open-webui_1 | │ │ │ └ {'page_content': None, 'metadata': {'source': 'https://biosector01.com/wiki/Teridax', 'title': 'Teridax - BIONICLEsector01', ... open-webui_1 | │ │ └ <method 'validate_python' of 'pydantic_core._pydantic_core.SchemaValidator' objects> open-webui_1 | │ └ SchemaValidator(title="Document", validator=Model( open-webui_1 | │ ModelValidator { open-webui_1 | │ revalidate: Never, open-webui_1 | │ validator: ModelFi... open-webui_1 | └ Document() open-webui_1 | open-webui_1 | pydantic_core._pydantic_core.ValidationError: 1 validation error for Document open-webui_1 | page_content open-webui_1 | Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] open-webui_1 | For further information visit https://errors.pydantic.dev/2.10/v/string_type open-webui_1 | open-webui_1 | open-webui_1 | During handling of the above exception, another exception occurred: open-webui_1 | open-webui_1 | open-webui_1 | Traceback (most recent call last): open-webui_1 | open-webui_1 | File "<frozen runpy>", line 198, in _run_module_as_main open-webui_1 | File "<frozen runpy>", line 88, in _run_code open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module> open-webui_1 | uvicorn.main() open-webui_1 | │ └ <Command main> open-webui_1 | └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in __call__ open-webui_1 | return self.main(*args, **kwargs) open-webui_1 | │ │ │ └ {} open-webui_1 | │ │ └ () open-webui_1 | │ └ <function Command.main at 0x7f4463ca2ac0> open-webui_1 | └ <Command main> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main open-webui_1 | rv = self.invoke(ctx) open-webui_1 | │ │ └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | │ └ <function Command.invoke at 0x7f4463ca27a0> open-webui_1 | └ <Command main> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke open-webui_1 | return ctx.invoke(self.callback, **ctx.params) open-webui_1 | │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... open-webui_1 | │ │ │ │ └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | │ │ │ └ <function main at 0x7f4463934fe0> open-webui_1 | │ │ └ <Command main> open-webui_1 | │ └ <function Context.invoke at 0x7f4463ca19e0> open-webui_1 | └ <click.core.Context object at 0x7f4464a14b10> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke open-webui_1 | return callback(*args, **kwargs) open-webui_1 | │ │ └ {'host': '0.0.0.0', 'port': 9999, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... open-webui_1 | │ └ () open-webui_1 | └ <function main at 0x7f4463934fe0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 413, in main open-webui_1 | run( open-webui_1 | └ <function run at 0x7f4463d67b00> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 580, in run open-webui_1 | server.run() open-webui_1 | │ └ <function Server.run at 0x7f4463becc20> open-webui_1 | └ <uvicorn.server.Server object at 0x7f4464952f10> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run open-webui_1 | return asyncio.run(self.serve(sockets=sockets)) open-webui_1 | │ │ │ │ └ None open-webui_1 | │ │ │ └ <function Server.serve at 0x7f4463beccc0> open-webui_1 | │ │ └ <uvicorn.server.Server object at 0x7f4464952f10> open-webui_1 | │ └ <function run at 0x7f44640bd440> open-webui_1 | └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'> open-webui_1 | File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run open-webui_1 | return runner.run(main) open-webui_1 | │ │ └ <coroutine object Server.serve at 0x7f4463b048b0> open-webui_1 | │ └ <function Runner.run at 0x7f4463f30fe0> open-webui_1 | └ <asyncio.runners.Runner object at 0x7f446391f350> open-webui_1 | File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run open-webui_1 | return self._loop.run_until_complete(task) open-webui_1 | │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai... open-webui_1 | │ │ └ <cyfunction Loop.run_until_complete at 0x7f446392f2a0> open-webui_1 | │ └ <uvloop.Loop running=True closed=False debug=False> open-webui_1 | └ <asyncio.runners.Runner object at 0x7f446391f350> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro open-webui_1 | await self.app(scope, receive_or_disconnect, send_no_error) open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <starlette_compress.CompressMiddleware object at 0x7f446399c180> open-webui_1 | └ <open_webui.main.RedirectMiddleware object at 0x7f43d99458d0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__ open-webui_1 | return await self._zstd(scope, receive, send) open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f43d8d467a0> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <member '_zstd' of 'CompressMiddleware' objects> open-webui_1 | └ <starlette_compress.CompressMiddleware object at 0x7f446399c180> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__ open-webui_1 | await self.app(scope, receive, wrapper) open-webui_1 | │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <member 'app' of 'ZstdResponder' objects> open-webui_1 | └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f43d9d37080> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ open-webui_1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) open-webui_1 | │ │ │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f43d8d46e80> open-webui_1 | │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ │ │ └ <starlette.requests.Request object at 0x7f43bba74e10> open-webui_1 | │ │ └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f43d9a94750> open-webui_1 | └ <function wrap_app_handling_exceptions at 0x7f4460d9c540> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app open-webui_1 | await app(scope, receive, sender) open-webui_1 | │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ open-webui_1 | await self.middleware_stack(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f4417b4f850>> open-webui_1 | └ <fastapi.routing.APIRouter object at 0x7f4417b4f850> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app open-webui_1 | await route.handle(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <function Route.handle at 0x7f4460d9dbc0> open-webui_1 | └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle open-webui_1 | await self.app(scope, receive, send) open-webui_1 | │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ └ <function request_response.<locals>.app at 0x7f43d996a2a0> open-webui_1 | └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app open-webui_1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send) open-webui_1 | │ │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cdb20> open-webui_1 | │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | │ │ └ <starlette.requests.Request object at 0x7f43bba77c10> open-webui_1 | │ └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160> open-webui_1 | └ <function wrap_app_handling_exceptions at 0x7f4460d9c540> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app open-webui_1 | await app(scope, receive, sender) open-webui_1 | │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f43d82cc540> open-webui_1 | │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f43d8d47a60> open-webui_1 | │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('10.10.10.10', 9999), '... open-webui_1 | └ <function request_response.<locals>.app.<locals>.app at 0x7f43d82ce160> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app open-webui_1 | response = await f(request) open-webui_1 | │ └ <starlette.requests.Request object at 0x7f43bba77c10> open-webui_1 | └ <function get_request_handler.<locals>.app at 0x7f43d996a0c0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app open-webui_1 | raw_response = await run_endpoint_function( open-webui_1 | └ <function run_endpoint_function at 0x7f4460d9f9c0> open-webui_1 | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function open-webui_1 | return await dependant.call(**values) open-webui_1 | │ │ └ {'user': UserModel(id='sanroediasonredisanoreidasoneridaosnreid', name='Peter Pan', email='peter.pan@fantasyland.com', role='admi... open-webui_1 | │ └ <function chat_completion at 0x7f43d996b060> open-webui_1 | └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant... open-webui_1 | open-webui_1 | File "/app/backend/open_webui/main.py", line 1357, in chat_completion open-webui_1 | form_data, metadata, events = await process_chat_payload( open-webui_1 | │ │ └ <function process_chat_payload at 0x7f441838bb00> open-webui_1 | │ └ {'user_id': 'sanroediasonredisanoreidasoneridaosnreid', 'chat_id': 'local', 'message_id': '56172eba-cd70-4a5f-aa73-44fe445ff9ea',... open-webui_1 | └ {'stream': True, 'model': 'qwen2.5:14b', 'messages': [{'role': 'user', 'content': 'Who is teridax?'}], 'metadata': {'user_id'... open-webui_1 | open-webui_1 | File "/app/backend/open_webui/utils/middleware.py", line 833, in process_chat_payload open-webui_1 | form_data = await chat_web_search_handler( open-webui_1 | └ <function chat_web_search_handler at 0x7f441838b880> open-webui_1 | open-webui_1 | > File "/app/backend/open_webui/utils/middleware.py", line 424, in chat_web_search_handler open-webui_1 | results = await process_web_search( open-webui_1 | └ <function process_web_search at 0x7f441bc14f40> open-webui_1 | open-webui_1 | File "/app/backend/open_webui/routers/retrieval.py", line 1946, in process_web_search open-webui_1 | raise HTTPException( open-webui_1 | └ <class 'fastapi.exceptions.HTTPException'> open-webui_1 | open-webui_1 | fastapi.exceptions.HTTPException: 400: [ERROR: 1 validation error for Document open-webui_1 | page_content open-webui_1 | Input should be a valid string [type=string_type, input_value=None, input_type=NoneType] open-webui_1 | For further information visit https://errors.pydantic.dev/2.10/v/string_type] ``` ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-13 04:12:26 -05:00
Author
Owner

@tjbck commented on GitHub (Jul 3, 2025):

Does brave provide snippets for the search results? Bypass web loader is only supported by a select few.

<!-- gh-comment-id:3032046208 --> @tjbck commented on GitHub (Jul 3, 2025): Does brave provide snippets for the search results? Bypass web loader is only supported by a select few.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#72184