Conditional Logic

Conditional logic components enable flow control and decision-making in workflows based on data conditions and comparisons.

Conditional Router (If-Else Component)

This component routes messages by comparing two strings. It evaluates a condition by comparing two text inputs using the specified operator and routes the message to true_result or false_result.

The operator looks for single strings based on your defined operator behavior, but it can also search for multiple words by regex matching.

Use a conditional router component in a flow

To use the Conditional router component to check incoming messages with regex matching, do the following:

  1. Connect the If-Else component's Text Input port to a Chat Input component.

  2. In the If-Else component, enter the following values.

  • In the Match Text field, enter .*(urgent|warning|caution).*. The component looks for these values. The regex match is case sensitive, so to look for all permutations of warning, enter warning|Warning|WARNING.

  • In the Operator field, enter regex. The component looks for the strings urgent, warning, and caution. For more operators, see Operator behavior.

  • In the Message field, enter New Message Detected. This field is optional. The message is sent to both the True and False ports. The component is now set up to send a New Message Detected message out of its True port if it matches any of the strings. If no strings are detected, it sends a message out of the False port.

  1. Create two identical flows to process the messages. Connect an Open AI component, a Prompt, and a Chat Output component together.

  2. Connect one chain to the If-Else component's True port, and one chain to the False port.

The flow looks like this:

A conditional router connected to two OpenAI components
  1. Add your OpenAI API key to both OpenAI components.

  2. In both Prompt components, enter the behavior you want each route to take. When a match is found: Send a message that a new message has been received and added to the Urgent queue.

When a match is not found: Send a message that a new message has been received and added to the backlog.

  1. Open the Playground.

  2. Send the flow some messages. Your messages route differently based on the if-else component's evaluation.

User
A new user was created.

AI
A new message has been received and added to the backlog.

User
Sign-in warning: new user locked out.

AI
A new message has been received and added to the Urgent queue. Please review it at your earliest convenience.

Inputs

Name
Type
Description

input_text

String

The primary text input for the operation.

match_text

String

The text input to compare against.

operator

Dropdown

The operator to compare texts. Options: "equals", "not equals", "contains", "starts with", "ends with", "regex". Default: "equals".

case_sensitive

Boolean

If true, the comparison is case sensitive. This setting is ignored for regex comparison. Default: false.

message

Message

The message to pass through either route.

max_iterations

Integer

The maximum number of iterations for the conditional router. Default: 10.

default_route

Dropdown

The default route to take when max iterations are reached. Options: "true_result" or "false_result". Default: "false_result".

Outputs

Name
Type
Description

true_result

Message

The output when the condition is true.

false_result

Message

The output when the condition is false.

Operator Behavior

The If-else component includes a comparison operator to compare the values in input_text and match_text.

All options respect the case_sensitive setting except regex.

  • equals: Exact match comparison.

  • not equals: Inverse of exact match.

  • contains: Checks if match_text is found within input_text.

  • starts with: Checks if input_text begins with match_text.

  • ends with: Checks if input_text ends with match_text.

  • regex: Performs regular expression matching. It is always case sensitive and ignores the case_sensitive setting.

Data Conditional Router

This component routes Data objects based on a condition applied to a specified key, including boolean validation. It can process either a single Data object or a list of Data objects.

This component is particularly useful in workflows that require conditional routing of complex data structures, enabling dynamic decision-making based on data content.

Inputs

Name
Type
Description

data_input

Data

The Data object or list of Data objects to process. This input can handle both single items and lists.

key_name

String

The name of the key in the Data object to check.

operator

Dropdown

The operator to apply. Options: "equals", "not equals", "contains", "starts with", "ends with", "boolean validator". Default: "equals".

compare_value

String

The value to compare against. Not shown/used when operator is "boolean validator".

Outputs

Name
Type
Description

true_output

Data/List

Output when the condition is met.

false_output

Data/List

Output when the condition is not met.

Operator behavior

  • equals: Exact match comparison between the key's value and compare_value.

  • not equals: Inverse of exact match.

  • contains: Checks if compare_value is found within the key's value.

  • starts with: Checks if the key's value begins with compare_value.

  • ends with: Checks if the key's value ends with compare_value.

  • boolean validator: Treats the key's value as a boolean. The following values are considered true:

    • Boolean true.

    • Strings: "true", "1", "yes", "y", "on" (case-insensitive).

    • Any other value is converted using Python's bool() function.

List processing

The following actions occur when processing a list of Data objects:

  • Each object in the list is evaluated individually

  • Objects meeting the condition go to true_output

  • Objects not meeting the condition go to false_output

  • If all objects go to one output, the other output is empty

Last updated