From 4e58b78102e07cb0bf06ec9b304366f0d4d9d337 Mon Sep 17 00:00:00 2001 From: wo0d Date: Fri, 22 Sep 2023 23:15:59 +0800 Subject: [PATCH] Fix chat_history message order (#10869) Not all databases uses id as default order, so add it explicitly sqlite uses rawid as default order in select statement: [https://www.sqlite.org/lang_createtable.html#rowid](https://www.sqlite.org/lang_createtable.html#rowid), but some other databases like postgresql not behaves like this. since this class supports multiple db engine. we should have an order. --- .../langchain/memory/chat_message_histories/sql.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libs/langchain/langchain/memory/chat_message_histories/sql.py b/libs/langchain/langchain/memory/chat_message_histories/sql.py index 019ffd58b8..610d049c51 100644 --- a/libs/langchain/langchain/memory/chat_message_histories/sql.py +++ b/libs/langchain/langchain/memory/chat_message_histories/sql.py @@ -109,9 +109,13 @@ class SQLChatMessageHistory(BaseChatMessageHistory): def messages(self) -> List[BaseMessage]: # type: ignore """Retrieve all messages from db""" with self.Session() as session: - result = session.query(self.sql_model_class).where( - getattr(self.sql_model_class, self.session_id_field_name) - == self.session_id + result = ( + session.query(self.sql_model_class) + .where( + getattr(self.sql_model_class, self.session_id_field_name) + == self.session_id + ) + .order_by(self.sql_model_class.id.asc()) ) messages = [] for record in result: