入力フィールドへの値のマッピング

スキル・フローでは、スキルはマッピングを介して接続されます。 スキルから取得したデータを、その後のスキルの入力フィールドにマッピングすることができます。

スキル・フローで特定のスキルを選択すると、必要な入力値と結果の出力値が 「入力」 タブと 「出力」 タブに表示されます。

「入力」タブと「出力」タブ
図1:スキルフロー版の入力タブと出力タブ。

スキル・フローでは、入力への出力のマッピングは同じタイプでなければなりません。 例えば、ストリングをストリングにマップすることはできますが、ストリングを整数にマップすることはできません。 詳しくは、この FAQを参照してください。

入力値を割り当てるには、以下のいずれかのオプションを使用します。

さらに、 watsonx Orchestrate は、以下の機能を提供します。

入力値の割り当て

フロー内のスキルの入力フィールドに値を割り当てる複数の方法を見つけることができます。 例えば、データ・マッピングの変数をデフォルト値と組み合わせることができます。 入力フィールドの値をマッピングする方法を学びます。

使用可能なマッピングの使用

スキル・フローを作成すると、先行するすべてのスキルの出力値が各スキルの入力フィールドに表示されます。 現在のスキルの入力として使用する出力値を選択することができます。

入力フィールドで使用可能なマッピングを参照し、ニーズに最も適したマッピングを選択することができます。 次のビデオでは、Dropboxスキルは入力フィールドに割り当てられますMicrosoft Outlookスキル。


注:このビデオにはナレーションはありません。

マッピング提案の生成

スキル入力フィールドに値を割り当てるためのマッピング提案を生成できます。 生成された提案に基づいて、以前のいずれかのスキルの値を手動でマップできます。 手動マッピングは、自動生成された提案よりも優先されます。

マッピング提案を生成するには、 「入力」 タブで 「マッピング提案の生成」 をクリックする必要があります。 提案が該当するフィールドに正常に反映されると通知が届きます。

マッピング提案の生成
図2:マッピング候補の生成

マッピング提案のクリア

生成された提案と手動で設定されたマッピングの両方のマッピングをリセットできます。

マッピングの提案をクリアするには、 「すべてのマッピングをクリア」をクリックします。

また、マッピングされた入力値の横にあるクローズアイコン( 閉じる )をクリックすると、個々のマッピング候補を破棄することができます。

デフォルト値の設定

入力パラメーターについては、デフォルト値を指定して設定することもできます。 入力パラメーターの上にカーソルを移動して、 「デフォルト値の指定」 アイコンをクリックします。 次に、入力フィールドに必要なデフォルト値を設定します。

デフォルト値の指定
図3:デフォルト値の指定アイコン

データ・マッピングからの変数とデフォルト値の結合

デフォルト値とデータ・マッピングの変数の両方を入力値として使用できます。 以下の手順に従って、データ・マッピングの変数と入力フィールドのデフォルト値を結合します。

  1. 「入力」 タブで、フィールドの 「デフォルト値の指定」 アイコンをクリックします。
  2. 必要なデフォルト値を入力します。
  3. 「変数の挿入」をクリックします。
  4. デフォルト値に結合するデータ・マッピングを選択します。

変数アイコンを挿入する
図4:変数の挿入アイコン

複数のソースからの値のマッピング

複数のソースから 1 つの入力フィールドに値をマップできます。

以下に、複数の出力値を 1 つの入力フィールドにマップするステップを示します。

  1. 「入力」 タブで、フィールドの 「デフォルト値の指定」 アイコンをクリックします。
  2. 「変数の挿入」 アイコンをクリックします。
  3. 使用可能なマッピングから値を選択します。
  4. 「変数の挿入」 アイコンをクリックして、さらに多くの値をフィールドにマップします。

次の図では、2 つの出力値 First nameLast nameSlack スキルの 「テキスト」 フィールドにマップされています。 このようにして、スキルの First name フィールドと Last name フィールドに指定した値が取り出され、 Slack スキルの 「テキスト」 フィールドに一緒に表示されます。

複数のソースからのマッピング
図5:複数のソースからのマッピング。

入力値をマップするその他の機能

配列やオプションの動的なリストのマッピング、データの変換など、スキルフローで入力をマッピングするその他の機能について学習します。

プリミティブ・データ型の配列のマッピング

watsonx Orchestrateでは、同じデータ・タイプの出力フィールドと入力フィールドの間で配列マッピングを使用できます。 例えば、ストリングの配列は、ストリング・タイプの配列または単一のストリング・タイプ・フィールドにのみマップできます。 以下の配列マッピングを実行できます。

  • 単一値 (ストリングなど) を、複数の値 (配列) を予期するフィールドにマップします。 ユーザーは、入力フォームで値をリストとして表示できます。
  • 値の配列を入力フィールド (ストリングなど) にマップします。 マッピングでは、ユーザーはドロップダウンリストから選択します。
  • 値の配列を別の配列フィールドにマップします。 ここでは、ユーザーは入力フォームのドロップダウン・リストから複数の値を選択できます。

例えば、 Skill-1、 Skill-2、および Skill-3の 3 つのスキルについて考えてみます。

Skill-1 (出力フィールド jobRequestIDsを含む)。 フィールド jobRequestIDs は、ストリング値の配列です (例: ['123', '456', '642'])。 Output: jobRequestIDs - ['123', '456', '642']

Skill-2 。ストリング値の配列を取る入力フィールド inputJobRequestIDs (例:['222', '111', '333']) を使用します。 Input: inputJobRequestIDs - type: array[]

入力フィールド inputOneJobRequestID を持つ Skill-3 。これは、ストリング値を取ります (例: ABC)。 Input: inputOneJobRequestID - type: string

この場合、この例で許可されるマッピングは以下のとおりです。

  1. Skill-1.jobRequestIDs [配列] から Skill-2.inputJobRequestIDs [配列]
  2. Skill-1.jobRequestIDs [array] から Skill-3.inputOneJobRequestID [string]

オブジェクトのネストされた配列のマッピング

ネストされた配列を、同じ構造または異なる構造を持つオブジェクトの別の配列にマップします。

ネストされた配列をマップするには、 「使用可能なマッピング」 リソースを使用します。 リソースに表示されるリストから、ネストされた配列を返すスキルを選択し、次にマッピングする値を選択します。

ネストされた配列のマッピングの例
図6:画像は1つのネストした配列のマッピング。

ネストされた 1 つの配列の親エレメントをマップすることもできます。 この場合、ネストされた配列に存在するエンティティーごとに親エレメントが複製されます。

親エレメントの例
図7:画像はマッピングの親要素を示す。

これを例示するために、以下の 2 つのスキルを持つスキル・フローを検討します。

  • ユーザー・ロールと各ロールのユーザーを含む、ネストされた配列を返す Get users スキル。
  • 1 つの配列オブジェクトを介してユーザーとその役割のリストを登録する Register users スキル。

Get users スキル出力スキーマの例:

