diff --git a/src/backend/base/langflow/components/helpers/MemoryComponent.py b/src/backend/base/langflow/components/helpers/MemoryComponent.py deleted file mode 100644 index 4786424c6..000000000 --- a/src/backend/base/langflow/components/helpers/MemoryComponent.py +++ /dev/null @@ -1,82 +0,0 @@ -from typing import Optional - -from langflow.base.memory.memory import BaseMemoryComponent -from langflow.field_typing import Text -from langflow.helpers.data import messages_to_text -from langflow.memory import get_messages -from langflow.schema.message import Message - - -class MemoryComponent(BaseMemoryComponent): - display_name = "Chat Memory" - description = "Retrieves stored chat messages given a specific Session ID." - beta: bool = True - icon = "history" - - def build_config(self): - return { - "sender": { - "options": ["Machine", "User", "Machine and User"], - "display_name": "Sender Type", - }, - "sender_name": {"display_name": "Sender Name", "advanced": True}, - "n_messages": { - "display_name": "Number of Messages", - "info": "Number of messages to retrieve.", - }, - "session_id": { - "display_name": "Session ID", - "info": "Session ID of the chat history.", - "input_types": ["Text"], - }, - "order": { - "options": ["Ascending", "Descending"], - "display_name": "Order", - "info": "Order of the messages.", - "advanced": True, - }, - "data_template": { - "display_name": "Data Template", - "multiline": True, - "info": "Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.", - "advanced": True, - }, - } - - def get_messages(self, **kwargs) -> list[Message]: - # Validate kwargs by checking if it contains the correct keys - if "sender" not in kwargs: - kwargs["sender"] = None - if "sender_name" not in kwargs: - kwargs["sender_name"] = None - if "session_id" not in kwargs: - kwargs["session_id"] = None - if "limit" not in kwargs: - kwargs["limit"] = 5 - if "order" not in kwargs: - kwargs["order"] = "Descending" - - kwargs["order"] = "DESC" if kwargs["order"] == "Descending" else "ASC" - if kwargs["sender"] == "Machine and User": - kwargs["sender"] = None - return get_messages(**kwargs) - - def build( - self, - sender: Optional[str] = "Machine and User", - sender_name: Optional[str] = None, - session_id: Optional[str] = None, - n_messages: int = 5, - order: Optional[str] = "Descending", - data_template: Optional[str] = "{sender_name}: {text}", - ) -> Text: - messages = self.get_messages( - sender=sender, - sender_name=sender_name, - session_id=session_id, - limit=n_messages, - order=order, - ) - messages_str = messages_to_text(template=data_template or "", messages=messages) - self.status = messages_str - return messages_str diff --git a/src/backend/base/langflow/inputs/input_mixin.py b/src/backend/base/langflow/inputs/input_mixin.py index e1897b89e..917d1ea65 100644 --- a/src/backend/base/langflow/inputs/input_mixin.py +++ b/src/backend/base/langflow/inputs/input_mixin.py @@ -36,8 +36,8 @@ class BaseInputMixin(BaseModel): show: bool = True """Should the field be shown. Defaults to True.""" - value: Any = None - """The value of the field. Default is None.""" + value: Any = "" + """The value of the field. Default is an empty string.""" name: Optional[str] = None """Name of the field. Default is an empty string.""" diff --git a/src/backend/base/langflow/inputs/inputs.py b/src/backend/base/langflow/inputs/inputs.py index df7d91c9e..a59a76984 100644 --- a/src/backend/base/langflow/inputs/inputs.py +++ b/src/backend/base/langflow/inputs/inputs.py @@ -25,7 +25,6 @@ class StrInput(BaseInputMixin, ListableInputMixin, DatabaseLoadMixin): # noqa: field_type: Optional[SerializableFieldTypes] = FieldTypes.TEXT load_from_db: StrictBoolean = False """Defines if the field will allow the user to open a text editor. Default is False.""" - value: Optional[str] = "" class MultilineInput(BaseInputMixin): @@ -54,10 +53,12 @@ class BoolInput(BaseInputMixin, ListableInputMixin): class NestedDictInput(BaseInputMixin, ListableInputMixin): field_type: Optional[SerializableFieldTypes] = FieldTypes.NESTED_DICT + value: Optional[dict] = {} class DictInput(BaseInputMixin, ListableInputMixin): field_type: Optional[SerializableFieldTypes] = FieldTypes.DICT + value: Optional[dict] = {} class DropdownInput(BaseInputMixin, DropDownMixin):