[GH-ISSUE #5944] llava models no longer work #117492

Closed
opened 2026-05-20 19:07:00 -05:00 by GiteaMirror · 1 comment
Owner

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:

  • 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:
image

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:

>>> 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!

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:** ![image](https://github.com/user-attachments/assets/700da098-d7fd-4768-a1f0-1c76df02eff5) **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!
Author
Owner

@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. 🤷🏼‍♀️

<!-- 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. 🤷🏼‍♀️
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#117492