refactor: Update default prompt input types in PromptField
This commit is contained in:
parent
1ae1410a30
commit
cde1e6a3d2
6 changed files with 18 additions and 108 deletions
|
|
@ -1,92 +0,0 @@
|
||||||
from langflow.custom import Component
|
|
||||||
from langflow.field_typing import Text
|
|
||||||
from langflow.inputs import BoolInput, DropdownInput, TextInput
|
|
||||||
from langflow.template import Output
|
|
||||||
|
|
||||||
|
|
||||||
class TextOperatorComponent(Component):
|
|
||||||
display_name = "Text Operator"
|
|
||||||
description = "Compares two text inputs based on a specified condition such as equality or inequality, with optional case sensitivity."
|
|
||||||
icon = "equal"
|
|
||||||
|
|
||||||
inputs = [
|
|
||||||
TextInput(
|
|
||||||
name="input_text",
|
|
||||||
display_name="Input Text",
|
|
||||||
info="The primary text input for the operation.",
|
|
||||||
),
|
|
||||||
TextInput(
|
|
||||||
name="match_text",
|
|
||||||
display_name="Match Text",
|
|
||||||
info="The text input to compare against.",
|
|
||||||
),
|
|
||||||
DropdownInput(
|
|
||||||
name="operator",
|
|
||||||
display_name="Operator",
|
|
||||||
options=["equals", "not equals", "contains", "starts with", "ends with"],
|
|
||||||
info="The operator to apply for comparing the texts.",
|
|
||||||
),
|
|
||||||
BoolInput(
|
|
||||||
name="case_sensitive",
|
|
||||||
display_name="Case Sensitive",
|
|
||||||
info="If true, the comparison will be case sensitive.",
|
|
||||||
value=False,
|
|
||||||
advanced=True,
|
|
||||||
),
|
|
||||||
TextInput(
|
|
||||||
name="true_output",
|
|
||||||
display_name="True Output",
|
|
||||||
info="The output to return or display when the comparison is true.",
|
|
||||||
advanced=True,
|
|
||||||
),
|
|
||||||
TextInput(
|
|
||||||
name="false_output",
|
|
||||||
display_name="False Output",
|
|
||||||
info="The output to return or display when the comparison is false.",
|
|
||||||
advanced=True,
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
outputs = [
|
|
||||||
Output(display_name="True Result", name="true_result", method="true_response"),
|
|
||||||
Output(display_name="False Result", name="false_result", method="false_response"),
|
|
||||||
]
|
|
||||||
|
|
||||||
def evaluate_condition(self, input_text: str, match_text: str, operator: str, case_sensitive: bool) -> bool:
|
|
||||||
if not case_sensitive:
|
|
||||||
input_text = input_text.lower()
|
|
||||||
match_text = match_text.lower()
|
|
||||||
|
|
||||||
if operator == "equals":
|
|
||||||
return input_text == match_text
|
|
||||||
elif operator == "not equals":
|
|
||||||
return input_text != match_text
|
|
||||||
elif operator == "contains":
|
|
||||||
return match_text in input_text
|
|
||||||
elif operator == "starts with":
|
|
||||||
return input_text.startswith(match_text)
|
|
||||||
elif operator == "ends with":
|
|
||||||
return input_text.endswith(match_text)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def true_response(self) -> Text:
|
|
||||||
result = self.evaluate_condition(self.input_text, self.match_text, self.operator, self.case_sensitive)
|
|
||||||
if result:
|
|
||||||
self.stop("false_result")
|
|
||||||
response = self.true_output if self.true_output else self.input_text
|
|
||||||
self.status = response
|
|
||||||
return response
|
|
||||||
else:
|
|
||||||
self.stop("true_result")
|
|
||||||
return ""
|
|
||||||
|
|
||||||
def false_response(self) -> Text:
|
|
||||||
result = self.evaluate_condition(self.input_text, self.match_text, self.operator, self.case_sensitive)
|
|
||||||
if not result:
|
|
||||||
self.stop("true_result")
|
|
||||||
response = self.false_output if self.false_output else self.input_text
|
|
||||||
self.status = response
|
|
||||||
return response
|
|
||||||
else:
|
|
||||||
self.stop("false_result")
|
|
||||||
return ""
|
|
||||||
|
|
@ -12,10 +12,12 @@ from .RunnableExecutor import RunnableExecComponent
|
||||||
from .SplitText import SplitTextComponent
|
from .SplitText import SplitTextComponent
|
||||||
from .SQLExecutor import SQLExecutorComponent
|
from .SQLExecutor import SQLExecutorComponent
|
||||||
from .SubFlow import SubFlowComponent
|
from .SubFlow import SubFlowComponent
|
||||||
|
from .ConditionalRouter import ConditionalRouterComponent
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"AgentComponent",
|
"AgentComponent",
|
||||||
"ClearMessageHistoryComponent",
|
"ClearMessageHistoryComponent",
|
||||||
|
"ConditionalRouterComponent",
|
||||||
"ExtractKeyFromDataComponent",
|
"ExtractKeyFromDataComponent",
|
||||||
"FlowToolComponent",
|
"FlowToolComponent",
|
||||||
"ListenComponent",
|
"ListenComponent",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.inputs import HandleInput, TextInput
|
from langflow.inputs import DataInput, TextInput
|
||||||
from langflow.schema import Data
|
from langflow.schema import Data
|
||||||
from langflow.template import Output
|
from langflow.template import Output
|
||||||
|
|
||||||
|
|
@ -12,11 +12,10 @@ class FilterDataComponent(Component):
|
||||||
icon = "filter"
|
icon = "filter"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
HandleInput(
|
DataInput(
|
||||||
name="data",
|
name="data",
|
||||||
display_name="Data",
|
display_name="Data",
|
||||||
info="Data object to filter.",
|
info="Data object to filter.",
|
||||||
input_types=["Message", "Data"],
|
|
||||||
),
|
),
|
||||||
TextInput(
|
TextInput(
|
||||||
name="filter_criteria",
|
name="filter_criteria",
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.field_typing import Text
|
|
||||||
from langflow.inputs import DropdownInput, IntInput, TextInput
|
from langflow.inputs import DropdownInput, IntInput, TextInput
|
||||||
from langflow.memory import get_messages
|
from langflow.memory import get_messages
|
||||||
from langflow.schema import Data
|
from langflow.schema import Data
|
||||||
from langflow.template import Output
|
from langflow.template import Output
|
||||||
|
from langflow.schema.message import Message
|
||||||
|
|
||||||
|
|
||||||
class MemoryComponent(Component):
|
class MemoryComponent(Component):
|
||||||
|
|
@ -52,11 +52,11 @@ class MemoryComponent(Component):
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
Output(display_name="Messages", name="messages", method="retrieve_messages"),
|
Output(display_name="Message Data", name="messages", method="retrieve_messages"),
|
||||||
Output(display_name="Text", name="messages_text", method="retrieve_messages_as_text"),
|
Output(display_name="Parsed", name="messages_text", method="retrieve_messages_as_text"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def retrieve_messages(self) -> List[Data]:
|
def retrieve_messages(self) -> Data:
|
||||||
sender = self.sender
|
sender = self.sender
|
||||||
sender_name = self.sender_name
|
sender_name = self.sender_name
|
||||||
session_id = self.session_id
|
session_id = self.session_id
|
||||||
|
|
@ -76,10 +76,10 @@ class MemoryComponent(Component):
|
||||||
self.status = messages
|
self.status = messages
|
||||||
return messages
|
return messages
|
||||||
|
|
||||||
def retrieve_messages_as_text(self) -> Text:
|
def retrieve_messages_as_text(self) -> Message:
|
||||||
messages = self.retrieve_messages()
|
messages = self.retrieve_messages()
|
||||||
messages_text = "\n".join(
|
messages_text = "\n".join(
|
||||||
[f"{message.data.get('sender_name')}: {message.data.get('text')}" for message in messages]
|
[f"{message.data.get('sender_name')}: {message.data.get('text')}" for message in messages]
|
||||||
)
|
)
|
||||||
self.status = messages_text
|
self.status = messages_text
|
||||||
return Text(messages_text)
|
return Message(text=messages_text)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
from langflow.custom import Component
|
from langflow.custom import Component
|
||||||
from langflow.helpers.data import data_to_text
|
from langflow.helpers.data import data_to_text
|
||||||
from langflow.field_typing import Text
|
from langflow.inputs import MultilineInput, DataInput
|
||||||
from langflow.inputs import MultilineInput, HandleInput
|
|
||||||
from langflow.template import Output
|
from langflow.template import Output
|
||||||
|
from langflow.schema.message import Message
|
||||||
|
|
||||||
|
|
||||||
class ParseDataComponent(Component):
|
class ParseDataComponent(Component):
|
||||||
|
|
@ -11,22 +11,23 @@ class ParseDataComponent(Component):
|
||||||
icon = "braces"
|
icon = "braces"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
HandleInput(name="data", display_name="Data", info="The data to convert to text.", input_types=["Data"]),
|
DataInput(name="data", display_name="Data", info="The data to convert to text."),
|
||||||
MultilineInput(
|
MultilineInput(
|
||||||
name="template",
|
name="template",
|
||||||
display_name="Template",
|
display_name="Template",
|
||||||
info="The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.",
|
info="The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.",
|
||||||
|
value="{text}"
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
Output(display_name="Text", name="text", method="parse_data_to_text"),
|
Output(display_name="Text", name="text", method="parse_data"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def parse_data_to_text(self) -> Text:
|
def parse_data(self) -> Message:
|
||||||
data = self.data if isinstance(self.data, list) else [self.data]
|
data = self.data if isinstance(self.data, list) else [self.data]
|
||||||
template = self.template
|
template = self.template
|
||||||
|
|
||||||
result_string = data_to_text(template, data)
|
result_string = data_to_text(template, data)
|
||||||
self.status = result_string
|
self.status = result_string
|
||||||
return result_string
|
return Message(text=result_string)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ from typing import Optional
|
||||||
|
|
||||||
from langflow.template.field.base import Input
|
from langflow.template.field.base import Input
|
||||||
|
|
||||||
DEFAULT_PROMPT_INTUT_TYPES = ["Document", "Message", "Data", "Text"]
|
DEFAULT_PROMPT_INTUT_TYPES = ["Message", "Text"]
|
||||||
|
|
||||||
|
|
||||||
class DefaultPromptField(Input):
|
class DefaultPromptField(Input):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue