From cb1cc99c91c0993feb4b9b05c5fac558ab4b64d5 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Sun, 16 Jun 2024 20:30:12 -0300 Subject: [PATCH] ```plaintext Prevent duplicate message storage in Chat components Introduce `_message_stored` flag to `ChatInput` and `ChatOutput` components to prevent storing the same message multiple times during a single session. This change ensures that each message is stored only once, enhancing data integrity and reducing redundant operations. ``` --- src/backend/base/langflow/components/inputs/ChatInput.py | 6 +++++- src/backend/base/langflow/components/outputs/ChatOutput.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/base/langflow/components/inputs/ChatInput.py b/src/backend/base/langflow/components/inputs/ChatInput.py index 9f9a47b8b..9072d6ae8 100644 --- a/src/backend/base/langflow/components/inputs/ChatInput.py +++ b/src/backend/base/langflow/components/inputs/ChatInput.py @@ -44,6 +44,8 @@ class ChatInput(ChatComponent): Output(display_name="Text", name="text", method="text_response"), ] + _message_stored = False + def message_response(self) -> Message: message = Message( text=self.input_value, @@ -51,8 +53,10 @@ class ChatInput(ChatComponent): sender_name=self.sender_name, session_id=self.session_id, ) - if self.session_id and isinstance(message, (Message, str)) and isinstance(message.text, str): + if self.session_id and isinstance(message, Message) and isinstance(message.text, str) and not self._message_stored: self.store_message(message) + self._message_stored = True + self.status = message return message diff --git a/src/backend/base/langflow/components/outputs/ChatOutput.py b/src/backend/base/langflow/components/outputs/ChatOutput.py index 5a659e09e..f814a276b 100644 --- a/src/backend/base/langflow/components/outputs/ChatOutput.py +++ b/src/backend/base/langflow/components/outputs/ChatOutput.py @@ -39,6 +39,8 @@ class ChatOutput(ChatComponent): Output(display_name="Text", name="text", method="text_response"), ] + _message_stored = False + def message_response(self) -> Message: message = Message( text=self.input_value, @@ -46,8 +48,10 @@ class ChatOutput(ChatComponent): sender_name=self.sender_name, session_id=self.session_id, ) - if self.session_id and isinstance(message, Message) and isinstance(message.text, str): + if self.session_id and isinstance(message, Message) and isinstance(message.text, str) and not self._message_stored: self.store_message(message) + self._message_stored = True + self.status = message return message