From a9609585afaff011e2a5f2a6d12290ddd15edad9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 27 Dec 2025 01:41:06 +0400 Subject: [PATCH] refac --- backend/open_webui/routers/chats.py | 32 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index 2b2bd3cedd..c235aeb611 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -222,6 +222,18 @@ def calculate_chat_stats(user_id, skip=0, limit=10, filter=None): chat_stats_export_list = [] + def get_message_content_length(message): + content = message.get("content", "") + if isinstance(content, str): + return len(content) + elif isinstance(content, list): + return sum( + len(item.get("text", "")) + for item in content + if item.get("type") == "text" + ) + return 0 + for chat in result.items: try: messages_map = chat.chat.get("history", {}).get("messages", {}) @@ -235,13 +247,7 @@ def calculate_chat_stats(user_id, skip=0, limit=10, filter=None): export_messages = {} for key, message in messages_map.items(): try: - content = message.get("content", "") - if isinstance(content, str): - content_length = len(content) - else: - content_length = ( - 0 # Handle cases where content might be None or not string - ) + content_length = get_message_content_length(message) # Extract rating safely rating = message.get("annotation", {}).get("rating") @@ -277,22 +283,14 @@ def calculate_chat_stats(user_id, skip=0, limit=10, filter=None): # Calculate Averages average_user_message_content_length = ( - sum( - len(m.get("content", "")) - for m in history_user_messages - if isinstance(m.get("content"), str) - ) + sum(get_message_content_length(m) for m in history_user_messages) / len(history_user_messages) if history_user_messages else 0 ) average_assistant_message_content_length = ( - sum( - len(m.get("content", "")) - for m in history_assistant_messages - if isinstance(m.get("content"), str) - ) + sum(get_message_content_length(m) for m in history_assistant_messages) / len(history_assistant_messages) if history_assistant_messages else 0