使用列映射#

在本文档中,我们将介绍在运行流时如何使用列映射来映射输入。

列映射介绍#

列映射是从流输入名称到指定值的映射。如果指定,流将使用为指定输入提供的值执行。支持以下类型的列映射值:

  • ${data.<column_name>} 用于引用您的测试数据集。

  • ${run.inputs.<input_name>} 用于引用来自引用运行的输入。注意:这仅在为 pf run 提供了 --run 时支持。

  • ${run.outputs.<output_name>} 用于引用来自引用运行的输出。注意:这仅在为 pf run 提供了 --run 时支持。

  • STATIC_VALUE 用于为指定列的所有行创建静态值。

流输入覆盖优先级#

流输入值根据以下优先级被覆盖:

“在列映射中指定” > “默认值” > “提供数据中同名列”。

例如,如果我们的流具有以下输入:

inputs:
  input1:
    type: string
    default: "default_val1"
  input2:
    type: string
    default: "default_val2"
  input3:
    type: string
  input4:
    type: string
...

并且流将在输出中返回每个输入。

使用以下数据:

{"input3": "val3_in_data", "input4": "val4_in_data"}

并使用以下 YAML 运行:

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: path/to/flow
# my_flow has default value val2 for key2
data: path/to/data
# my_data has column key3 with value val3
column_mapping:
    input1: "val1_in_column_mapping"
    input3: ${data.input3}

由于流将在输出中返回每个输入,我们可以从运行详情中的 outputs.output 字段获取实际输入:

column_mapping_details

  • 输入“input1”的值为“val1_in_column_mapping”,因为它在 column_mapping 中被指定为常量。

  • 输入“input2”的值为“default_val2”,因为它在流 dag 中使用了默认值。

  • 输入“input3”的值为“val3_in_data”,因为它在 column_mapping 中被指定为数据引用。

  • 输入“input4”的值为“val4_in_data”,因为它在提供的数据中具有同名列。