{
  "paths": {
    "/getUsers": {
      "get": {
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "group_id": {
                            "type": "integer"
                          },
                          "group_name": {
                            "type": "string"
                          },
                          "users": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "email": {
                                  "type": "string"
                                },
                                "age": {
                                  "type": "integer"
                                },
                                "settings": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "background": {
                                        "type": "string"
                                      },
                                      "language": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Register users スキル入力スキーマの例:

{
  "paths": {
    "/register": {
      "post": {
        "requestBody": {
          "description": "User",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Users": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "group_id": {
                          "type": "integer"
                        },
                        "user_name": {
                          "type": "string"
                        },
                        "user_email": {
                          "type": "string"
                        },
                        "preferred_language": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Register user スキルで Get users スキルのネストされた配列値を使用するには、使用可能なマッピングを介して Register user スキル入力をマップします。 例:

  • Users.group_id > results.items.properties.group_id
  • Users.user_name > results.items.properties.users.items.properties.name
  • Users.user_email > results.items.properties.users.items.properties.email
  • Users.preferred_language > results.items.properties.users.items.properties.settings.items.properties.language

マッピングの例
図8:画像は例の入れ子配列マッピング。

その後、ユーザーがスキル・フローを使用すると、 Get user スキルは各ユーザー・グループのユーザーを返します。 ユーザーが 1 つ以上のグループを選択すると、 Register user スキルは、選択されたグループ内のすべてのユーザーを登録します。 group_id はユーザーの親エレメントであるため、ユーザー・エンティティーごとに複製されます。

マッピングのネストされた配列のスキル・フローの例
図9:画像はスキルフローの例。

watsonx Orchestrateでの配列の使用方法について詳しくは、 配列を参照してください。

オプションの動的リストへの値のマッピング

値を動的ドロップダウン・フィールドにマップできます。 動的ドロップダウン・フィールドでは、値は特定のスキルから取得されます。 ドロップダウン・フィールドにマップされた値が、前のスキルから動的に取得された値と一致する場合、ユーザーがスキル・フローを実行すると、ドロップダウン・フィールドでオプションが自動的に選択されます。 ドロップダウン・フィールドに事前選択された値が表示されていても、ドロップダウン・リストから別の値を選択できます。

ドロップダウン・フィールドにマップされた値が前のスキルのどの値とも一致しない場合、ドロップダウン・フィールドには事前選択された値は表示されませんが、ドロップダウン・リストから値を選択することはできます。

以下の例では、ユーザーが最初のスキルでこの国のコードを選択すると、2 番目のスキルのドロップダウン・フィールドがマップされ、国の名前が表示されます。

動的ドロップダウン・フィールドへの値のマッピング
図10: 動的ドロップダウン・フィールドへの値のマッピング。

データの変換

マッピング時に、スキルの出力を変更して、別のスキルのニーズに一致させることができます。 例えば、スキルが日時を提供する場合、変換を使用して、他のスキルの入力の日付 (時刻なし) のみを取得することができます。 1つのフィールドに複数の変換を適用することができます。最初の変換で得られた値は、次の変換の基礎となります。 データ変換は、テキスト (ストリング) データを持つフィールドに対してのみ機能します。

変換の定義
図11 フィールドのトランスフォームを定義する。

変換を定義するには、以下の演算子を使用します。

正規表現によるサブストリングの取得

正規表現パターンを定義することにより、入力フィールドに一致するサブストリングを抽出できます。 例えば、ストリング User ID is 111に対して正規表現 [0-9]+ を使用すると、 111が表示されます。 正規表現に複数の一致がある場合は、最初の一致のみが取得されます。 例えば、 User ID is 111 or 1234 という文字列に [0-9]+ という正規表現を適用すると、抽出される値は 111 となります。

watsonx Orchestrate は、 Python ランタイムの re モジュールを使用して正規表現を処理します。 詳しくは、 正規表現操作を参照してください。

索引によるサブストリングの取得

必要な入力を取得するために開始および停止する場所を指定できます。

例えば、ストリング Hello worldの場合は、以下のようになります。

  • End position を 5 に設定すると、「Hello」が返されます。
  • Start position を 1、 End position を 5 に設定すると、「ほど」が返されます。
  • Start position を 5、 End position を 5 に設定すると、"" が返されます。
  • Start position を 5、 End position を 6 に設定すると、" が返されます。 「」
  • Skip index を 2 に設定すると、「Hlowrd」が返されます。
  • Start position を 6、 End position を 11、 Skip index を 2 に設定すると、「wrd」が返されます。

Skip indexでは、文字はスキップ値に従ってグループ化され、グループ化の最初の文字のみが返されます。 以下の可能性を参照してください。

Skip indexHello world ストリングに対して 2 として定義すると、戻りは 2 つの文字の各グループの先頭文字 (「Hlowrd」) になります。

スキップ索引 2
図12:「Hlowrd」を表示するように設定されたスキップ・インデックス。

Skip indexHello world ストリングの 3 として定義した場合、戻りは 3 文字の各グループの先頭文字 (「Hlwl」) になります。

スキップ索引 3
図13:「Hlwl」を表示するように設定されたスキップ・インデックス。

Skip indexHello world ストリングの 4 として定義した場合、戻りは 4 文字の各グループの最初の文字 (「Hor」) になります。

スキップ索引 4
図14:「Hor」を表示するように設定されたスキップ・インデックス。

ストリングの置換

テキストの一部を別のストリングで置き換えて、必要な入力を得ることができます。

例えば、値「hello_world」の場合は次のようになります。

  • Search for を「_」、 Replace with を「」として指定します。 「ハロー・ワールド」を手に入れるために
  • 「Hello Watson」を取得するには、 Search for を「world」、 Replace with を「Watson」として指定します。

ストリングのトリム

ストリングの必要な部分のみをトリムして選択するには、 「ストリングのトリム」 演算子を使用できます。 必要な入力を取得するためにトリムする Position および Character を指定します。

例えば、ストリング「_hello world」の先頭から下線を削除するには、 Position を「開始」として指定し、 Character to trim を「_」として指定します。 そのため、「Hello world」という価値が得られます。 同様に、 Position を「末尾」として選択してストリングの末尾から文字を削除したり、「両方」を選択してストリングの両側から文字を削除したりすることができます。

トリム・ストリングは、ほとんどの場合、ストリングの先頭または末尾 (あるいはその両方) のスペースを削除するために使用されます。 デフォルトでは、 Character to trim はスペース ("") です。そのため、 Position を指定してスペースを削除できます。

スキル入力のフィルタリング

一部のスキルでは、フィルター入力の入力を求めるプロンプトが出されます。 スキル・フローを作成するときに、以前のスキルの出力をマッピングすることで、フィルター・オプションを自動設定できます。 以下のステップは、この目標を達成する方法を示しています。

  1. スキル・フロー内のスキルをクリックします。
  2. 「入力」 タブで、フィルター可能な入力フィールドまでスクロールダウンします。 フィルタリングするデータを入力するための初期フィールドが 3 つあります。
    1. #1 「フィルター可能な入力」 フィールドで、フィルターに掛ける値を選択します。
    2. 「演算子」 フィールドで、演算子を選択します。 例えば、フィルター可能な入力が 「値」 フィールドに挿入した値である場合は、 is 演算子を選択します。
    3. 「値」 フィールドで、使用可能なマッピング・リストから、フィルター可能な入力と一致する必要がある値を選択します。
      • 以前のスキルからの出力をマップすることも、独自のデフォルト値を追加することもできます。

すべてのフォルダー項目を取得するには、 Box スキルを持つ以下の一連の例を参照してください。 最初の例では、フィルターはフォルダー ID によって定義されています。 そのため、構成は次のようになります。

  • #1 フィルター可能な入力: Folder ID
  • オペレーター: is
  • 値: id

最初のフィルター可能入力
図15:フィルター可能な最初の入力。

これらのフィールドへの入力が完了したら、すぐにスキル・フローに別のフィルターを追加できます。 別のフィルターを追加する手順は、前に実行した手順と同じです。 フィルターの間で、 AND 演算子などの論理演算子を選択する必要があります。 もう一つの例では、もう一つのフィルターはフォルダ名によるものです。 そのため、構成は次のようになります。

  • #2 フィルター可能な入力: Folder ID
  • オペレーター: is
  • 値: name

2 番目のフィルター可能な入力
図16:フィルター可能な2番目の入力。

必要な数のフィルターを追加して、前のフィルターを完成させることができます。 新規フィルターを追加しない場合は、新規オプションをブランクのままにします。

ブランク・フィルター
図17:空白のフィルター。


親トピック:

スキル・フローへのスキルの結合