feat: Add Message and StoreMessage components
The code changes introduce two new components, `MessageComponent` and `StoreMessageComponent`, to the `langflow` project. The `MessageComponent` creates a `Message` object given a session ID, allowing for the creation of chat messages with customizable sender type, sender name, and text. The `StoreMessageComponent` stores a chat message, utilizing the `store_message` function and the `get_messages` function to retrieve the stored messages. These changes aim to enhance the chat functionality of the project.
This commit is contained in:
parent
965b18a4de
commit
b5b02e8a95
3 changed files with 51 additions and 27 deletions
38
src/backend/base/langflow/components/experimental/Message.py
Normal file
38
src/backend/base/langflow/components/experimental/Message.py
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from langflow.custom import CustomComponent
|
||||||
|
from langflow.schema.message import Message
|
||||||
|
|
||||||
|
|
||||||
|
class MessageComponent(CustomComponent):
|
||||||
|
display_name = "Message"
|
||||||
|
description = "Creates a Message object given a Session ID."
|
||||||
|
|
||||||
|
def build_config(self):
|
||||||
|
return {
|
||||||
|
"sender": {
|
||||||
|
"options": ["Machine", "User"],
|
||||||
|
"display_name": "Sender Type",
|
||||||
|
},
|
||||||
|
"sender_name": {"display_name": "Sender Name"},
|
||||||
|
"text": {"display_name": "Text"},
|
||||||
|
"session_id": {
|
||||||
|
"display_name": "Session ID",
|
||||||
|
"info": "Session ID of the chat history.",
|
||||||
|
"input_types": ["Text"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
def build(
|
||||||
|
self,
|
||||||
|
sender: str = "User",
|
||||||
|
sender_name: Optional[str] = None,
|
||||||
|
session_id: Optional[str] = None,
|
||||||
|
text: str = "",
|
||||||
|
) -> Message:
|
||||||
|
message = Message(
|
||||||
|
text=text, sender=sender, sender_name=sender_name, flow_id=self.graph.flow_id, session_id=session_id
|
||||||
|
)
|
||||||
|
|
||||||
|
self.status = message
|
||||||
|
return message
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
from typing import List, Optional
|
|
||||||
|
|
||||||
from langflow.custom import CustomComponent
|
from langflow.custom import CustomComponent
|
||||||
from langflow.memory import get_messages, store_message
|
from langflow.memory import get_messages, store_message
|
||||||
from langflow.schema.message import Message
|
from langflow.schema.message import Message
|
||||||
|
|
@ -7,36 +5,18 @@ from langflow.schema.message import Message
|
||||||
|
|
||||||
class StoreMessageComponent(CustomComponent):
|
class StoreMessageComponent(CustomComponent):
|
||||||
display_name = "Store Message"
|
display_name = "Store Message"
|
||||||
description = "Stores a chat message given a Session ID."
|
description = "Stores a chat message."
|
||||||
beta: bool = True
|
|
||||||
|
|
||||||
def build_config(self):
|
def build_config(self):
|
||||||
return {
|
return {
|
||||||
"sender": {
|
|
||||||
"options": ["Machine", "User"],
|
|
||||||
"display_name": "Sender Type",
|
|
||||||
},
|
|
||||||
"sender_name": {"display_name": "Sender Name"},
|
|
||||||
"message": {"display_name": "Message"},
|
"message": {"display_name": "Message"},
|
||||||
"session_id": {
|
|
||||||
"display_name": "Session ID",
|
|
||||||
"info": "Session ID of the chat history.",
|
|
||||||
"input_types": ["Text"],
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def build(
|
def build(
|
||||||
self,
|
self,
|
||||||
sender: str = "User",
|
message: Message,
|
||||||
sender_name: Optional[str] = None,
|
) -> Message:
|
||||||
session_id: Optional[str] = None,
|
store_message(message, flow_id=self.graph.flow_id)
|
||||||
message: str = "",
|
self.status = get_messages()
|
||||||
) -> List[Message]:
|
|
||||||
store_message(
|
|
||||||
message=Message(
|
|
||||||
text=message, sender=sender, sender_name=sender_name, flow_id=self.graph.flow_id, session_id=session_id
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.status = get_messages(session_id=session_id)
|
return message
|
||||||
return get_messages(session_id=session_id)
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,13 @@ def get_messages(
|
||||||
# so we need to reverse the order
|
# so we need to reverse the order
|
||||||
messages_df = messages_df[::-1] if order == "DESC" else messages_df
|
messages_df = messages_df[::-1] if order == "DESC" else messages_df
|
||||||
for row in messages_df.itertuples():
|
for row in messages_df.itertuples():
|
||||||
msg = Message(text=row.text, sender=row.sender, sender_name=row.sender_name, timestamp=row.timestamp)
|
msg = Message(
|
||||||
|
text=row.text,
|
||||||
|
sender=row.sender,
|
||||||
|
session_id=row.session_id,
|
||||||
|
sender_name=row.sender_name,
|
||||||
|
timestamp=row.timestamp,
|
||||||
|
)
|
||||||
|
|
||||||
messages.append(msg)
|
messages.append(msg)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue