Update StoreMessageComponent for enhanced message handling
This commit is contained in:
parent
a892a5e126
commit
add2c48ab1
2 changed files with 40 additions and 50 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.inputs import MessageTextInput, StrInput
|
from langflow.inputs import MessageInput, StrInput
|
||||||
from langflow.schema.message import Message
|
from langflow.schema.message import Message
|
||||||
from langflow.template import Output
|
from langflow.template import Output
|
||||||
from langflow.memory import get_messages, store_message
|
from langflow.memory import get_messages, store_message
|
||||||
|
|
@ -11,22 +11,25 @@ class StoreMessageComponent(Component):
|
||||||
icon = "save"
|
icon = "save"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
MessageTextInput(
|
MessageInput(
|
||||||
name="message",
|
name="message",
|
||||||
display_name="Message",
|
display_name="Message",
|
||||||
info="The chat message to be stored.",
|
info="The chat message to be stored.",
|
||||||
input_types=["Message", "str"],
|
required=True
|
||||||
required=True,
|
|
||||||
),
|
),
|
||||||
StrInput(
|
StrInput(
|
||||||
name="sender",
|
name="sender",
|
||||||
display_name="Sender",
|
display_name="Sender",
|
||||||
info="The sender of the message.",
|
info="The sender of the message.",
|
||||||
value="",
|
value="AI",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
StrInput(
|
StrInput(
|
||||||
name="sender_name", display_name="Sender Name", info="The name of the sender.", value="", advanced=True
|
name="sender_name",
|
||||||
|
display_name="Sender Name",
|
||||||
|
info="The name of the sender.",
|
||||||
|
value="AI",
|
||||||
|
advanced=True
|
||||||
),
|
),
|
||||||
StrInput(
|
StrInput(
|
||||||
name="session_id",
|
name="session_id",
|
||||||
|
|
@ -41,26 +44,13 @@ class StoreMessageComponent(Component):
|
||||||
]
|
]
|
||||||
|
|
||||||
def store_message(self) -> Message:
|
def store_message(self) -> Message:
|
||||||
if isinstance(self.message, str):
|
message = self.message
|
||||||
if not self.session_id:
|
|
||||||
raise ValueError("If passing a text, Session ID cannot be empty.")
|
|
||||||
message = Message(
|
|
||||||
text=self.message, sender=self.sender, sender_name=self.sender_name, session_id=self.session_id
|
|
||||||
)
|
|
||||||
|
|
||||||
elif isinstance(self.message, Message):
|
message.session_id = self.session_id or message.session_id
|
||||||
message = self.message
|
message.sender = self.sender or message.sender
|
||||||
if self.session_id:
|
message.sender_name = self.sender_name or message.sender_name
|
||||||
message.session_id = self.session_id
|
|
||||||
if self.sender:
|
|
||||||
message.sender = self.sender
|
|
||||||
if self.sender_name:
|
|
||||||
message.sender_name = self.sender_name
|
|
||||||
else:
|
|
||||||
raise ValueError("Message should be either string or Message.")
|
|
||||||
|
|
||||||
store_message(message, flow_id=self.graph.flow_id)
|
store_message(message, flow_id=self.graph.flow_id)
|
||||||
|
|
||||||
stored = get_messages(session_id=message.session_id, sender_name=message.sender_name, sender=message.sender)
|
stored = get_messages(session_id=message.session_id, sender_name=message.sender_name, sender=message.sender)
|
||||||
self.status = stored
|
self.status = stored
|
||||||
return stored
|
return stored
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,31 @@
|
||||||
from typing import Union
|
from langflow.custom import Component
|
||||||
|
from langflow.io import MessageInput
|
||||||
|
from langflow.schema.message import Message
|
||||||
|
from langflow.template import Output
|
||||||
|
|
||||||
from langflow.custom import CustomComponent
|
class PassMessageComponent(Component):
|
||||||
from langflow.field_typing import Text
|
|
||||||
from langflow.schema import Data
|
|
||||||
|
|
||||||
|
|
||||||
class PassComponent(CustomComponent):
|
|
||||||
display_name = "Pass"
|
display_name = "Pass"
|
||||||
description = "A pass-through component that forwards the second input while ignoring the first, used for controlling workflow direction."
|
description = "Forwards the input message, unchanged."
|
||||||
field_order = ["ignored_input", "forwarded_input"]
|
icon = "arrow-right"
|
||||||
beta = True
|
|
||||||
|
|
||||||
def build_config(self) -> dict:
|
inputs = [
|
||||||
return {
|
MessageInput(
|
||||||
"ignored_input": {
|
name="input_message",
|
||||||
"display_name": "Ignored Input",
|
display_name="Input Message",
|
||||||
"info": "This input is ignored. It's used to control the flow in the graph.",
|
info="The message to be passed forward.",
|
||||||
"input_types": ["Text", "Data"],
|
),
|
||||||
},
|
MessageInput(
|
||||||
"forwarded_input": {
|
name="ignored_message",
|
||||||
"display_name": "Input",
|
display_name="Ignored Message",
|
||||||
"info": "This input is forwarded by the component.",
|
info="A second message to be ignored. Used as a workaround for continuity.",
|
||||||
"input_types": ["Text", "Data"],
|
advanced=True
|
||||||
},
|
),
|
||||||
}
|
]
|
||||||
|
|
||||||
def build(self, ignored_input: Text, forwarded_input: Text) -> Union[Text, Data]:
|
outputs = [
|
||||||
# The ignored_input is not used in the logic, it's just there for graph flow control
|
Output(display_name="Output Message", name="output_message", method="pass_message"),
|
||||||
self.status = forwarded_input
|
]
|
||||||
return forwarded_input
|
|
||||||
|
def pass_message(self) -> Message:
|
||||||
|
self.status = self.input_message
|
||||||
|
return self.input_message
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue