|
@@ -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)
|
|
|
|