From ea578af45f6b350bce79b5af471201a0d96307a9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 16 Jun 2025 12:37:41 +0400 Subject: [PATCH] refac: use first user message as title instead of 'new chat' --- backend/open_webui/utils/middleware.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 0106779a8..aba3f8c06 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1078,6 +1078,7 @@ async def process_chat_response( follow_ups = json.loads(follow_ups_string).get( "follow_ups", [] ) + Chats.upsert_message_to_chat_by_id_and_message_id( metadata["chat_id"], metadata["message_id"], @@ -1098,7 +1099,12 @@ async def process_chat_response( pass if TASKS.TITLE_GENERATION in tasks: + user_message = get_last_user_message(messages) + if user_message and len(user_message) > 100: + user_message = user_message[:100] + "..." + if tasks[TASKS.TITLE_GENERATION]: + res = await generate_title( request, { @@ -1114,7 +1120,9 @@ async def process_chat_response( title_string = ( res.get("choices", [])[0] .get("message", {}) - .get("content", message.get("content", "New Chat")) + .get( + "content", message.get("content", user_message) + ) ) else: title_string = "" @@ -1125,13 +1133,13 @@ async def process_chat_response( try: title = json.loads(title_string).get( - "title", "New Chat" + "title", user_message ) except Exception as e: title = "" if not title: - title = messages[0].get("content", "New Chat") + title = messages[0].get("content", user_message) Chats.update_chat_title_by_id(metadata["chat_id"], title) @@ -1142,14 +1150,14 @@ async def process_chat_response( } ) elif len(messages) == 2: - title = messages[0].get("content", "New Chat") + title = messages[0].get("content", user_message) Chats.update_chat_title_by_id(metadata["chat_id"], title) await event_emitter( { "type": "chat:title", - "data": message.get("content", "New Chat"), + "data": message.get("content", user_message), } )