From fbff4e19de591a440fcc5716e6796a6ed2d512b7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 22 Aug 2025 16:47:05 +0400 Subject: [PATCH 1/4] fix: reranking --- backend/open_webui/retrieval/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index aeaa741c94..862972187d 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -966,7 +966,7 @@ class RerankCompressor(BaseDocumentCompressor): ) scores = util.cos_sim(query_embedding, document_embedding)[0] - if scores: + if scores is not None: docs_with_scores = list( zip( documents, From 72b25ab78bb00424e027d17427ec0c7fd78b4ed0 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 22 Aug 2025 16:58:25 +0400 Subject: [PATCH 2/4] fix: image generation --- backend/open_webui/routers/images.py | 30 +++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index c28e60da75..8b5c226d4a 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -10,7 +10,15 @@ from typing import Optional from urllib.parse import quote import requests -from fastapi import APIRouter, Depends, HTTPException, Request, UploadFile +from fastapi import ( + APIRouter, + Depends, + HTTPException, + Request, + UploadFile, + BackgroundTasks, +) + from open_webui.config import CACHE_DIR from open_webui.constants import ERROR_MESSAGES from open_webui.env import ENABLE_FORWARD_USER_INFO_HEADERS, SRC_LOG_LEVELS @@ -460,7 +468,7 @@ def load_url_image_data(url, headers=None): return None -def upload_image(request, image_data, content_type, metadata, user): +def upload_image(request, background_tasks, image_data, content_type, metadata, user): image_format = mimetypes.guess_extension(content_type) file = UploadFile( file=io.BytesIO(image_data), @@ -470,7 +478,12 @@ def upload_image(request, image_data, content_type, metadata, user): }, ) file_item = upload_file( - request, file=file, metadata=metadata, process=False, user=user + request, + background_tasks, + file=file, + metadata=metadata, + process=False, + user=user, ) url = request.app.url_path_for("get_file_content_by_id", id=file_item.id) return url @@ -479,6 +492,7 @@ def upload_image(request, image_data, content_type, metadata, user): @router.post("/generations") async def image_generations( request: Request, + background_tasks: BackgroundTasks, form_data: GenerateImageForm, user=Depends(get_verified_user), ): @@ -552,7 +566,9 @@ async def image_generations( else: image_data, content_type = load_b64_image_data(image["b64_json"]) - url = upload_image(request, image_data, content_type, data, user) + url = upload_image( + request, background_tasks, image_data, content_type, data, user + ) images.append({"url": url}) return images @@ -586,7 +602,9 @@ async def image_generations( image_data, content_type = load_b64_image_data( image["bytesBase64Encoded"] ) - url = upload_image(request, image_data, content_type, data, user) + url = upload_image( + request, background_tasks, image_data, content_type, data, user + ) images.append({"url": url}) return images @@ -637,6 +655,7 @@ async def image_generations( image_data, content_type = load_url_image_data(image["url"], headers) url = upload_image( request, + background_tasks, image_data, content_type, form_data.model_dump(exclude_none=True), @@ -690,6 +709,7 @@ async def image_generations( image_data, content_type = load_b64_image_data(image) url = upload_image( request, + background_tasks, image_data, content_type, {**data, "info": res["info"]}, From 37a3de0703c472db42633d6007a19a428c7e4e67 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 22 Aug 2025 17:19:57 +0400 Subject: [PATCH 3/4] fix --- backend/open_webui/routers/files.py | 42 +++++++++++++++++++++------- backend/open_webui/routers/images.py | 19 ++++--------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 67b3de193e..3b46d0bd8a 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -144,6 +144,17 @@ def upload_file( metadata: Optional[dict | str] = Form(None), process: bool = Query(True), user=Depends(get_verified_user), +): + return upload_file_handler(request, file, metadata, process, user, background_tasks) + + +def upload_file_handler( + request: Request, + file: UploadFile = File(...), + metadata: Optional[dict | str] = Form(None), + process: bool = Query(True), + user=Depends(get_verified_user), + background_tasks: Optional[BackgroundTasks] = None, ): log.info(f"file.content_type: {file.content_type}") @@ -214,16 +225,27 @@ def upload_file( ) if process: - background_tasks.add_task( - process_uploaded_file, - request, - file, - file_path, - file_item, - file_metadata, - user, - ) - return {"status": True, **file_item.model_dump()} + if background_tasks: + background_tasks.add_task( + process_uploaded_file, + request, + file, + file_path, + file_item, + file_metadata, + user, + ) + return {"status": True, **file_item.model_dump()} + else: + process_uploaded_file( + request, + file, + file_path, + file_item, + file_metadata, + user, + ) + return {"status": True, **file_item.model_dump()} else: if file_item: return file_item diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index 8b5c226d4a..9311cb6e2c 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -16,13 +16,12 @@ from fastapi import ( HTTPException, Request, UploadFile, - BackgroundTasks, ) from open_webui.config import CACHE_DIR from open_webui.constants import ERROR_MESSAGES from open_webui.env import ENABLE_FORWARD_USER_INFO_HEADERS, SRC_LOG_LEVELS -from open_webui.routers.files import upload_file +from open_webui.routers.files import upload_file_handler from open_webui.utils.auth import get_admin_user, get_verified_user from open_webui.utils.images.comfyui import ( ComfyUIGenerateImageForm, @@ -468,7 +467,7 @@ def load_url_image_data(url, headers=None): return None -def upload_image(request, background_tasks, image_data, content_type, metadata, user): +def upload_image(request, image_data, content_type, metadata, user): image_format = mimetypes.guess_extension(content_type) file = UploadFile( file=io.BytesIO(image_data), @@ -477,9 +476,8 @@ def upload_image(request, background_tasks, image_data, content_type, metadata, "content-type": content_type, }, ) - file_item = upload_file( + file_item = upload_file_handler( request, - background_tasks, file=file, metadata=metadata, process=False, @@ -492,7 +490,6 @@ def upload_image(request, background_tasks, image_data, content_type, metadata, @router.post("/generations") async def image_generations( request: Request, - background_tasks: BackgroundTasks, form_data: GenerateImageForm, user=Depends(get_verified_user), ): @@ -566,9 +563,7 @@ async def image_generations( else: image_data, content_type = load_b64_image_data(image["b64_json"]) - url = upload_image( - request, background_tasks, image_data, content_type, data, user - ) + url = upload_image(request, image_data, content_type, data, user) images.append({"url": url}) return images @@ -602,9 +597,7 @@ async def image_generations( image_data, content_type = load_b64_image_data( image["bytesBase64Encoded"] ) - url = upload_image( - request, background_tasks, image_data, content_type, data, user - ) + url = upload_image(request, image_data, content_type, data, user) images.append({"url": url}) return images @@ -655,7 +648,6 @@ async def image_generations( image_data, content_type = load_url_image_data(image["url"], headers) url = upload_image( request, - background_tasks, image_data, content_type, form_data.model_dump(exclude_none=True), @@ -709,7 +701,6 @@ async def image_generations( image_data, content_type = load_b64_image_data(image) url = upload_image( request, - background_tasks, image_data, content_type, {**data, "info": res["info"]}, From dafedf567561fdeb2f3010900cf99846820a3c69 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 22 Aug 2025 17:20:05 +0400 Subject: [PATCH 4/4] chore: bump --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5fef6cf78..4f7619c7c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.25] - 2025-08-22 + +### Fixed + +- 🖼️ **Image Generation Reliability Restored**: Fixed a key issue causing image generation failures. +- 🏆 **Reranking Functionality Restored**: Resolved errors with rerank feature. + ## [0.6.24] - 2025-08-21 ### Added diff --git a/package-lock.json b/package-lock.json index e47a722dd3..42b16afc8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.24", + "version": "0.6.25", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.24", + "version": "0.6.25", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index dba62ec5ee..90ab645e7a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.24", + "version": "0.6.25", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host",