[GH-ISSUE #14584] issue: Pasting Image in UI results in "Error: expected string or bytes-like object, got 'list'" #137033

Closed
opened 2026-05-25 06:03:08 -05:00 by GiteaMirror · 5 comments
Owner

Originally created by @nem0nic on GitHub (Jun 1, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/14584

Check Existing Issues

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

Installation Method

Docker

Open WebUI Version

0.6.13

Ollama Version (if applicable)

0.9.0

Operating System

Fedora

Browser (if applicable)

Chrome and Firefox

Confirmation

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

Expected Behavior

When pasting images, Open WebUI should be able to decode the image and pass it to the model for analysis

Actual Behavior

Error: expected string or bytes-like object, got 'list'

Steps to Reproduce

Paste image into any chat. Doesn't matter what model or what image format.

Logs & Screenshots

`2025-06-01T19:50:38.841857578Z ERROR[FUNC:TIME_AWARENESS]127:2025-06-01 19:50:38,841: Error in <function Filter.inlet at 0x7f9581fd4ae0>: expected string or bytes-like object, got 'list'

2025-06-01T19:50:38.841876544Z Traceback (most recent call last):

2025-06-01T19:50:38.841878679Z File "", line 125, in _wrapper

2025-06-01T19:50:38.841880633Z File "", line 274, in inlet

2025-06-01T19:50:38.841882225Z File "", line 433, in add_or_update_filter_context

2025-06-01T19:50:38.841883748Z File "/usr/local/lib/python3.11/site-packages/bs4/init.py", line 462, in init

2025-06-01T19:50:38.841885271Z for (

2025-06-01T19:50:38.841886644Z File "/usr/local/lib/python3.11/site-packages/bs4/builder/_lxml.py", line 281, in prepare_markup

2025-06-01T19:50:38.841888397Z for encoding in detector.encodings:

2025-06-01T19:50:38.841889780Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 623, in encodings

2025-06-01T19:50:38.841891293Z self.declared_encoding = self.find_declared_encoding(

2025-06-01T19:50:38.841892765Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-06-01T19:50:38.841894168Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 722, in find_declared_encoding

2025-06-01T19:50:38.841895631Z declared_encoding_match = xml_re.search(markup, endpos=xml_endpos)

2025-06-01T19:50:38.841897025Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-06-01T19:50:38.841898427Z TypeError: expected string or bytes-like object, got 'list'

2025-06-01T19:50:38.845341718Z 2025-06-01 19:50:38.841 | ERROR | function_get_current_time:_wrapper:127 - Error in <function Filter.inlet at 0x7f9581fd4ae0>: expected string or bytes-like object, got 'list' - {}

2025-06-01T19:50:38.845352267Z Traceback (most recent call last):

2025-06-01T19:50:38.845354151Z

2025-06-01T19:50:38.845355584Z File "", line 198, in _run_module_as_main

2025-06-01T19:50:38.845357137Z File "", line 88, in _run_code

2025-06-01T19:50:38.845358691Z File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 4, in

2025-06-01T19:50:38.845360264Z uvicorn.main()

2025-06-01T19:50:38.845371204Z │ └

2025-06-01T19:50:38.845373238Z └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/init.py'>

2025-06-01T19:50:38.845374851Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in call

2025-06-01T19:50:38.845376414Z return self.main(*args, **kwargs)

2025-06-01T19:50:38.845377837Z │ │ │ └ {}

2025-06-01T19:50:38.845379251Z │ │ └ ()

2025-06-01T19:50:38.845380653Z │ └ <function Command.main at 0x7f9611ac2700>

2025-06-01T19:50:38.845382146Z └

2025-06-01T19:50:38.845383558Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main

2025-06-01T19:50:38.845385011Z rv = self.invoke(ctx)

2025-06-01T19:50:38.845386373Z │ │ └ <click.core.Context object at 0x7f961284c990>

2025-06-01T19:50:38.845388016Z │ └ <function Command.invoke at 0x7f9611ac23e0>

2025-06-01T19:50:38.845389659Z └

2025-06-01T19:50:38.845391343Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke

2025-06-01T19:50:38.845392905Z return ctx.invoke(self.callback, **ctx.params)

2025-06-01T19:50:38.845394319Z │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...

2025-06-01T19:50:38.845395932Z │ │ │ │ └ <click.core.Context object at 0x7f961284c990>

2025-06-01T19:50:38.845397414Z │ │ │ └ <function main at 0x7f9611780c20>

2025-06-01T19:50:38.845398858Z │ │ └

2025-06-01T19:50:38.845400291Z │ └ <function Context.invoke at 0x7f9611ac1620>

2025-06-01T19:50:38.845401723Z └ <click.core.Context object at 0x7f961284c990>

2025-06-01T19:50:38.845403146Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke

2025-06-01T19:50:38.845404579Z return callback(*args, **kwargs)

2025-06-01T19:50:38.845406383Z │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...

2025-06-01T19:50:38.845407986Z │ └ ()

2025-06-01T19:50:38.845409358Z └ <function main at 0x7f9611780c20>

2025-06-01T19:50:38.845410760Z File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 412, in main

2025-06-01T19:50:38.845412223Z run(

2025-06-01T19:50:38.845413566Z └ <function run at 0x7f9611b9f740>

2025-06-01T19:50:38.845417654Z File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run

2025-06-01T19:50:38.845419167Z server.run()

2025-06-01T19:50:38.845420519Z │ └ <function Server.run at 0x7f9611a20860>

2025-06-01T19:50:38.845421962Z └ <uvicorn.server.Server object at 0x7f9611ba3ad0>

2025-06-01T19:50:38.845423375Z File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run

2025-06-01T19:50:38.845424788Z return asyncio.run(self.serve(sockets=sockets))

2025-06-01T19:50:38.845426181Z │ │ │ │ └ None

2025-06-01T19:50:38.845427613Z │ │ │ └ <function Server.serve at 0x7f9611a20900>

2025-06-01T19:50:38.845429086Z │ │ └ <uvicorn.server.Server object at 0x7f9611ba3ad0>

2025-06-01T19:50:38.845430528Z │ └ <function run at 0x7f9611ef5300>

2025-06-01T19:50:38.845431941Z └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/init.py'>

2025-06-01T19:50:38.845433404Z File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run

2025-06-01T19:50:38.845434887Z return runner.run(main)

2025-06-01T19:50:38.845436360Z │ │ └ <coroutine object Server.serve at 0x7f96119408b0>

2025-06-01T19:50:38.845437853Z │ └ <function Runner.run at 0x7f9611d68ea0>

2025-06-01T19:50:38.845439306Z └ <asyncio.runners.Runner object at 0x7f9611787350>

2025-06-01T19:50:38.845440748Z File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run

2025-06-01T19:50:38.845442181Z return self._loop.run_until_complete(task)

2025-06-01T19:50:38.845443574Z │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai...

2025-06-01T19:50:38.845445227Z │ │ └ <cyfunction Loop.run_until_complete at 0x7f961176b370>

2025-06-01T19:50:38.845446660Z │ └ <uvloop.Loop running=True closed=False debug=False>

2025-06-01T19:50:38.845448103Z └ <asyncio.runners.Runner object at 0x7f9611787350>

2025-06-01T19:50:38.845449565Z File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro

2025-06-01T19:50:38.845451038Z await self.app(scope, receive_or_disconnect, send_no_error)

2025-06-01T19:50:38.845452580Z │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..send_no_error at 0x7f9583102f20>

2025-06-01T19:50:38.845454284Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845455917Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845459726Z │ └ <starlette_compress.CompressMiddleware object at 0x7f9610b65bc0>

2025-06-01T19:50:38.845461228Z └ <open_webui.main.RedirectMiddleware object at 0x7f95883a31d0>

2025-06-01T19:50:38.845462671Z File "/usr/local/lib/python3.11/site-packages/starlette_compress/init.py", line 92, in call

2025-06-01T19:50:38.845464153Z return await self._zstd(scope, receive, send)

2025-06-01T19:50:38.845465536Z │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..send_no_error at 0x7f9583102f20>

2025-06-01T19:50:38.845467159Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845468742Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845470235Z │ └ <member '_zstd' of 'CompressMiddleware' objects>

2025-06-01T19:50:38.845471668Z └ <starlette_compress.CompressMiddleware object at 0x7f9610b65bc0>

2025-06-01T19:50:38.845473111Z File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in call

2025-06-01T19:50:38.845474573Z await self.app(scope, receive, wrapper)

2025-06-01T19:50:38.845475956Z │ │ │ │ └ <function ZstdResponder.call..wrapper at 0x7f9583103380>

2025-06-01T19:50:38.845477509Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845479083Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845480575Z │ └ <member 'app' of 'ZstdResponder' objects>

2025-06-01T19:50:38.845481988Z └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f9588093780>

2025-06-01T19:50:38.845483631Z File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in call

2025-06-01T19:50:38.845485123Z await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)

2025-06-01T19:50:38.845486547Z │ │ │ │ │ │ └ <function ZstdResponder.call..wrapper at 0x7f9583103380>

2025-06-01T19:50:38.845488190Z │ │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845489843Z │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845493770Z │ │ │ └ <starlette.requests.Request object at 0x7f956cab0750>

2025-06-01T19:50:38.845495343Z │ │ └ <fastapi.routing.APIRouter object at 0x7f95c5b73250>

2025-06-01T19:50:38.845496806Z │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f95cd4ddcd0>

2025-06-01T19:50:38.845498299Z └ <function wrap_app_handling_exceptions at 0x7f960eb54e00>

2025-06-01T19:50:38.845499723Z File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app

2025-06-01T19:50:38.845501185Z await app(scope, receive, sender)

2025-06-01T19:50:38.845502568Z │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f9583103d80>

2025-06-01T19:50:38.845504160Z │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845505744Z │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845507226Z └ <fastapi.routing.APIRouter object at 0x7f95c5b73250>

2025-06-01T19:50:38.845508649Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in call

2025-06-01T19:50:38.845510102Z await self.middleware_stack(scope, receive, send)

2025-06-01T19:50:38.845511484Z │ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f9583103d80>

2025-06-01T19:50:38.845513238Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845515051Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845516614Z │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f95c5b73250>>

2025-06-01T19:50:38.845518208Z └ <fastapi.routing.APIRouter object at 0x7f95c5b73250>

2025-06-01T19:50:38.845519670Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app

2025-06-01T19:50:38.845521273Z await route.handle(scope, receive, send)

2025-06-01T19:50:38.845523809Z │ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f9583103d80>

2025-06-01T19:50:38.845525912Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845530541Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845532505Z │ └ <function Route.handle at 0x7f960eb56480>

2025-06-01T19:50:38.845534308Z └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])

2025-06-01T19:50:38.845536112Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle

2025-06-01T19:50:38.845537936Z await self.app(scope, receive, send)

2025-06-01T19:50:38.845539639Z │ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f9583103d80>

2025-06-01T19:50:38.845541653Z │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845543626Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845545560Z │ └ <function request_response..app at 0x7f958330ad40>

2025-06-01T19:50:38.845547494Z └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST'])

2025-06-01T19:50:38.845549418Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app

2025-06-01T19:50:38.845551261Z await wrap_app_handling_exceptions(app, request)(scope, receive, send)

2025-06-01T19:50:38.845553025Z │ │ │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f9583103d80>

2025-06-01T19:50:38.845555108Z │ │ │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845557143Z │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845559077Z │ │ └ <starlette.requests.Request object at 0x7f956cab09d0>

2025-06-01T19:50:38.845568243Z │ └ <function request_response..app..app at 0x7f9583112ac0>

2025-06-01T19:50:38.845571821Z └ <function wrap_app_handling_exceptions at 0x7f960eb54e00>

2025-06-01T19:50:38.845574816Z File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app

2025-06-01T19:50:38.845577582Z await app(scope, receive, sender)

2025-06-01T19:50:38.845580117Z │ │ │ └ <function wrap_app_handling_exceptions..wrapped_app..sender at 0x7f95831137e0>

2025-06-01T19:50:38.845586709Z │ │ └ <function BaseHTTPMiddleware.call..call_next..receive_or_disconnect at 0x7f95831036a0>

2025-06-01T19:50:38.845589976Z │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c...

2025-06-01T19:50:38.845592911Z └ <function request_response..app..app at 0x7f9583112ac0>

2025-06-01T19:50:38.845595947Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app

2025-06-01T19:50:38.845598893Z response = await f(request)

2025-06-01T19:50:38.845600637Z │ └ <starlette.requests.Request object at 0x7f956cab09d0>

2025-06-01T19:50:38.845602490Z └ <function get_request_handler..app at 0x7f958330aca0>

2025-06-01T19:50:38.845604404Z File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app

2025-06-01T19:50:38.845606277Z raw_response = await run_endpoint_function(

2025-06-01T19:50:38.845608171Z └ <function run_endpoint_function at 0x7f960eb942c0>

2025-06-01T19:50:38.845610104Z File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function

2025-06-01T19:50:38.845611927Z return await dependant.call(**values)

2025-06-01T19:50:38.845615625Z │ └ <function chat_completion at 0x7f9583309e40>

2025-06-01T19:50:38.845617439Z └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant...

2025-06-01T19:50:38.845619292Z

2025-06-01T19:50:38.845620945Z File "/app/backend/open_webui/main.py", line 1263, in chat_completion

2025-06-01T19:50:38.845622739Z form_data, metadata, events = await process_chat_payload(

2025-06-01T19:50:38.845624502Z │ │ └ <function process_chat_payload at 0x7f95c5f9c360>

2025-06-01T19:50:38.845626346Z │ └ {'user_id': '15ed2078-ea53-44c9-b0ed-58f85c20b334', 'chat_id': '74e8c35d-fdf6-4d56-be7d-171db3009e87', 'message_id': '435338a...

2025-06-01T19:50:38.845628229Z └ {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-created b...

2025-06-01T19:50:38.845630063Z

2025-06-01T19:50:38.845631696Z File "/app/backend/open_webui/utils/middleware.py", line 819, in process_chat_payload

2025-06-01T19:50:38.845633519Z form_data, flags = await process_filter_functions(

2025-06-01T19:50:38.845635242Z │ └ <function process_filter_functions at 0x7f95ccf42660>

2025-06-01T19:50:38.845637077Z └ {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-created b...

2025-06-01T19:50:38.845641686Z

2025-06-01T19:50:38.845643388Z File "/app/backend/open_webui/utils/filter.py", line 121, in process_filter_functions

2025-06-01T19:50:38.845645222Z form_data = await handler(**params)

2025-06-01T19:50:38.845646966Z │ └ {'body': {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-...

2025-06-01T19:50:38.845648849Z └ <bound method Filter.inlet of <function_get_current_time.Filter object at 0x7f9583481890>>

2025-06-01T19:50:38.845650802Z

2025-06-01T19:50:38.845652435Z > File "", line 125, in _wrapper

2025-06-01T19:50:38.845654289Z File "", line 274, in inlet

2025-06-01T19:50:38.845656114Z File "", line 433, in add_or_update_filter_context

2025-06-01T19:50:38.845658157Z File "/usr/local/lib/python3.11/site-packages/bs4/init.py", line 462, in init

2025-06-01T19:50:38.845660061Z for (

2025-06-01T19:50:38.845661774Z File "/usr/local/lib/python3.11/site-packages/bs4/builder/_lxml.py", line 281, in prepare_markup

2025-06-01T19:50:38.845663598Z for encoding in detector.encodings:

2025-06-01T19:50:38.845665321Z │ └ <property object at 0x7f960e8115d0>

2025-06-01T19:50:38.845667174Z └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350>

2025-06-01T19:50:38.845668988Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 623, in encodings

2025-06-01T19:50:38.845670791Z self.declared_encoding = self.find_declared_encoding(

2025-06-01T19:50:38.845672535Z │ │ │ └ <classmethod(<function EncodingDetector.find_declared_encoding at 0x7f960e82ae80>)>

2025-06-01T19:50:38.845674548Z │ │ └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350>

2025-06-01T19:50:38.845676412Z │ └ None

2025-06-01T19:50:38.845678116Z └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350>

2025-06-01T19:50:38.845680030Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 722, in find_declared_encoding

2025-06-01T19:50:38.845681913Z declared_encoding_match = xml_re.search(markup, endpos=xml_endpos)

2025-06-01T19:50:38.845683677Z │ │ │ └ 1024

2025-06-01T19:50:38.845685560Z │ │ └ [{'type': 'text', 'text': ''}, {'type': 'image_url', 'image_url': {'url': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKQA...

2025-06-01T19:50:38.845687524Z │ └ <method 'search' of 're.Pattern' objects>

2025-06-01T19:50:38.845689397Z └ re.compile('^\s*<\?.encoding='"['"].\?>', re.IGNORECASE)

2025-06-01T19:50:38.845694256Z

2025-06-01T19:50:38.845696040Z TypeError: expected string or bytes-like object, got 'list'`

Additional Information

No response

Originally created by @nem0nic on GitHub (Jun 1, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/14584 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version 0.6.13 ### Ollama Version (if applicable) 0.9.0 ### Operating System Fedora ### Browser (if applicable) Chrome and Firefox ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior When pasting images, Open WebUI should be able to decode the image and pass it to the model for analysis ### Actual Behavior Error: expected string or bytes-like object, got 'list' ### Steps to Reproduce Paste image into any chat. Doesn't matter what model or what image format. ### Logs & Screenshots `2025-06-01T19:50:38.841857578Z ERROR[FUNC:TIME_AWARENESS]127:2025-06-01 19:50:38,841: Error in <function Filter.inlet at 0x7f9581fd4ae0>: expected string or bytes-like object, got 'list' 2025-06-01T19:50:38.841876544Z Traceback (most recent call last): 2025-06-01T19:50:38.841878679Z File "<string>", line 125, in _wrapper 2025-06-01T19:50:38.841880633Z File "<string>", line 274, in inlet 2025-06-01T19:50:38.841882225Z File "<string>", line 433, in add_or_update_filter_context 2025-06-01T19:50:38.841883748Z File "/usr/local/lib/python3.11/site-packages/bs4/__init__.py", line 462, in __init__ 2025-06-01T19:50:38.841885271Z for ( 2025-06-01T19:50:38.841886644Z File "/usr/local/lib/python3.11/site-packages/bs4/builder/_lxml.py", line 281, in prepare_markup 2025-06-01T19:50:38.841888397Z for encoding in detector.encodings: 2025-06-01T19:50:38.841889780Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 623, in encodings 2025-06-01T19:50:38.841891293Z self.declared_encoding = self.find_declared_encoding( 2025-06-01T19:50:38.841892765Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-06-01T19:50:38.841894168Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 722, in find_declared_encoding 2025-06-01T19:50:38.841895631Z declared_encoding_match = xml_re.search(markup, endpos=xml_endpos) 2025-06-01T19:50:38.841897025Z ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-06-01T19:50:38.841898427Z TypeError: expected string or bytes-like object, got 'list' 2025-06-01T19:50:38.845341718Z 2025-06-01 19:50:38.841 | ERROR | function_get_current_time:_wrapper:127 - Error in <function Filter.inlet at 0x7f9581fd4ae0>: expected string or bytes-like object, got 'list' - {} 2025-06-01T19:50:38.845352267Z Traceback (most recent call last): 2025-06-01T19:50:38.845354151Z 2025-06-01T19:50:38.845355584Z File "<frozen runpy>", line 198, in _run_module_as_main 2025-06-01T19:50:38.845357137Z File "<frozen runpy>", line 88, in _run_code 2025-06-01T19:50:38.845358691Z File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module> 2025-06-01T19:50:38.845360264Z uvicorn.main() 2025-06-01T19:50:38.845371204Z │ └ <Command main> 2025-06-01T19:50:38.845373238Z └ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/__init__.py'> 2025-06-01T19:50:38.845374851Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1442, in __call__ 2025-06-01T19:50:38.845376414Z return self.main(*args, **kwargs) 2025-06-01T19:50:38.845377837Z │ │ │ └ {} 2025-06-01T19:50:38.845379251Z │ │ └ () 2025-06-01T19:50:38.845380653Z │ └ <function Command.main at 0x7f9611ac2700> 2025-06-01T19:50:38.845382146Z └ <Command main> 2025-06-01T19:50:38.845383558Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1363, in main 2025-06-01T19:50:38.845385011Z rv = self.invoke(ctx) 2025-06-01T19:50:38.845386373Z │ │ └ <click.core.Context object at 0x7f961284c990> 2025-06-01T19:50:38.845388016Z │ └ <function Command.invoke at 0x7f9611ac23e0> 2025-06-01T19:50:38.845389659Z └ <Command main> 2025-06-01T19:50:38.845391343Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1226, in invoke 2025-06-01T19:50:38.845392905Z return ctx.invoke(self.callback, **ctx.params) 2025-06-01T19:50:38.845394319Z │ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... 2025-06-01T19:50:38.845395932Z │ │ │ │ └ <click.core.Context object at 0x7f961284c990> 2025-06-01T19:50:38.845397414Z │ │ │ └ <function main at 0x7f9611780c20> 2025-06-01T19:50:38.845398858Z │ │ └ <Command main> 2025-06-01T19:50:38.845400291Z │ └ <function Context.invoke at 0x7f9611ac1620> 2025-06-01T19:50:38.845401723Z └ <click.core.Context object at 0x7f961284c990> 2025-06-01T19:50:38.845403146Z File "/usr/local/lib/python3.11/site-packages/click/core.py", line 794, in invoke 2025-06-01T19:50:38.845404579Z return callback(*args, **kwargs) 2025-06-01T19:50:38.845406383Z │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '*', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ... 2025-06-01T19:50:38.845407986Z │ └ () 2025-06-01T19:50:38.845409358Z └ <function main at 0x7f9611780c20> 2025-06-01T19:50:38.845410760Z File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 412, in main 2025-06-01T19:50:38.845412223Z run( 2025-06-01T19:50:38.845413566Z └ <function run at 0x7f9611b9f740> 2025-06-01T19:50:38.845417654Z File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run 2025-06-01T19:50:38.845419167Z server.run() 2025-06-01T19:50:38.845420519Z │ └ <function Server.run at 0x7f9611a20860> 2025-06-01T19:50:38.845421962Z └ <uvicorn.server.Server object at 0x7f9611ba3ad0> 2025-06-01T19:50:38.845423375Z File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 66, in run 2025-06-01T19:50:38.845424788Z return asyncio.run(self.serve(sockets=sockets)) 2025-06-01T19:50:38.845426181Z │ │ │ │ └ None 2025-06-01T19:50:38.845427613Z │ │ │ └ <function Server.serve at 0x7f9611a20900> 2025-06-01T19:50:38.845429086Z │ │ └ <uvicorn.server.Server object at 0x7f9611ba3ad0> 2025-06-01T19:50:38.845430528Z │ └ <function run at 0x7f9611ef5300> 2025-06-01T19:50:38.845431941Z └ <module 'asyncio' from '/usr/local/lib/python3.11/asyncio/__init__.py'> 2025-06-01T19:50:38.845433404Z File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run 2025-06-01T19:50:38.845434887Z return runner.run(main) 2025-06-01T19:50:38.845436360Z │ │ └ <coroutine object Server.serve at 0x7f96119408b0> 2025-06-01T19:50:38.845437853Z │ └ <function Runner.run at 0x7f9611d68ea0> 2025-06-01T19:50:38.845439306Z └ <asyncio.runners.Runner object at 0x7f9611787350> 2025-06-01T19:50:38.845440748Z File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run 2025-06-01T19:50:38.845442181Z return self._loop.run_until_complete(task) 2025-06-01T19:50:38.845443574Z │ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:70> wai... 2025-06-01T19:50:38.845445227Z │ │ └ <cyfunction Loop.run_until_complete at 0x7f961176b370> 2025-06-01T19:50:38.845446660Z │ └ <uvloop.Loop running=True closed=False debug=False> 2025-06-01T19:50:38.845448103Z └ <asyncio.runners.Runner object at 0x7f9611787350> 2025-06-01T19:50:38.845449565Z File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro 2025-06-01T19:50:38.845451038Z await self.app(scope, receive_or_disconnect, send_no_error) 2025-06-01T19:50:38.845452580Z │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f9583102f20> 2025-06-01T19:50:38.845454284Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845455917Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845459726Z │ └ <starlette_compress.CompressMiddleware object at 0x7f9610b65bc0> 2025-06-01T19:50:38.845461228Z └ <open_webui.main.RedirectMiddleware object at 0x7f95883a31d0> 2025-06-01T19:50:38.845462671Z File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__ 2025-06-01T19:50:38.845464153Z return await self._zstd(scope, receive, send) 2025-06-01T19:50:38.845465536Z │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error at 0x7f9583102f20> 2025-06-01T19:50:38.845467159Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845468742Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845470235Z │ └ <member '_zstd' of 'CompressMiddleware' objects> 2025-06-01T19:50:38.845471668Z └ <starlette_compress.CompressMiddleware object at 0x7f9610b65bc0> 2025-06-01T19:50:38.845473111Z File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__ 2025-06-01T19:50:38.845474573Z await self.app(scope, receive, wrapper) 2025-06-01T19:50:38.845475956Z │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f9583103380> 2025-06-01T19:50:38.845477509Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845479083Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845480575Z │ └ <member 'app' of 'ZstdResponder' objects> 2025-06-01T19:50:38.845481988Z └ <starlette_compress._zstd_legacy.ZstdResponder object at 0x7f9588093780> 2025-06-01T19:50:38.845483631Z File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ 2025-06-01T19:50:38.845485123Z await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) 2025-06-01T19:50:38.845486547Z │ │ │ │ │ │ └ <function ZstdResponder.__call__.<locals>.wrapper at 0x7f9583103380> 2025-06-01T19:50:38.845488190Z │ │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845489843Z │ │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845493770Z │ │ │ └ <starlette.requests.Request object at 0x7f956cab0750> 2025-06-01T19:50:38.845495343Z │ │ └ <fastapi.routing.APIRouter object at 0x7f95c5b73250> 2025-06-01T19:50:38.845496806Z │ └ <starlette.middleware.exceptions.ExceptionMiddleware object at 0x7f95cd4ddcd0> 2025-06-01T19:50:38.845498299Z └ <function wrap_app_handling_exceptions at 0x7f960eb54e00> 2025-06-01T19:50:38.845499723Z File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app 2025-06-01T19:50:38.845501185Z await app(scope, receive, sender) 2025-06-01T19:50:38.845502568Z │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f9583103d80> 2025-06-01T19:50:38.845504160Z │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845505744Z │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845507226Z └ <fastapi.routing.APIRouter object at 0x7f95c5b73250> 2025-06-01T19:50:38.845508649Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ 2025-06-01T19:50:38.845510102Z await self.middleware_stack(scope, receive, send) 2025-06-01T19:50:38.845511484Z │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f9583103d80> 2025-06-01T19:50:38.845513238Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845515051Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845516614Z │ └ <bound method Router.app of <fastapi.routing.APIRouter object at 0x7f95c5b73250>> 2025-06-01T19:50:38.845518208Z └ <fastapi.routing.APIRouter object at 0x7f95c5b73250> 2025-06-01T19:50:38.845519670Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app 2025-06-01T19:50:38.845521273Z await route.handle(scope, receive, send) 2025-06-01T19:50:38.845523809Z │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f9583103d80> 2025-06-01T19:50:38.845525912Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845530541Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845532505Z │ └ <function Route.handle at 0x7f960eb56480> 2025-06-01T19:50:38.845534308Z └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) 2025-06-01T19:50:38.845536112Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle 2025-06-01T19:50:38.845537936Z await self.app(scope, receive, send) 2025-06-01T19:50:38.845539639Z │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f9583103d80> 2025-06-01T19:50:38.845541653Z │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845543626Z │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845545560Z │ └ <function request_response.<locals>.app at 0x7f958330ad40> 2025-06-01T19:50:38.845547494Z └ APIRoute(path='/api/chat/completions', name='chat_completion', methods=['POST']) 2025-06-01T19:50:38.845549418Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app 2025-06-01T19:50:38.845551261Z await wrap_app_handling_exceptions(app, request)(scope, receive, send) 2025-06-01T19:50:38.845553025Z │ │ │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f9583103d80> 2025-06-01T19:50:38.845555108Z │ │ │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845557143Z │ │ │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845559077Z │ │ └ <starlette.requests.Request object at 0x7f956cab09d0> 2025-06-01T19:50:38.845568243Z │ └ <function request_response.<locals>.app.<locals>.app at 0x7f9583112ac0> 2025-06-01T19:50:38.845571821Z └ <function wrap_app_handling_exceptions at 0x7f960eb54e00> 2025-06-01T19:50:38.845574816Z File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app 2025-06-01T19:50:38.845577582Z await app(scope, receive, sender) 2025-06-01T19:50:38.845580117Z │ │ │ └ <function wrap_app_handling_exceptions.<locals>.wrapped_app.<locals>.sender at 0x7f95831137e0> 2025-06-01T19:50:38.845586709Z │ │ └ <function BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect at 0x7f95831036a0> 2025-06-01T19:50:38.845589976Z │ └ {'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('172.19.0.4', 8080), 'c... 2025-06-01T19:50:38.845592911Z └ <function request_response.<locals>.app.<locals>.app at 0x7f9583112ac0> 2025-06-01T19:50:38.845595947Z File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app 2025-06-01T19:50:38.845598893Z response = await f(request) 2025-06-01T19:50:38.845600637Z │ └ <starlette.requests.Request object at 0x7f956cab09d0> 2025-06-01T19:50:38.845602490Z └ <function get_request_handler.<locals>.app at 0x7f958330aca0> 2025-06-01T19:50:38.845604404Z File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app 2025-06-01T19:50:38.845606277Z raw_response = await run_endpoint_function( 2025-06-01T19:50:38.845608171Z └ <function run_endpoint_function at 0x7f960eb942c0> 2025-06-01T19:50:38.845610104Z File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function 2025-06-01T19:50:38.845611927Z return await dependant.call(**values) 2025-06-01T19:50:38.845615625Z │ └ <function chat_completion at 0x7f9583309e40> 2025-06-01T19:50:38.845617439Z └ Dependant(path_params=[], query_params=[], header_params=[], cookie_params=[], body_params=[ModelField(field_info=Body(Pydant... 2025-06-01T19:50:38.845619292Z 2025-06-01T19:50:38.845620945Z File "/app/backend/open_webui/main.py", line 1263, in chat_completion 2025-06-01T19:50:38.845622739Z form_data, metadata, events = await process_chat_payload( 2025-06-01T19:50:38.845624502Z │ │ └ <function process_chat_payload at 0x7f95c5f9c360> 2025-06-01T19:50:38.845626346Z │ └ {'user_id': '15ed2078-ea53-44c9-b0ed-58f85c20b334', 'chat_id': '74e8c35d-fdf6-4d56-be7d-171db3009e87', 'message_id': '435338a... 2025-06-01T19:50:38.845628229Z └ {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-created b... 2025-06-01T19:50:38.845630063Z 2025-06-01T19:50:38.845631696Z File "/app/backend/open_webui/utils/middleware.py", line 819, in process_chat_payload 2025-06-01T19:50:38.845633519Z form_data, flags = await process_filter_functions( 2025-06-01T19:50:38.845635242Z │ └ <function process_filter_functions at 0x7f95ccf42660> 2025-06-01T19:50:38.845637077Z └ {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-created b... 2025-06-01T19:50:38.845641686Z 2025-06-01T19:50:38.845643388Z File "/app/backend/open_webui/utils/filter.py", line 121, in process_filter_functions 2025-06-01T19:50:38.845645222Z form_data = await handler(**params) 2025-06-01T19:50:38.845646966Z │ └ {'body': {'stream': True, 'model': 'gemma3:27b', 'messages': [{'role': 'system', 'content': 'You are Nova, an advanced AI co-... 2025-06-01T19:50:38.845648849Z └ <bound method Filter.inlet of <function_get_current_time.Filter object at 0x7f9583481890>> 2025-06-01T19:50:38.845650802Z 2025-06-01T19:50:38.845652435Z > File "<string>", line 125, in _wrapper 2025-06-01T19:50:38.845654289Z File "<string>", line 274, in inlet 2025-06-01T19:50:38.845656114Z File "<string>", line 433, in add_or_update_filter_context 2025-06-01T19:50:38.845658157Z File "/usr/local/lib/python3.11/site-packages/bs4/__init__.py", line 462, in __init__ 2025-06-01T19:50:38.845660061Z for ( 2025-06-01T19:50:38.845661774Z File "/usr/local/lib/python3.11/site-packages/bs4/builder/_lxml.py", line 281, in prepare_markup 2025-06-01T19:50:38.845663598Z for encoding in detector.encodings: 2025-06-01T19:50:38.845665321Z │ └ <property object at 0x7f960e8115d0> 2025-06-01T19:50:38.845667174Z └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350> 2025-06-01T19:50:38.845668988Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 623, in encodings 2025-06-01T19:50:38.845670791Z self.declared_encoding = self.find_declared_encoding( 2025-06-01T19:50:38.845672535Z │ │ │ └ <classmethod(<function EncodingDetector.find_declared_encoding at 0x7f960e82ae80>)> 2025-06-01T19:50:38.845674548Z │ │ └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350> 2025-06-01T19:50:38.845676412Z │ └ None 2025-06-01T19:50:38.845678116Z └ <bs4.dammit.EncodingDetector object at 0x7f95830e4350> 2025-06-01T19:50:38.845680030Z File "/usr/local/lib/python3.11/site-packages/bs4/dammit.py", line 722, in find_declared_encoding 2025-06-01T19:50:38.845681913Z declared_encoding_match = xml_re.search(markup, endpos=xml_endpos) 2025-06-01T19:50:38.845683677Z │ │ │ └ 1024 2025-06-01T19:50:38.845685560Z │ │ └ [{'type': 'text', 'text': ''}, {'type': 'image_url', 'image_url': {'url': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKQA... 2025-06-01T19:50:38.845687524Z │ └ <method 'search' of 're.Pattern' objects> 2025-06-01T19:50:38.845689397Z └ re.compile('^\\s*<\\?.*encoding=[\'"](.*?)[\'"].*\\?>', re.IGNORECASE) 2025-06-01T19:50:38.845694256Z 2025-06-01T19:50:38.845696040Z TypeError: expected string or bytes-like object, got 'list'` ### Additional Information _No response_
GiteaMirror added the bug label 2026-05-25 06:03:08 -05:00
Author
Owner

@taylorwilsdon commented on GitHub (Jun 1, 2025):

Cannot reproduce, just pasted your github avatar in without issue to 0.6.13:

Image

Can you share the actual image you're trying to paste in? Maybe it's a malformed svg or something.

Edit - wait, this is being caused by some 3rd party filter function you're running - add_or_update_filter_context is not part of the Open WebUI codebase. Just disable whatever functions are running and test again, should work.

<!-- gh-comment-id:2927921934 --> @taylorwilsdon commented on GitHub (Jun 1, 2025): Cannot reproduce, just pasted your github avatar in without issue to 0.6.13: <img width="574" alt="Image" src="https://github.com/user-attachments/assets/4be2bb9b-027c-4b47-be94-7d8a7ae961a4" /> Can you share the actual image you're trying to paste in? Maybe it's a malformed svg or something. Edit - wait, this is being caused by some 3rd party filter function you're running - `add_or_update_filter_context` is not part of the Open WebUI codebase. Just disable whatever functions are running and test again, should work.
Author
Owner

@nem0nic commented on GitHub (Jun 1, 2025):

Tried both a simple PNG and JPEG of the openwebui interface just like you did.

Image

PS, also tried on both Windows and Linux just for S&G and to rule out the client machine.

<!-- gh-comment-id:2927924385 --> @nem0nic commented on GitHub (Jun 1, 2025): Tried both a simple PNG and JPEG of the openwebui interface just like you did. ![Image](https://github.com/user-attachments/assets/748a2e9b-1c23-41a5-a26e-f60b3ecbdbe8) PS, also tried on both Windows and Linux just for S&G and to rule out the client machine.
Author
Owner

@taylorwilsdon commented on GitHub (Jun 1, 2025):

Yeah ++ see my edit above, you have a bugged 3rd party function, this isn't related to Open WebUI itself

<!-- gh-comment-id:2927930602 --> @taylorwilsdon commented on GitHub (Jun 1, 2025): Yeah ++ see my edit above, you have a bugged 3rd party function, this isn't related to Open WebUI itself
Author
Owner

@nem0nic commented on GitHub (Jun 1, 2025):

Well that did fix it I'll be dammed. I only have the Date/Time function and just added the Dynamic Image Routing function today to see if it would fix it from the community addons.

Image

<!-- gh-comment-id:2927934683 --> @nem0nic commented on GitHub (Jun 1, 2025): Well that did fix it I'll be dammed. I only have the Date/Time function and just added the Dynamic Image Routing function today to see if it would fix it from the community addons. ![Image](https://github.com/user-attachments/assets/04a1d306-2c50-4a2f-83ca-69f09b08a972)
Author
Owner

@taylorwilsdon commented on GitHub (Jun 1, 2025):

Glad to hear! fwiw @tjbck there might be a decent opportunity here for error messages that highlight the source either in the initial view or collapsed and possible toggle out - even just a little chip that denotes that it's a tool failure / function failure / pipeline failure / openapi failure etc might help folks self solve or at least identify cause to avoid bug reports. Happy to take a run at that if it sounds useful.

<!-- gh-comment-id:2927949699 --> @taylorwilsdon commented on GitHub (Jun 1, 2025): Glad to hear! fwiw @tjbck there might be a decent opportunity here for error messages that highlight the source either in the initial view or collapsed and possible toggle out - even just a little chip that denotes that it's a tool failure / function failure / pipeline failure / openapi failure etc might help folks self solve or at least identify cause to avoid bug reports. Happy to take a run at that if it sounds useful.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#137033