From a53c81271658ce32612b97cc97a5ed4798993a8e Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sat, 30 Mar 2024 18:12:52 -0300 Subject: [PATCH] Add order parameter to MessageHistoryComponent and MonitorService --- .../base/langflow/components/helpers/MessageHistory.py | 9 +++++++++ src/backend/base/langflow/memory.py | 2 ++ src/backend/base/langflow/services/monitor/service.py | 4 +++- src/backend/base/langflow/services/monitor/utils.py | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/backend/base/langflow/components/helpers/MessageHistory.py b/src/backend/base/langflow/components/helpers/MessageHistory.py index 0a1724267..c36fa4e0e 100644 --- a/src/backend/base/langflow/components/helpers/MessageHistory.py +++ b/src/backend/base/langflow/components/helpers/MessageHistory.py @@ -26,6 +26,12 @@ class MessageHistoryComponent(CustomComponent): "info": "Session ID of the chat history.", "input_types": ["Text"], }, + "order": { + "options": ["Ascending", "Descending"], + "display_name": "Order", + "info": "Order of the messages.", + "advanced": True, + }, } def build( @@ -34,7 +40,9 @@ class MessageHistoryComponent(CustomComponent): sender_name: Optional[str] = None, session_id: Optional[str] = None, n_messages: int = 5, + order: Optional[str] = "Descending", ) -> List[Record]: + order = "DESC" if order == "Descending" else "ASC" if sender == "Machine and User": sender = None messages = get_messages( @@ -42,6 +50,7 @@ class MessageHistoryComponent(CustomComponent): sender_name=sender_name, session_id=session_id, limit=n_messages, + order=order, ) self.status = messages return messages diff --git a/src/backend/base/langflow/memory.py b/src/backend/base/langflow/memory.py index b0ec04f1c..a1c21f243 100644 --- a/src/backend/base/langflow/memory.py +++ b/src/backend/base/langflow/memory.py @@ -12,6 +12,7 @@ def get_messages( sender_name: Optional[str] = None, session_id: Optional[str] = None, order_by: Optional[str] = "timestamp", + order: Optional[str] = "DESC", limit: Optional[int] = None, ): """ @@ -34,6 +35,7 @@ def get_messages( session_id=session_id, order_by=order_by, limit=limit, + order=order, ) records: list[Record] = [] diff --git a/src/backend/base/langflow/services/monitor/service.py b/src/backend/base/langflow/services/monitor/service.py index ecf710eea..68cf839e5 100644 --- a/src/backend/base/langflow/services/monitor/service.py +++ b/src/backend/base/langflow/services/monitor/service.py @@ -113,6 +113,7 @@ class MonitorService(Service): sender_name: Optional[str] = None, session_id: Optional[str] = None, order_by: Optional[str] = "timestamp", + order: Optional[str] = "DESC", limit: Optional[int] = None, ): query = "SELECT sender_name, sender, session_id, message, artifacts, timestamp FROM messages" @@ -128,7 +129,8 @@ class MonitorService(Service): query += " WHERE " + " AND ".join(conditions) if order_by: - query += f" ORDER BY {order_by}" + # Make sure the order is from newest to oldest + query += f" ORDER BY {order_by} {order.upper()}" if limit is not None: query += f" LIMIT {limit}" diff --git a/src/backend/base/langflow/services/monitor/utils.py b/src/backend/base/langflow/services/monitor/utils.py index 1febdd589..a71653e82 100644 --- a/src/backend/base/langflow/services/monitor/utils.py +++ b/src/backend/base/langflow/services/monitor/utils.py @@ -86,7 +86,7 @@ def add_row_to_table( validated_data = model(**monitor_data) # Extract data for the insert statement - validated_dict = validated_data.model_dump(exclude_unset=True) + validated_dict = validated_data.model_dump() keys = [key for key in validated_dict.keys() if key != INDEX_KEY] columns = ", ".join(keys)