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 .SQLExecutor import SQLExecutorComponent
|
||||
from .SubFlow import SubFlowComponent
|
||||
from .ConditionalRouter import ConditionalRouterComponent
|
||||
|
||||
__all__ = [
|
||||
"AgentComponent",
|
||||
"ClearMessageHistoryComponent",
|
||||
"ConditionalRouterComponent",
|
||||
"ExtractKeyFromDataComponent",
|
||||
"FlowToolComponent",
|
||||
"ListenComponent",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from typing import List
|
||||
|
||||
from langflow.custom import Component
|
||||
from langflow.inputs import HandleInput, TextInput
|
||||
from langflow.inputs import DataInput, TextInput
|
||||
from langflow.schema import Data
|
||||
from langflow.template import Output
|
||||
|
||||
|
|
@ -12,11 +12,10 @@ class FilterDataComponent(Component):
|
|||
icon = "filter"
|
||||
|
||||
inputs = [
|
||||
HandleInput(
|
||||
DataInput(
|
||||
name="data",
|
||||
display_name="Data",
|
||||
info="Data object to filter.",
|
||||
input_types=["Message", "Data"],
|
||||
),
|
||||
TextInput(
|
||||
name="filter_criteria",
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
from typing import List
|
||||
|
||||
from langflow.custom import Component
|
||||
from langflow.field_typing import Text
|
||||
from langflow.inputs import DropdownInput, IntInput, TextInput
|
||||
from langflow.memory import get_messages
|
||||
from langflow.schema import Data
|
||||
from langflow.template import Output
|
||||
from langflow.schema.message import Message
|
||||
|
||||
|
||||
class MemoryComponent(Component):
|
||||
|
|
@ -52,11 +52,11 @@ class MemoryComponent(Component):
|
|||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="Messages", name="messages", method="retrieve_messages"),
|
||||
Output(display_name="Text", name="messages_text", method="retrieve_messages_as_text"),
|
||||
Output(display_name="Message Data", name="messages", method="retrieve_messages"),
|
||||
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_name = self.sender_name
|
||||
session_id = self.session_id
|
||||
|
|
@ -76,10 +76,10 @@ class MemoryComponent(Component):
|
|||
self.status = messages
|
||||
return messages
|
||||
|
||||
def retrieve_messages_as_text(self) -> Text:
|
||||
def retrieve_messages_as_text(self) -> Message:
|
||||
messages = self.retrieve_messages()
|
||||
messages_text = "\n".join(
|
||||
[f"{message.data.get('sender_name')}: {message.data.get('text')}" for message in messages]
|
||||
)
|
||||
self.status = messages_text
|
||||
return Text(messages_text)
|
||||
return Message(text=messages_text)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
from langflow.custom import Component
|
||||
from langflow.helpers.data import data_to_text
|
||||
from langflow.field_typing import Text
|
||||
from langflow.inputs import MultilineInput, HandleInput
|
||||
from langflow.inputs import MultilineInput, DataInput
|
||||
from langflow.template import Output
|
||||
from langflow.schema.message import Message
|
||||
|
||||
|
||||
class ParseDataComponent(Component):
|
||||
|
|
@ -11,22 +11,23 @@ class ParseDataComponent(Component):
|
|||
icon = "braces"
|
||||
|
||||
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(
|
||||
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.",
|
||||
value="{text}"
|
||||
),
|
||||
]
|
||||
|
||||
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]
|
||||
template = self.template
|
||||
|
||||
result_string = data_to_text(template, data)
|
||||
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
|
||||
|
||||
DEFAULT_PROMPT_INTUT_TYPES = ["Document", "Message", "Data", "Text"]
|
||||
DEFAULT_PROMPT_INTUT_TYPES = ["Message", "Text"]
|
||||
|
||||
|
||||
class DefaultPromptField(Input):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue