I installed open-webui using docker compose via the run-compose.sh script.
Environment
Open WebUI Version: 0.3.31
Ollama (if applicable): 0.3.12
Operating System: whatever the docker container runs
Browser (if applicable): brave
Confirmation:
I have read and followed all the instructions provided in the README.md.
I am on 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 the exact steps to reproduce the bug in the "Steps to Reproduce" section below.
Expected Behavior:
I expect open-webui to pass my image to ollama without error
Actual Behavior:
open-webui returns a 500 error
Description
Bug Summary:
When uploading any image via the upload widget or copy+paste, open-webui returns a 500 error rather than passing the image and query along to ollama
Reproduction Details
Steps to Reproduce:
Add any image to a query, send query to any vision-enabled model.
Logs and Screenshots
Browser Console Logs:
Docker Container Logs:
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/memories/query HTTP/1.1"200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/chat/completions HTTP/1.1"500 Internal Server Error
open-webui | ERROR: Exception in ASGI application
open-webui | + Exception Group Traceback (most recent call last):
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
open-webui || yield
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 190, in __call__
open-webui || async with anyio.create_task_group() as task_group:
open-webui || File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 736, in __aexit__
open-webui || raise BaseExceptionGroup(
open-webui || ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
open-webui | +-+---------------- 1 ----------------
open-webui || Traceback (most recent call last):
open-webui || File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
open-webui ||result= await app(# type: ignore[func-returns-value]
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
open-webui ||return await self.app(scope, receive, send)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
open-webui || await super().__call__(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
open-webui || await self.middleware_stack(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
open-webui || await self.app(scope, receive, _send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 884, in inspect_websocket
open-webui ||return await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 863, in update_embedding_function
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 854, in check_url
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 840, in commit_session_after_request
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
open-webui || await self.simple_response(scope, receive, send, request_headers=headers)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 148, in simple_response
open-webui || await self.app(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 817, in dispatch
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui || with collapse_excgroups():
open-webui || File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui || self.gen.throw(typ, value, traceback)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui ||response= await self.dispatch_func(request, call_next)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 661, in dispatch
open-webui ||response= await call_next(request)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui || raise app_exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui || await self.app(scope, receive_or_disconnect, send_no_error)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
open-webui || await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui || await app(scope, receive, sender)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
open-webui || await self.middleware_stack(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
open-webui || await route.handle(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 297, in handle
open-webui || await self.app(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 77, in app
open-webui || await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui || raise exc
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui || await app(scope, receive, sender)
open-webui || File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 72, in app
open-webui ||response= await func(request)
open-webui || ^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
open-webui ||raw_response= await run_endpoint_function(
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
open-webui ||return await dependant.call(**values)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/app/backend/open_webui/main.py", line 1095, in generate_chat_completions
open-webui ||form_data= GenerateChatCompletionForm(**form_data)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 212, in __init__
open-webui ||validated_self= self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui || ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui || pydantic_core._pydantic_core.ValidationError: 1 validation error for GenerateChatCompletionForm
open-webui || messages.0.content
open-webui || Input should be a valid string [type=string_type, input_value=[{'type': 'text', 'text':...5znqP89qZ8/92kgP/9k='}}], input_type=list]
open-webui | | For further information visit https://errors.pydantic.dev/2.9/v/string_type
open-webui | +------------------------------------
open-webui |
open-webui | During handling of the above exception, another exception occurred:
open-webui |
open-webui | Traceback (most recent call last):
open-webui | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
open-webui | result = await app( # type: ignore[func-returns-value]
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
open-webui | return await self.app(scope, receive, send)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
open-webui | await super().__call__(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
open-webui | await self.middleware_stack(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
open-webui | await self.app(scope, receive, _send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 884, in inspect_websocket
open-webui | return await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 863, in update_embedding_function
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 854, in check_url
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 840, in commit_session_after_request
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
open-webui | await self.simple_response(scope, receive, send, request_headers=headers)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 148, in simple_response
open-webui | await self.app(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 817, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 661, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
open-webui | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | await app(scope, receive, sender)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
open-webui | await self.middleware_stack(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
open-webui | await route.handle(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 297, in handle
open-webui | await self.app(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 77, in app
open-webui | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | await app(scope, receive, sender)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 72, in app
open-webui | response = await func(request)
open-webui | ^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
open-webui | raw_response = await run_endpoint_function(
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
open-webui | return await dependant.call(**values)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 1095, in generate_chat_completions
open-webui | form_data = GenerateChatCompletionForm(**form_data)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 212, in __init__
open-webui | validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | pydantic_core._pydantic_core.ValidationError: 1 validation error for GenerateChatCompletionForm
open-webui | messages.0.content
open-webui | Input should be a valid string [type=string_type, input_value=[{'type': 'text', 'text':...5znqP89qZ8/92kgP/9k='}}], input_type=list]
open-webui | For further information visit https://errors.pydantic.dev/2.9/v/string_type
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/chats/ae5f7380-f89e-4584-a766-43859c3ae131 HTTP/1.1"200 OK
open-webui | INFO: 192.168.1.117:0 - "GET /api/v1/chats/?page=1 HTTP/1.1"200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/chat/completed HTTP/1.1"200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/chats/ae5f7380-f89e-4584-a766-43859c3ae131 HTTP/1.1"200 OK
open-webui | INFO: 192.168.1.117:0 - "GET /api/v1/chats/?page=1 HTTP/1.1"200 OK
Additional Information
Querying ollama directly results in success:
>>>importbase64>>>importrequests>>>fromopenaiimportOpenAI>>>>>>image="/tmp/love.jpg">>>base64_image="">>>withopen(image,"rb")asimg:...base64_image=base64.b64encode(img.read()).decode('utf-8')...>>>client=OpenAI(base_url="http://ollamahost:11434/v1",api_key="abcdefg")>>>model="0ssamaak0/xtuner-llava:llama3-8b-v1.1-f16">>>successful_completion=client.chat.completions.create(...messages=[{..."role":..."user",..."content":[...{..."type":"text",..."text":"What's in this image?"...},...{..."type":"image_url",..."image_url":{..."url":f"data:image/jpeg;base64,{base64_image}"...},...},...],...}],...model=model,...max_tokens=128,...)>>>print(successful_completion.choices[0].message.content)Theimagepresentsaheartwarmingsceneofacatfindingcomfortonaperson's lap. The sleeping feline is nestled against the blue towel that adorns the white couch, its peaceful slumber undisturbed.Inthebackground,anotherfiguresharesthiscozysetting.Thedark-hairedindividual,comfortablyseated,appearsengrossedintheirphone,oblivioustothetranquiltableauunfoldingonthecouch.Theroomitselfissimpleanduncluttered.Ablackdresserstandsagainstonewall,itsdarkhuecontrastingwiththestarkwhiteofthewalls.Nearby,astackofcolorfulbowlsaddsasplashofvibrancyto
Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!
Originally created by @genevera on GitHub (Oct 6, 2024).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/5944
# Bug Report
## Installation Method
I installed open-webui using docker compose via the `run-compose.sh` script.
## Environment
- **Open WebUI Version:** 0.3.31
- **Ollama (if applicable):** 0.3.12
- **Operating System:** whatever the docker container runs
- **Browser (if applicable):** brave
**Confirmation:**
- [x] I have read and followed all the instructions provided in the README.md.
- [x] I am on 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 the exact steps to reproduce the bug in the "Steps to Reproduce" section below.
## Expected Behavior:
I expect open-webui to pass my image to ollama without error
## Actual Behavior:
open-webui returns a 500 error
## Description
**Bug Summary:**
When uploading any image via the upload widget or copy+paste, open-webui returns a 500 error rather than passing the image and query along to ollama
## Reproduction Details
**Steps to Reproduce:**
Add any image to a query, send query to any vision-enabled model.
## Logs and Screenshots
**Browser Console Logs:**

**Docker Container Logs:**
```bash
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/memories/query HTTP/1.1" 200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/chat/completions HTTP/1.1" 500 Internal Server Error
open-webui | ERROR: Exception in ASGI application
open-webui | + Exception Group Traceback (most recent call last):
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 87, in collapse_excgroups
open-webui | | yield
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 190, in __call__
open-webui | | async with anyio.create_task_group() as task_group:
open-webui | | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 736, in __aexit__
open-webui | | raise BaseExceptionGroup(
open-webui | | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
open-webui | +-+---------------- 1 ----------------
open-webui | | Traceback (most recent call last):
open-webui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
open-webui | | result = await app( # type: ignore[func-returns-value]
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
open-webui | | return await self.app(scope, receive, send)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
open-webui | | await super().__call__(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
open-webui | | await self.middleware_stack(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
open-webui | | await self.app(scope, receive, _send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 884, in inspect_websocket
open-webui | | return await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 863, in update_embedding_function
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 854, in check_url
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 840, in commit_session_after_request
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
open-webui | | await self.simple_response(scope, receive, send, request_headers=headers)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 148, in simple_response
open-webui | | await self.app(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 817, in dispatch
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | | with collapse_excgroups():
open-webui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | | self.gen.throw(typ, value, traceback)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | | response = await self.dispatch_func(request, call_next)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 661, in dispatch
open-webui | | response = await call_next(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | | raise app_exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
open-webui | | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | | await app(scope, receive, sender)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
open-webui | | await self.middleware_stack(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
open-webui | | await route.handle(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 297, in handle
open-webui | | await self.app(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 77, in app
open-webui | | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | | raise exc
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | | await app(scope, receive, sender)
open-webui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 72, in app
open-webui | | response = await func(request)
open-webui | | ^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
open-webui | | raw_response = await run_endpoint_function(
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
open-webui | | return await dependant.call(**values)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/app/backend/open_webui/main.py", line 1095, in generate_chat_completions
open-webui | | form_data = GenerateChatCompletionForm(**form_data)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 212, in __init__
open-webui | | validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | | pydantic_core._pydantic_core.ValidationError: 1 validation error for GenerateChatCompletionForm
open-webui | | messages.0.content
open-webui | | Input should be a valid string [type=string_type, input_value=[{'type': 'text', 'text':...5znqP89qZ8/92kgP/9k='}}], input_type=list]
open-webui | | For further information visit https://errors.pydantic.dev/2.9/v/string_type
open-webui | +------------------------------------
open-webui |
open-webui | During handling of the above exception, another exception occurred:
open-webui |
open-webui | Traceback (most recent call last):
open-webui | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
open-webui | result = await app( # type: ignore[func-returns-value]
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
open-webui | return await self.app(scope, receive, send)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
open-webui | await super().__call__(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 123, in __call__
open-webui | await self.middleware_stack(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
open-webui | await self.app(scope, receive, _send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 884, in inspect_websocket
open-webui | return await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 863, in update_embedding_function
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 854, in check_url
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 840, in commit_session_after_request
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
open-webui | await self.simple_response(scope, receive, send, request_headers=headers)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 148, in simple_response
open-webui | await self.app(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 817, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 189, in __call__
open-webui | with collapse_excgroups():
open-webui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
open-webui | self.gen.throw(typ, value, traceback)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 93, in collapse_excgroups
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 191, in __call__
open-webui | response = await self.dispatch_func(request, call_next)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 661, in dispatch
open-webui | response = await call_next(request)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 165, in call_next
open-webui | raise app_exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 151, in coro
open-webui | await self.app(scope, receive_or_disconnect, send_no_error)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
open-webui | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | await app(scope, receive, sender)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 756, in __call__
open-webui | await self.middleware_stack(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 776, in app
open-webui | await route.handle(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 297, in handle
open-webui | await self.app(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 77, in app
open-webui | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
open-webui | raise exc
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
open-webui | await app(scope, receive, sender)
open-webui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 72, in app
open-webui | response = await func(request)
open-webui | ^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 278, in app
open-webui | raw_response = await run_endpoint_function(
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
open-webui | return await dependant.call(**values)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/app/backend/open_webui/main.py", line 1095, in generate_chat_completions
open-webui | form_data = GenerateChatCompletionForm(**form_data)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 212, in __init__
open-webui | validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
open-webui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
open-webui | pydantic_core._pydantic_core.ValidationError: 1 validation error for GenerateChatCompletionForm
open-webui | messages.0.content
open-webui | Input should be a valid string [type=string_type, input_value=[{'type': 'text', 'text':...5znqP89qZ8/92kgP/9k='}}], input_type=list]
open-webui | For further information visit https://errors.pydantic.dev/2.9/v/string_type
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/chats/ae5f7380-f89e-4584-a766-43859c3ae131 HTTP/1.1" 200 OK
open-webui | INFO: 192.168.1.117:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/chat/completed HTTP/1.1" 200 OK
open-webui | INFO: 192.168.1.117:0 - "POST /api/v1/chats/ae5f7380-f89e-4584-a766-43859c3ae131 HTTP/1.1" 200 OK
open-webui | INFO: 192.168.1.117:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 OK
```
## Additional Information
Querying ollama directly results in success:
```python
>>> import base64
>>> import requests
>>> from openai import OpenAI
>>>
>>> image = "/tmp/love.jpg"
>>> base64_image = ""
>>> with open(image, "rb") as img:
... base64_image = base64.b64encode(img.read()).decode('utf-8')
...
>>> client = OpenAI(base_url="http://ollamahost:11434/v1", api_key="abcdefg")
>>> model = "0ssamaak0/xtuner-llava:llama3-8b-v1.1-f16"
>>> successful_completion = client.chat.completions.create(
... messages=[{
... "role":
... "user",
... "content": [
... {
... "type": "text",
... "text": "What's in this image?"
... },
... {
... "type": "image_url",
... "image_url": {
... "url": f"data:image/jpeg;base64,{base64_image}"
... },
... },
... ],
... }],
... model=model,
... max_tokens=128,
... )
>>> print(successful_completion.choices[0].message.content)
The image presents a heartwarming scene of a cat finding comfort on a person's lap. The sleeping feline is nestled against the blue towel that adorns the white couch, its peaceful slumber undisturbed.
In the background, another figure shares this cozy setting. The dark-haired individual, comfortably seated, appears engrossed in their phone, oblivious to the tranquil tableau unfolding on the couch.
The room itself is simple and uncluttered. A black dresser stands against one wall, its dark hue contrasting with the stark white of the walls. Nearby, a stack of colorful bowls adds a splash of vibrancy to
```
## Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!
I forgot i had already filed something similar previously (#3956). That time I was told I was using models that don't support images; this time it's happening with models supporting images. 🤷🏼♀️
<!-- gh-comment-id:2395620208 -->
@genevera commented on GitHub (Oct 6, 2024):
I forgot i had already filed something similar previously (#3956). That time I was told I was using models that don't support images; this time it's happening with models supporting images. 🤷🏼♀️
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @genevera on GitHub (Oct 6, 2024).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/5944
Bug Report
Installation Method
I installed open-webui using docker compose via the
run-compose.shscript.Environment
Open WebUI Version: 0.3.31
Ollama (if applicable): 0.3.12
Operating System: whatever the docker container runs
Browser (if applicable): brave
Confirmation:
Expected Behavior:
I expect open-webui to pass my image to ollama without error
Actual Behavior:
open-webui returns a 500 error
Description
Bug Summary:
When uploading any image via the upload widget or copy+paste, open-webui returns a 500 error rather than passing the image and query along to ollama
Reproduction Details
Steps to Reproduce:
Add any image to a query, send query to any vision-enabled model.
Logs and Screenshots
Browser Console Logs:

Docker Container Logs:
Additional Information
Querying ollama directly results in success:
Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!
@genevera commented on GitHub (Oct 6, 2024):
I forgot i had already filed something similar previously (#3956). That time I was told I was using models that don't support images; this time it's happening with models supporting images. 🤷🏼♀️