feat!: rename the type BaseChatMessageHistory to Memory (#5190)
* chore: rename the type BaseChatMessageHistory to Memory * Added Memory type with same color as BaseChatMessageHistory * [autofix.ci] apply automated fixes --------- Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
e79b1649a5
commit
2db5f93bd4
18 changed files with 32 additions and 29 deletions
|
|
@ -3,7 +3,8 @@ from abc import abstractmethod
|
||||||
from langchain.memory import ConversationBufferMemory
|
from langchain.memory import ConversationBufferMemory
|
||||||
|
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.field_typing import BaseChatMemory, BaseChatMessageHistory
|
from langflow.field_typing import BaseChatMemory
|
||||||
|
from langflow.field_typing.constants import Memory
|
||||||
from langflow.template import Output
|
from langflow.template import Output
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -32,5 +33,5 @@ class LCChatMemoryComponent(Component):
|
||||||
return ConversationBufferMemory(chat_memory=self.build_message_history())
|
return ConversationBufferMemory(chat_memory=self.build_message_history())
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def build_message_history(self) -> BaseChatMessageHistory:
|
def build_message_history(self) -> Memory:
|
||||||
"""Builds the chat message history memory."""
|
"""Builds the chat message history memory."""
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class MemoryComponent(Component):
|
||||||
HandleInput(
|
HandleInput(
|
||||||
name="memory",
|
name="memory",
|
||||||
display_name="External Memory",
|
display_name="External Memory",
|
||||||
input_types=["BaseChatMessageHistory"],
|
input_types=["Memory"],
|
||||||
info="Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
info="Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
),
|
),
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class StoreMessageComponent(Component):
|
||||||
HandleInput(
|
HandleInput(
|
||||||
name="memory",
|
name="memory",
|
||||||
display_name="External Memory",
|
display_name="External Memory",
|
||||||
input_types=["BaseChatMessageHistory"],
|
input_types=["Memory"],
|
||||||
info="The external memory to store the message. If empty, it will use the Langflow tables.",
|
info="The external memory to store the message. If empty, it will use the Langflow tables.",
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import os
|
||||||
from astrapy.admin import parse_api_endpoint
|
from astrapy.admin import parse_api_endpoint
|
||||||
|
|
||||||
from langflow.base.memory.model import LCChatMemoryComponent
|
from langflow.base.memory.model import LCChatMemoryComponent
|
||||||
from langflow.field_typing import BaseChatMessageHistory
|
from langflow.field_typing.constants import Memory
|
||||||
from langflow.inputs import MessageTextInput, SecretStrInput, StrInput
|
from langflow.inputs import MessageTextInput, SecretStrInput, StrInput
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ class AstraDBChatMemory(LCChatMemoryComponent):
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_message_history(self) -> BaseChatMessageHistory:
|
def build_message_history(self) -> Memory:
|
||||||
try:
|
try:
|
||||||
from langchain_astradb.chat_message_histories import AstraDBChatMessageHistory
|
from langchain_astradb.chat_message_histories import AstraDBChatMessageHistory
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from langflow.base.memory.model import LCChatMemoryComponent
|
from langflow.base.memory.model import LCChatMemoryComponent
|
||||||
from langflow.field_typing import BaseChatMessageHistory
|
from langflow.field_typing.constants import Memory
|
||||||
from langflow.inputs import DictInput, MessageTextInput, SecretStrInput
|
from langflow.inputs import DictInput, MessageTextInput, SecretStrInput
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ class CassandraChatMemory(LCChatMemoryComponent):
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_message_history(self) -> BaseChatMessageHistory:
|
def build_message_history(self) -> Memory:
|
||||||
from langchain_community.chat_message_histories import CassandraChatMessageHistory
|
from langchain_community.chat_message_histories import CassandraChatMessageHistory
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from urllib import parse
|
||||||
from langchain_community.chat_message_histories.redis import RedisChatMessageHistory
|
from langchain_community.chat_message_histories.redis import RedisChatMessageHistory
|
||||||
|
|
||||||
from langflow.base.memory.model import LCChatMemoryComponent
|
from langflow.base.memory.model import LCChatMemoryComponent
|
||||||
from langflow.field_typing import BaseChatMessageHistory
|
from langflow.field_typing.constants import Memory
|
||||||
from langflow.inputs import IntInput, MessageTextInput, SecretStrInput, StrInput
|
from langflow.inputs import IntInput, MessageTextInput, SecretStrInput, StrInput
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ class RedisIndexChatMemory(LCChatMemoryComponent):
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_message_history(self) -> BaseChatMessageHistory:
|
def build_message_history(self) -> Memory:
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
password: str | None = self.password
|
password: str | None = self.password
|
||||||
if self.key_prefix:
|
if self.key_prefix:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from langflow.base.memory.model import LCChatMemoryComponent
|
from langflow.base.memory.model import LCChatMemoryComponent
|
||||||
from langflow.field_typing import BaseChatMessageHistory
|
from langflow.field_typing.constants import Memory
|
||||||
from langflow.inputs import DropdownInput, MessageTextInput, SecretStrInput
|
from langflow.inputs import DropdownInput, MessageTextInput, SecretStrInput
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -24,7 +24,7 @@ class ZepChatMemory(LCChatMemoryComponent):
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_message_history(self) -> BaseChatMessageHistory:
|
def build_message_history(self) -> Memory:
|
||||||
try:
|
try:
|
||||||
# Monkeypatch API_BASE_PATH to
|
# Monkeypatch API_BASE_PATH to
|
||||||
# avoid 404
|
# avoid 404
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@ from langflow.schema.message import Message
|
||||||
NestedDict: TypeAlias = dict[str, str | dict]
|
NestedDict: TypeAlias = dict[str, str | dict]
|
||||||
LanguageModel = TypeVar("LanguageModel", BaseLanguageModel, BaseLLM, BaseChatModel)
|
LanguageModel = TypeVar("LanguageModel", BaseLanguageModel, BaseLLM, BaseChatModel)
|
||||||
ToolEnabledLanguageModel = TypeVar("ToolEnabledLanguageModel", BaseLanguageModel, BaseLLM, BaseChatModel)
|
ToolEnabledLanguageModel = TypeVar("ToolEnabledLanguageModel", BaseLanguageModel, BaseLLM, BaseChatModel)
|
||||||
|
Memory = TypeVar("Memory", bound=BaseChatMessageHistory)
|
||||||
|
|
||||||
Retriever = TypeVar(
|
Retriever = TypeVar(
|
||||||
"Retriever",
|
"Retriever",
|
||||||
BaseRetriever,
|
BaseRetriever,
|
||||||
|
|
@ -65,7 +67,7 @@ LANGCHAIN_BASE_TYPES = {
|
||||||
"BaseMemory": BaseMemory,
|
"BaseMemory": BaseMemory,
|
||||||
"BaseChatMemory": BaseChatMemory,
|
"BaseChatMemory": BaseChatMemory,
|
||||||
"BaseChatModel": BaseChatModel,
|
"BaseChatModel": BaseChatModel,
|
||||||
"BaseChatMessageHistory": BaseChatMessageHistory,
|
"Memory": Memory,
|
||||||
}
|
}
|
||||||
# Langchain base types plus Python base types
|
# Langchain base types plus Python base types
|
||||||
CUSTOM_COMPONENT_SUPPORTED_TYPES = {
|
CUSTOM_COMPONENT_SUPPORTED_TYPES = {
|
||||||
|
|
|
||||||
|
|
@ -573,7 +573,7 @@
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"type": "code",
|
"type": "code",
|
||||||
"value": "from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.inputs import HandleInput\nfrom langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import aget_messages\nfrom langflow.schema import Data\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER\n\n\nclass MemoryComponent(Component):\n display_name = \"Message History\"\n description = \"Retrieves stored chat messages from Langflow tables or an external memory.\"\n icon = \"message-square-more\"\n name = \"Memory\"\n\n inputs = [\n HandleInput(\n name=\"memory\",\n display_name=\"External Memory\",\n input_types=[\"BaseChatMessageHistory\"],\n info=\"Retrieve messages from an external memory. If empty, it will use the Langflow tables.\",\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, \"Machine and User\"],\n value=\"Machine and User\",\n info=\"Filter by sender type.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Filter by sender name.\",\n advanced=True,\n ),\n IntInput(\n name=\"n_messages\",\n display_name=\"Number of Messages\",\n value=100,\n info=\"Number of messages to retrieve.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"order\",\n display_name=\"Order\",\n options=[\"Ascending\", \"Descending\"],\n value=\"Ascending\",\n info=\"Order of the messages.\",\n advanced=True,\n tool_mode=True,\n ),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. \"\n \"It can contain the keys {text}, {sender} or any other key in the message data.\",\n value=\"{sender_name}: {text}\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"messages\", method=\"retrieve_messages\"),\n Output(display_name=\"Text\", name=\"messages_text\", method=\"retrieve_messages_as_text\"),\n ]\n\n async def retrieve_messages(self) -> Data:\n sender = self.sender\n sender_name = self.sender_name\n session_id = self.session_id\n n_messages = self.n_messages\n order = \"DESC\" if self.order == \"Descending\" else \"ASC\"\n\n if sender == \"Machine and User\":\n sender = None\n\n if self.memory:\n # override session_id\n self.memory.session_id = session_id\n\n stored = await self.memory.aget_messages()\n # langchain memories are supposed to return messages in ascending order\n if order == \"DESC\":\n stored = stored[::-1]\n if n_messages:\n stored = stored[:n_messages]\n stored = [Message.from_lc_message(m) for m in stored]\n if sender:\n expected_type = MESSAGE_SENDER_AI if sender == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER\n stored = [m for m in stored if m.type == expected_type]\n else:\n stored = await aget_messages(\n sender=sender,\n sender_name=sender_name,\n session_id=session_id,\n limit=n_messages,\n order=order,\n )\n self.status = stored\n return stored\n\n async def retrieve_messages_as_text(self) -> Message:\n stored_text = data_to_text(self.template, await self.retrieve_messages())\n self.status = stored_text\n return Message(text=stored_text)\n"
|
"value": "from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.inputs import HandleInput\nfrom langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import aget_messages\nfrom langflow.schema import Data\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER\n\n\nclass MemoryComponent(Component):\n display_name = \"Message History\"\n description = \"Retrieves stored chat messages from Langflow tables or an external memory.\"\n icon = \"message-square-more\"\n name = \"Memory\"\n\n inputs = [\n HandleInput(\n name=\"memory\",\n display_name=\"External Memory\",\n input_types=[\"Memory\"],\n info=\"Retrieve messages from an external memory. If empty, it will use the Langflow tables.\",\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, \"Machine and User\"],\n value=\"Machine and User\",\n info=\"Filter by sender type.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Filter by sender name.\",\n advanced=True,\n ),\n IntInput(\n name=\"n_messages\",\n display_name=\"Number of Messages\",\n value=100,\n info=\"Number of messages to retrieve.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"order\",\n display_name=\"Order\",\n options=[\"Ascending\", \"Descending\"],\n value=\"Ascending\",\n info=\"Order of the messages.\",\n advanced=True,\n tool_mode=True,\n ),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. \"\n \"It can contain the keys {text}, {sender} or any other key in the message data.\",\n value=\"{sender_name}: {text}\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"messages\", method=\"retrieve_messages\"),\n Output(display_name=\"Text\", name=\"messages_text\", method=\"retrieve_messages_as_text\"),\n ]\n\n async def retrieve_messages(self) -> Data:\n sender = self.sender\n sender_name = self.sender_name\n session_id = self.session_id\n n_messages = self.n_messages\n order = \"DESC\" if self.order == \"Descending\" else \"ASC\"\n\n if sender == \"Machine and User\":\n sender = None\n\n if self.memory:\n # override session_id\n self.memory.session_id = session_id\n\n stored = await self.memory.aget_messages()\n # langchain memories are supposed to return messages in ascending order\n if order == \"DESC\":\n stored = stored[::-1]\n if n_messages:\n stored = stored[:n_messages]\n stored = [Message.from_lc_message(m) for m in stored]\n if sender:\n expected_type = MESSAGE_SENDER_AI if sender == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER\n stored = [m for m in stored if m.type == expected_type]\n else:\n stored = await aget_messages(\n sender=sender,\n sender_name=sender_name,\n session_id=session_id,\n limit=n_messages,\n order=order,\n )\n self.status = stored\n return stored\n\n async def retrieve_messages_as_text(self) -> Message:\n stored_text = data_to_text(self.template, await self.retrieve_messages())\n self.status = stored_text\n return Message(text=stored_text)\n"
|
||||||
},
|
},
|
||||||
"memory": {
|
"memory": {
|
||||||
"_input_type": "HandleInput",
|
"_input_type": "HandleInput",
|
||||||
|
|
@ -582,7 +582,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -1838,7 +1838,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -2082,7 +2082,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -1128,7 +1128,7 @@
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"type": "code",
|
"type": "code",
|
||||||
"value": "from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.inputs import HandleInput\nfrom langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import aget_messages\nfrom langflow.schema import Data\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER\n\n\nclass MemoryComponent(Component):\n display_name = \"Message History\"\n description = \"Retrieves stored chat messages from Langflow tables or an external memory.\"\n icon = \"message-square-more\"\n name = \"Memory\"\n\n inputs = [\n HandleInput(\n name=\"memory\",\n display_name=\"External Memory\",\n input_types=[\"BaseChatMessageHistory\"],\n info=\"Retrieve messages from an external memory. If empty, it will use the Langflow tables.\",\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, \"Machine and User\"],\n value=\"Machine and User\",\n info=\"Filter by sender type.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Filter by sender name.\",\n advanced=True,\n ),\n IntInput(\n name=\"n_messages\",\n display_name=\"Number of Messages\",\n value=100,\n info=\"Number of messages to retrieve.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"order\",\n display_name=\"Order\",\n options=[\"Ascending\", \"Descending\"],\n value=\"Ascending\",\n info=\"Order of the messages.\",\n advanced=True,\n tool_mode=True,\n ),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. \"\n \"It can contain the keys {text}, {sender} or any other key in the message data.\",\n value=\"{sender_name}: {text}\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"messages\", method=\"retrieve_messages\"),\n Output(display_name=\"Text\", name=\"messages_text\", method=\"retrieve_messages_as_text\"),\n ]\n\n async def retrieve_messages(self) -> Data:\n sender = self.sender\n sender_name = self.sender_name\n session_id = self.session_id\n n_messages = self.n_messages\n order = \"DESC\" if self.order == \"Descending\" else \"ASC\"\n\n if sender == \"Machine and User\":\n sender = None\n\n if self.memory:\n # override session_id\n self.memory.session_id = session_id\n\n stored = await self.memory.aget_messages()\n # langchain memories are supposed to return messages in ascending order\n if order == \"DESC\":\n stored = stored[::-1]\n if n_messages:\n stored = stored[:n_messages]\n stored = [Message.from_lc_message(m) for m in stored]\n if sender:\n expected_type = MESSAGE_SENDER_AI if sender == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER\n stored = [m for m in stored if m.type == expected_type]\n else:\n stored = await aget_messages(\n sender=sender,\n sender_name=sender_name,\n session_id=session_id,\n limit=n_messages,\n order=order,\n )\n self.status = stored\n return stored\n\n async def retrieve_messages_as_text(self) -> Message:\n stored_text = data_to_text(self.template, await self.retrieve_messages())\n self.status = stored_text\n return Message(text=stored_text)\n"
|
"value": "from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.inputs import HandleInput\nfrom langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import aget_messages\nfrom langflow.schema import Data\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER\n\n\nclass MemoryComponent(Component):\n display_name = \"Message History\"\n description = \"Retrieves stored chat messages from Langflow tables or an external memory.\"\n icon = \"message-square-more\"\n name = \"Memory\"\n\n inputs = [\n HandleInput(\n name=\"memory\",\n display_name=\"External Memory\",\n input_types=[\"Memory\"],\n info=\"Retrieve messages from an external memory. If empty, it will use the Langflow tables.\",\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, \"Machine and User\"],\n value=\"Machine and User\",\n info=\"Filter by sender type.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Filter by sender name.\",\n advanced=True,\n ),\n IntInput(\n name=\"n_messages\",\n display_name=\"Number of Messages\",\n value=100,\n info=\"Number of messages to retrieve.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"order\",\n display_name=\"Order\",\n options=[\"Ascending\", \"Descending\"],\n value=\"Ascending\",\n info=\"Order of the messages.\",\n advanced=True,\n tool_mode=True,\n ),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. \"\n \"It can contain the keys {text}, {sender} or any other key in the message data.\",\n value=\"{sender_name}: {text}\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"messages\", method=\"retrieve_messages\"),\n Output(display_name=\"Text\", name=\"messages_text\", method=\"retrieve_messages_as_text\"),\n ]\n\n async def retrieve_messages(self) -> Data:\n sender = self.sender\n sender_name = self.sender_name\n session_id = self.session_id\n n_messages = self.n_messages\n order = \"DESC\" if self.order == \"Descending\" else \"ASC\"\n\n if sender == \"Machine and User\":\n sender = None\n\n if self.memory:\n # override session_id\n self.memory.session_id = session_id\n\n stored = await self.memory.aget_messages()\n # langchain memories are supposed to return messages in ascending order\n if order == \"DESC\":\n stored = stored[::-1]\n if n_messages:\n stored = stored[:n_messages]\n stored = [Message.from_lc_message(m) for m in stored]\n if sender:\n expected_type = MESSAGE_SENDER_AI if sender == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER\n stored = [m for m in stored if m.type == expected_type]\n else:\n stored = await aget_messages(\n sender=sender,\n sender_name=sender_name,\n session_id=session_id,\n limit=n_messages,\n order=order,\n )\n self.status = stored\n return stored\n\n async def retrieve_messages_as_text(self) -> Message:\n stored_text = data_to_text(self.template, await self.retrieve_messages())\n self.status = stored_text\n return Message(text=stored_text)\n"
|
||||||
},
|
},
|
||||||
"memory": {
|
"memory": {
|
||||||
"_input_type": "HandleInput",
|
"_input_type": "HandleInput",
|
||||||
|
|
@ -1137,7 +1137,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -2329,7 +2329,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -903,7 +903,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -848,7 +848,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
@ -1424,7 +1424,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
@ -3315,7 +3315,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -384,7 +384,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -1477,7 +1477,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
@ -2053,7 +2053,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
@ -2629,7 +2629,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
"info": "Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
||||||
"input_types": [
|
"input_types": [
|
||||||
"BaseChatMessageHistory"
|
"Memory"
|
||||||
],
|
],
|
||||||
"list": false,
|
"list": false,
|
||||||
"name": "memory",
|
"name": "memory",
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,6 @@ import {
|
||||||
CopyPlus,
|
CopyPlus,
|
||||||
CornerDownLeft,
|
CornerDownLeft,
|
||||||
Cpu,
|
Cpu,
|
||||||
CpuIcon,
|
|
||||||
Database,
|
Database,
|
||||||
DatabaseZap,
|
DatabaseZap,
|
||||||
Delete,
|
Delete,
|
||||||
|
|
@ -477,6 +476,7 @@ export const nodeColorsName: { [char: string]: string } = {
|
||||||
Tool: "cyan",
|
Tool: "cyan",
|
||||||
BaseChatMemory: "cyan",
|
BaseChatMemory: "cyan",
|
||||||
BaseChatMessageHistory: "orange",
|
BaseChatMessageHistory: "orange",
|
||||||
|
Memory: "orange",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SIDEBAR_CATEGORIES = [
|
export const SIDEBAR_CATEGORIES = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue