wandb / openui

OpenUI let's you describe UI using your imagination, then see it rendered live.
https://openui.fly.dev
Apache License 2.0
18.84k stars 1.73k forks source link

Error! 500 Internal Server Error: Object of type bytes is not JSON serializable #135

Closed Barkoczy closed 4 months ago

Barkoczy commented 4 months ago

The application runs via docker and after uploading an image when the code of the web page is supposed to be rendered according to the image, an error occurs: Error! 500 Internal Server Error: Object of type bytes is not JSON serializable

I use a local ollama server with model llava

This is my edited docker-compose.yml:

version: '3.8'

services:
  openui:
    container_name: openui
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - "3787:7878"
    env_file:
      - .env
    extra_hosts:
      - "host.docker.internal:host-gateway"

Snímka obrazovky 2024-05-21 191737

openui  | INFO (uvicorn.access):  192.168.1.22:51508 - "POST /v1/chat/completions HTTP/1.1" 500
openui  | ERROR (uvicorn.error):  Exception in ASGI application
openui  | Traceback (most recent call last):
openui  |   File "/venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 411, in run_asgi
openui  |     result = await app(  # type: ignore[func-returns-value]
openui  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__
openui  |     return await self.app(scope, receive, send)
openui  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
openui  |     await super().__call__(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/applications.py", line 123, in __call__
openui  |     await self.middleware_stack(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
openui  |     raise exc
openui  |   File "/venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
openui  |     await self.app(scope, receive, _send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/middleware/sessions.py", line 85, in __call__
openui  |     await self.app(scope, receive, send_wrapper)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 65, in __call__
openui  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
openui  |     raise exc
openui  |   File "/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openui  |     await app(scope, receive, sender)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/routing.py", line 756, in __call__
openui  |     await self.middleware_stack(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/routing.py", line 776, in app
openui  |     await route.handle(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/routing.py", line 297, in handle
openui  |     await self.app(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/routing.py", line 77, in app
openui  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app
openui  |     raise exc
openui  |   File "/venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openui  |     await app(scope, receive, sender)
openui  |   File "/venv/lib/python3.12/site-packages/starlette/routing.py", line 72, in app
openui  |     response = await func(request)
openui  |                ^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/fastapi/routing.py", line 278, in app
openui  |     raw_response = await run_endpoint_function(
openui  |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
openui  |     return await dependant.call(**values)
openui  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/app/openui/server.py", line 167, in chat_completions
openui  |     await ollama_openai.chat.completions.create(
openui  |   File "/venv/lib/python3.12/site-packages/openai/resources/chat/completions.py", line 1181, in create
openui  |     return await self._post(
openui  |            ^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/openai/_base_client.py", line 1790, in post
openui  |     return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)
openui  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/openai/_base_client.py", line 1493, in request
openui  |     return await self._request(
openui  |            ^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/openai/_base_client.py", line 1514, in _request
openui  |     request = self._build_request(options)
openui  |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/openai/_base_client.py", line 484, in _build_request
openui  |     return self._client.build_request(  # pyright: ignore[reportUnknownMemberType]
openui  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/httpx/_client.py", line 357, in build_request
openui  |     return Request(
openui  |            ^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/httpx/_models.py", line 340, in __init__
openui  |     headers, stream = encode_request(
openui  |                       ^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/httpx/_content.py", line 212, in encode_request
openui  |     return encode_json(json)
openui  |            ^^^^^^^^^^^^^^^^^
openui  |   File "/venv/lib/python3.12/site-packages/httpx/_content.py", line 175, in encode_json
openui  |     body = json_dumps(json).encode("utf-8")
openui  |            ^^^^^^^^^^^^^^^^
openui  |   File "/usr/local/lib/python3.12/json/__init__.py", line 231, in dumps
openui  |     return _default_encoder.encode(obj)
openui  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/usr/local/lib/python3.12/json/encoder.py", line 200, in encode
openui  |     chunks = self.iterencode(o, _one_shot=True)
openui  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openui  |   File "/usr/local/lib/python3.12/json/encoder.py", line 258, in iterencode
openui  |     return _iterencode(o, 0)
openui  |            ^^^^^^^^^^^^^^^^^
openui  |   File "/usr/local/lib/python3.12/json/encoder.py", line 180, in default
openui  |     raise TypeError(f'Object of type {o.__class__.__name__} '
openui  | TypeError: Object of type bytes is not JSON serializable
Barkoczy commented 4 months ago

I was using the wrong version of the llava model, everything works.

vanpelt commented 3 months ago

Yeah, currently only the latest version works. Will update and hopefully Ollama supports other vision models soon as well!