refactor: Update TextOperatorComponent to handle default outputs
This commit is contained in:
parent
7d7e641260
commit
505ca31467
2 changed files with 28 additions and 29 deletions
|
|
@ -25,7 +25,6 @@ class TextOperatorComponent(Component):
|
||||||
display_name="Operator",
|
display_name="Operator",
|
||||||
options=["equals", "not equals", "contains", "starts with", "ends with"],
|
options=["equals", "not equals", "contains", "starts with", "ends with"],
|
||||||
info="The operator to apply for comparing the texts.",
|
info="The operator to apply for comparing the texts.",
|
||||||
value="equals",
|
|
||||||
),
|
),
|
||||||
BoolInput(
|
BoolInput(
|
||||||
name="case_sensitive",
|
name="case_sensitive",
|
||||||
|
|
@ -37,13 +36,13 @@ class TextOperatorComponent(Component):
|
||||||
StrInput(
|
StrInput(
|
||||||
name="true_output",
|
name="true_output",
|
||||||
display_name="True Output",
|
display_name="True Output",
|
||||||
info="The output to return or display when the comparison is true. If not passed, defaults to Input Text.",
|
info="The output to return or display when the comparison is true.",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
StrInput(
|
StrInput(
|
||||||
name="false_output",
|
name="false_output",
|
||||||
display_name="False Output",
|
display_name="False Output",
|
||||||
info="The output to return or display when the comparison is false. If not passed, defaults to Input Text.",
|
info="The output to return or display when the comparison is false.",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -53,41 +52,41 @@ class TextOperatorComponent(Component):
|
||||||
Output(display_name="False Result", name="false_result", method="false_response"),
|
Output(display_name="False Result", name="false_result", method="false_response"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def true_response(self) -> Text:
|
def evaluate_condition(self, input_text: str, match_text: str, operator: str, case_sensitive: bool) -> bool:
|
||||||
self.stop("false_result")
|
|
||||||
return self.true_output
|
|
||||||
|
|
||||||
def false_response(self) -> Text:
|
|
||||||
self.stop("true_result")
|
|
||||||
return self.false_output
|
|
||||||
|
|
||||||
def run(self) -> Text:
|
|
||||||
input_text = self.input_text
|
|
||||||
match_text = self.match_text
|
|
||||||
operator = self.operator
|
|
||||||
case_sensitive = self.case_sensitive
|
|
||||||
|
|
||||||
if not case_sensitive:
|
if not case_sensitive:
|
||||||
input_text = input_text.lower()
|
input_text = input_text.lower()
|
||||||
match_text = match_text.lower()
|
match_text = match_text.lower()
|
||||||
|
|
||||||
result = False
|
|
||||||
if operator == "equals":
|
if operator == "equals":
|
||||||
result = input_text == match_text
|
return input_text == match_text
|
||||||
elif operator == "not equals":
|
elif operator == "not equals":
|
||||||
result = input_text != match_text
|
return input_text != match_text
|
||||||
elif operator == "contains":
|
elif operator == "contains":
|
||||||
result = match_text in input_text
|
return match_text in input_text
|
||||||
elif operator == "starts with":
|
elif operator == "starts with":
|
||||||
result = input_text.startswith(match_text)
|
return input_text.startswith(match_text)
|
||||||
elif operator == "ends with":
|
elif operator == "ends with":
|
||||||
result = input_text.endswith(match_text)
|
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:
|
if result:
|
||||||
response = self.true_response()
|
self.stop("false_result")
|
||||||
|
response = self.true_output if self.true_output else self.input_text
|
||||||
self.status = response
|
self.status = response
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
response = self.false_response()
|
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
|
self.status = response
|
||||||
return response
|
return response
|
||||||
|
else:
|
||||||
|
self.stop("false_result")
|
||||||
|
return ""
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,7 @@ export const nodeColors: { [char: string]: string } = {
|
||||||
outputs: "#AA2411",
|
outputs: "#AA2411",
|
||||||
data: "#198BF6",
|
data: "#198BF6",
|
||||||
prompts: "#4367BF",
|
prompts: "#4367BF",
|
||||||
models: "#6344BE",
|
models: "#ab11ab",
|
||||||
model_specs: "#6344BE",
|
model_specs: "#6344BE",
|
||||||
chains: "#FE7500",
|
chains: "#FE7500",
|
||||||
Document: "#7AAE42",
|
Document: "#7AAE42",
|
||||||
|
|
@ -271,10 +271,10 @@ export const nodeColors: { [char: string]: string } = {
|
||||||
Text: "#4367BF",
|
Text: "#4367BF",
|
||||||
retrievers: "#e6b25a",
|
retrievers: "#e6b25a",
|
||||||
unknown: "#9CA3AF",
|
unknown: "#9CA3AF",
|
||||||
custom_components: "#ab11ab",
|
// custom_components: "#ab11ab",
|
||||||
Data: "#31a3cc",
|
Data: "#9CA3AF",
|
||||||
Data: "#31a3cc",
|
|
||||||
Message: "#4367BF",
|
Message: "#4367BF",
|
||||||
|
BaseLanguageModel: "#ab11ab",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const nodeNames: { [char: string]: string } = {
|
export const nodeNames: { [char: string]: string } = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue