Spaces:
Running
Running
from langflow.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES | |
from langflow.base.io.chat import ChatComponent | |
from langflow.inputs import BoolInput | |
from langflow.io import DropdownInput, FileInput, MessageTextInput, MultilineInput, Output | |
from langflow.schema.message import Message | |
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_USER, MESSAGE_SENDER_USER | |
class ChatInput(ChatComponent): | |
display_name = "Chat Input" | |
description = "Get chat inputs from the Playground." | |
icon = "MessagesSquare" | |
name = "ChatInput" | |
inputs = [ | |
MultilineInput( | |
name="input_value", | |
display_name="Text", | |
value="", | |
info="Message to be passed as input.", | |
), | |
BoolInput( | |
name="should_store_message", | |
display_name="Store Messages", | |
info="Store the message in the history.", | |
value=True, | |
advanced=True, | |
), | |
DropdownInput( | |
name="sender", | |
display_name="Sender Type", | |
options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER], | |
value=MESSAGE_SENDER_USER, | |
info="Type of sender.", | |
advanced=True, | |
), | |
MessageTextInput( | |
name="sender_name", | |
display_name="Sender Name", | |
info="Name of the sender.", | |
value=MESSAGE_SENDER_NAME_USER, | |
advanced=True, | |
), | |
MessageTextInput( | |
name="session_id", | |
display_name="Session ID", | |
info="The session ID of the chat. If empty, the current session ID parameter will be used.", | |
advanced=True, | |
), | |
FileInput( | |
name="files", | |
display_name="Files", | |
file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES, | |
info="Files to be sent with the message.", | |
advanced=True, | |
is_list=True, | |
), | |
MessageTextInput( | |
name="background_color", | |
display_name="Background Color", | |
info="The background color of the icon.", | |
advanced=True, | |
), | |
MessageTextInput( | |
name="chat_icon", | |
display_name="Icon", | |
info="The icon of the message.", | |
advanced=True, | |
), | |
MessageTextInput( | |
name="text_color", | |
display_name="Text Color", | |
info="The text color of the name", | |
advanced=True, | |
), | |
] | |
outputs = [ | |
Output(display_name="Message", name="message", method="message_response"), | |
] | |
async def message_response(self) -> Message: | |
background_color = self.background_color | |
text_color = self.text_color | |
icon = self.chat_icon | |
message = await Message.create( | |
text=self.input_value, | |
sender=self.sender, | |
sender_name=self.sender_name, | |
session_id=self.session_id, | |
files=self.files, | |
properties={"background_color": background_color, "text_color": text_color, "icon": icon}, | |
) | |
if self.session_id and isinstance(message, Message) and self.should_store_message: | |
stored_message = await self.send_message( | |
message, | |
) | |
self.message.value = stored_message | |
message = stored_message | |
self.status = message | |
return message | |