From 80f3c9766863c1dc5f31bacbb367ffafd72da1a9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 13 Jul 2025 01:26:56 +0400 Subject: [PATCH] refac: folder chat handling Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com> --- backend/open_webui/utils/middleware.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 6557ccf8bb..003e97e84c 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -23,6 +23,7 @@ from starlette.responses import Response, StreamingResponse from open_webui.models.chats import Chats +from open_webui.models.folders import Folders from open_webui.models.users import Users from open_webui.socket.main import ( get_event_call, @@ -755,6 +756,26 @@ async def process_chat_payload(request, form_data, user, metadata, model): events = [] sources = [] + # Folder "Project" handling + # Check if the request has chat_id and is inside of a folder + chat_id = metadata.get("chat_id", None) + if chat_id and user: + chat = Chats.get_chat_by_id_and_user_id(chat_id, user.id) + if chat and chat.folder_id: + folder = Folders.get_folder_by_id_and_user_id(chat.folder_id, user.id) + + if folder and folder.data: + if "system_prompt" in folder.data: + form_data["messages"] = add_or_update_system_message( + folder.data["system_prompt"], form_data["messages"] + ) + if "files" in folder.data: + form_data["files"] = [ + *folder.data["files"], + *form_data.get("files", []), + ] + + # Model "Knowledge" handling user_message = get_last_user_message(form_data["messages"]) model_knowledge = model.get("info", {}).get("meta", {}).get("knowledge", False)