diff --git a/src/backend/base/langflow/components/inputs/ChatInput.py b/src/backend/base/langflow/components/inputs/ChatInput.py index 1de364364..406de75b6 100644 --- a/src/backend/base/langflow/components/inputs/ChatInput.py +++ b/src/backend/base/langflow/components/inputs/ChatInput.py @@ -1,6 +1,6 @@ from langflow.base.io.chat import ChatComponent from langflow.field_typing import Text -from langflow.schema import Record +from langflow.schema.message import Message from langflow.template import Input, Output @@ -13,7 +13,7 @@ class ChatInput(ChatComponent): Input( name="input_value", type=str, - display_name="Message", + display_name="Text", multiline=True, input_types=[], info="Message to be passed as input.", @@ -34,24 +34,23 @@ class ChatInput(ChatComponent): ] outputs = [ Output(display_name="Message", name="message", method="text_response"), - Output(display_name="Record", name="record", method="record_response"), + Output(display_name="Record", name="record", method="message_response"), ] def text_response(self) -> Text: result = self.input_value - if self.session_id and isinstance(result, (Record, str)): + if self.session_id and isinstance(result, (Message, str)): self.store_message(result, self.session_id, self.sender, self.sender_name) return result - def record_response(self) -> Record: - record = Record( - data={ - "text": self.input_value, - "sender": self.sender, - "sender_name": self.sender_name, - "session_id": self.session_id, - }, + def message_response(self) -> Message: + message = Message( + text=self.input_value, + sender=self.sender, + sender_name=self.sender_name, + session_id=self.session_id, ) - if self.session_id and isinstance(record, (Record, str)): - self.store_message(record, self.session_id, self.sender, self.sender_name) - return record + if self.session_id and isinstance(message, (Message, str)): + self.store_message(message) + self.status = message + return message diff --git a/src/backend/base/langflow/components/inputs/Prompt.py b/src/backend/base/langflow/components/inputs/Prompt.py index 961f3325f..efb227c5e 100644 --- a/src/backend/base/langflow/components/inputs/Prompt.py +++ b/src/backend/base/langflow/components/inputs/Prompt.py @@ -1,9 +1,9 @@ -from langflow.custom import CustomComponent -from langflow.field_typing import Input +from langflow.custom import Component +from langflow.field_typing import Input, Output from langflow.field_typing.prompt import Prompt -class PromptComponent(CustomComponent): +class PromptComponent(Component): display_name: str = "Prompt" description: str = "Create a prompt template with dynamic variables." icon = "prompts" @@ -11,14 +11,26 @@ class PromptComponent(CustomComponent): def build_config(self): return { "template": Input(display_name="Template"), - "code": Input(advanced=True), } - async def build( + inputs = [ + Input(name="template", type=Prompt, display_name="Template"), + ] + + outputs = [ + Output(display_name="Prompt", name="prompt", method="build_prompt"), + Output(display_name="Text", name="text", method="format_prompt"), + ] + + async def format_prompt(self) -> str: + prompt = await self.build_prompt() + formatted_text = prompt.format_text() + self.status = formatted_text + return formatted_text + + async def build_prompt( self, - template: Prompt, - **kwargs, ) -> Prompt: - prompt = await Prompt.from_template_and_variables(template, kwargs) + prompt = await Prompt.from_template_and_variables(self.template, self.kwargs) self.status = prompt.format_text() return prompt diff --git a/src/backend/base/langflow/components/outputs/ChatOutput.py b/src/backend/base/langflow/components/outputs/ChatOutput.py index d1506310b..0e0bde6f9 100644 --- a/src/backend/base/langflow/components/outputs/ChatOutput.py +++ b/src/backend/base/langflow/components/outputs/ChatOutput.py @@ -1,6 +1,6 @@ from langflow.base.io.chat import ChatComponent from langflow.field_typing import Text -from langflow.schema import Record +from langflow.schema.message import Message from langflow.template import Input, Output @@ -11,7 +11,7 @@ class ChatOutput(ChatComponent): inputs = [ Input( - name="input_value", type=str, display_name="Message", multiline=True, info="Message to be passed as output." + name="input_value", type=str, display_name="Text", multiline=True, info="Message to be passed as output." ), Input( name="sender", @@ -36,26 +36,24 @@ class ChatOutput(ChatComponent): ), ] outputs = [ - Output(display_name="Message", name="message", method="text_response"), - Output(display_name="Record", name="record", method="record_response"), + Output(display_name="Text", name="text", method="text_response"), + Output(display_name="Message", name="message", method="message_response"), ] def text_response(self) -> Text: result = self.input_value - if self.session_id and isinstance(result, (Record, str)): + if self.session_id and isinstance(result, (Message, str)): self.store_message(result, self.session_id, self.sender, self.sender_name) return result - def record_response(self) -> Record: - record = Record( - data={ - "message": self.input_value, - "sender": self.sender, - "sender_name": self.sender_name, - "session_id": self.session_id, - "template": self.record_template or "", - } + def message_response(self) -> Message: + message = Message( + text=self.input_value, + sender=self.sender, + sender_name=self.sender_name, + session_id=self.session_id, ) - if self.session_id and isinstance(record, (Record, str)): - self.store_message(record, self.session_id, self.sender, self.sender_name) - return record + if self.session_id and isinstance(message, (Message, str)): + self.store_message(message) + self.status = message + return message