From d414662d236f2694e9b15381fbecd2bd9968a744 Mon Sep 17 00:00:00 2001
From: cheadings71 <saas@pvblic.org>
Date: Mon, 26 May 2025 14:35:09 -0700
Subject: [PATCH] fix: resolve chat engagement TypeError - Fix
 get_message_list() to return [] instead of None - Fix middleware to use
 correct metadata message_id - Add safe fallback for missing role field -
 Ensure assistant messages include role field

---
 backend/open_webui/utils/middleware.py | 5 +++--
 backend/open_webui/utils/misc.py       | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py
index 86e1102c5..297b74509 100644
--- a/backend/open_webui/utils/middleware.py
+++ b/backend/open_webui/utils/middleware.py
@@ -1001,7 +1001,7 @@ async def process_chat_response(
         message = message_map.get(metadata["message_id"]) if message_map else None
 
         if message:
-            message_list = get_message_list(message_map, message.get("id"))
+            message_list = get_message_list(message_map, metadata["message_id"])
 
             # Remove details tags and files from the messages.
             # as get_message_list creates a new list, it does not affect
@@ -1027,7 +1027,7 @@ async def process_chat_response(
                 messages.append(
                     {
                         **message,
-                        "role": message["role"],
+                        "role": message.get("role", "assistant"),  # Safe fallback for missing role
                         "content": content,
                     }
                 )
@@ -1195,6 +1195,7 @@ async def process_chat_response(
                         metadata["chat_id"],
                         metadata["message_id"],
                         {
+                            "role": "assistant",
                             "content": content,
                         },
                     )
diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py
index b804afd2c..79f483d04 100644
--- a/backend/open_webui/utils/misc.py
+++ b/backend/open_webui/utils/misc.py
@@ -38,7 +38,7 @@ def get_message_list(messages, message_id):
     current_message = messages.get(message_id)
 
     if not current_message:
-        return None
+        return []  # Return empty list instead of None to prevent iteration errors
 
     # Reconstruct the chain by following the parentId links
     message_list = []
@@ -47,7 +47,7 @@ def get_message_list(messages, message_id):
         message_list.insert(
             0, current_message
         )  # Insert the message at the beginning of the list
-        parent_id = current_message["parentId"]
+        parent_id = current_message.get("parentId")  # Use .get() for safety
         current_message = messages.get(parent_id) if parent_id else None
 
     return message_list