为流添加条件控制#

实验性功能

这是一个实验性功能,随时可能更改。了解更多

在 Prompt flow 中,我们通过激活配置(如 if-else、switch)支持控制逻辑。激活配置支持对流中的节点进行条件执行,确保只有在满足指定条件时才执行特定操作。

本指南将帮助您学习如何使用激活配置为流添加条件控制。

先决条件#

请确保您的 promptflow 版本大于 0.1.0b5

用法#

流中的每个节点都可以有关联的激活配置,指定其何时执行以及何时跳过。如果节点具有激活配置,则仅当满足激活条件时才会执行该节点。该配置由两个基本组件组成

  • activate.when:触发节点执行的条件。它可以基于前一个节点的输出或流的输入。

  • activate.is:条件的 值,可以是字符串、布尔值、整数、双精度浮点数的常量值。

您可以手动更改流文件夹中的 flow.dag.yaml 或使用 VS Code 扩展中的可视化编辑器向流中的节点添加激活配置。

您可以在流 yaml 的节点部分添加激活配置。

activate:
  when: ${node.output}
  is: true
  • 单击 flow.dag.yaml 中的 可视化编辑器 进入流界面。visual_editor

  • 单击要添加的节点中的 激活配置 部分,并填写“when”和“is”的值。activate_config

更多详情和重要注意事项#

  1. 如果使用 python 工具的节点具有引用可能被绕过的节点的输入,请尽可能为该输入提供默认值。如果输入没有默认值,则被绕过节点的输出将设置为 None。

    provide_default_value

  2. 不建议将可能被绕过的节点直接连接到流的输出。如果连接,输出将为 None 并会引发警告。

    output_bypassed

  3. 在条件流中,如果节点具有激活配置,我们将始终使用此配置来确定是否应绕过该节点。如果节点被绕过,其状态将标记为“Bypassed”,如下图所示。有三种情况会绕过节点。

    bypassed_nodes

    (1) 如果节点具有激活配置,并且 activate.when 的值不等于 activate.is,则会绕过该节点。如果您想强制节点始终执行,您可以将激活配置设置为 when dummy is dummy,这总是满足激活条件。

    activate_condition_always_met

    (2) 如果节点具有激活配置,并且 activate.when 指向的节点被绕过,则会绕过该节点。

    activate_when_bypassed

    (3) 如果节点没有激活配置,但依赖于已被绕过的其他节点,则会绕过该节点。

    dependencies_bypassed

示例流#

让我们通过实际示例说明如何使用激活配置。

  • If-Else 场景:了解如何为 if-else 场景开发条件流。查看示例

  • Switch 场景:探索 switch 场景的条件流。查看示例

后续步骤#