跳到主要内容

条件分支

If-Else 组件是一个条件路由器,用于通过比较两个字符串来决定消息的流向。 它会根据指定操作符,对两段文本输入进行比较,并根据判断结果把消息路由到 true_resultfalse_result

组件会根据操作符和匹配文本(match_text)在输入文本(input_text)中查找单个字符串,也支持通过正则表达式匹配多个词。 可用操作符包括:

  • equals:完全相等
  • not equals:不相等
  • contains:检查 input_text 中是否包含 match_text
  • starts with:检查 input_text 是否以 match_text 开头
  • ends with:检查 input_text 是否以 match_text 结尾
  • regex:按区分大小写的正则模式匹配

默认情况下,除 regex 以外的所有操作符都不区分大小写。 regex 始终区分大小写;如果你希望其他操作符也区分大小写,可以在If-Else 参数中开启相关设置。

在流程中使用 If-Else

下面的例子中,If-Else 组件会使用正则匹配检查收到的聊天消息,再根据判断结果输出不同响应。

A conditional router connected to two OpenAI components

  1. 向流程中添加一个 If-Else 组件,并按以下方式配置:

    • Text Input:把 Text Input 端口连接到 Chat Input 组件或其他 Message 输入。

      如果你的输入不是 Message 格式,可以先用其他组件转换,例如 Type Convert 组件Parser 组件。 如果你的输入本身不适合转成 Message 格式,也可以考虑使用其他条件路由组件,例如 Data Operations 组件

    • Match Text:输入 .*(urgent|warning|caution).*,让组件在输入文本中查找这些值。由于 regex 匹配区分大小写,如果你要同时匹配 warning 的所有写法,就需要写成 warning|Warning|WARNING

    • Operator:选择 regex

    • Case True:在组件头部菜单中点击 Controls,启用 Case True 参数,点击 Close,然后输入 New Message Detected

      当条件为 true 时,这条 Case True 消息会从 True 输出端口发出。

      本例中不设置 Case False,因此当条件为 false 时组件不会发出额外消息。

  2. 根据你希望 True 分支执行的逻辑,继续为流程添加组件:

    1. 添加 Language ModelPrompt TemplateChat Output 组件。

    2. Language Model 组件中填入 OpenAI API Key,或改用其他提供商和模型。

    3. If-Else 组件的 True 输出端口连接到 Language ModelInput 端口。

    4. Prompt Template 中填写当判断结果为 true 时给模型的指令,例如:Send a message that a new warning, caution, or urgent message was received

    5. Prompt Template 连接到 Language ModelSystem Message 端口。

    6. Language Model 的输出连接到 Chat Output

  3. False 分支重复同样的过程,再配置一组 Language ModelPrompt TemplateChat Output

    If-ElseFalse 输出端口连接到第二个 Language ModelInput 端口。 然后在第二个 Prompt Template 中填写 false 场景下的指令,例如:Send a message that a new low-priority message was received

  4. 打开 Playground 测试流程,分别发送带有和不带有正则匹配内容的消息。 最终聊天输出应根据正则判断结果遵循不同 Prompt 指令。


    _10
    User: A new user was created.
    _10
    _10
    AI: A new low-priority message was received.
    _10
    _10
    User: Sign-in warning: new user locked out.
    _10
    _10
    AI: A new warning, caution, or urgent message was received. Please review it at your earliest convenience.

If-Else 参数

有些参数在可视化编辑器中默认处于隐藏状态。 你可以通过组件标题栏菜单中的 控件 来修改全部参数。

NameTypeDescription
input_textString输入参数。要参与判断的主文本。
match_textString输入参数。用于比对的文本。
operatorDropdown输入参数。文本比较时使用的操作符,可选 equalsnot equalscontainsstarts withends withregex。默认值为 equals
case_sensitiveBoolean输入参数。若为 true,则比较区分大小写。默认值为 false。该设置对 regex 比较无效。
max_iterationsInteger输入参数。条件路由器允许的最大迭代次数。默认值为 10。
default_routeDropdown输入参数。当达到最大迭代次数时采用的默认路由,可选 true_resultfalse_result。默认值为 false_result
true_resultMessage输出参数。条件为 true 时输出的结果。
false_resultMessage输出参数。条件为 false 时输出的结果。