

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Bedrock Flows の仕組み
仕組み

Amazon Bedrock Flows を使用すると、Amazon Bedrock または関連リソースを呼び出すフローのステップに対応するノードを接続して、生成 AI ワークフローを構築できます。ノードへの入力とノードからの出力を定義するには、式を使用して入力の解釈方法を指定します。これらの概念を深く理解するには、以下のトピックを確認します。

**Topics**
+ [

# Amazon Bedrock Flows の主な定義
](key-definitions-flow.md)
+ [

# 式を使用して、Amazon Bedrock Flows の入力全体から関連部分を抽出して入力を定義する
](flows-expressions.md)
+ [

# フローのノードタイプ
](flows-nodes.md)

# Amazon Bedrock Flows の主な定義
主な定義

次のリストでは、Amazon Bedrock Flows の基本概念について説明します。
+ **フロー** – フローとは、名前、説明、アクセス許可、ノードのコレクション、ノード間の接続で構成されるコンストラクトです。フローが呼び出されると、呼び出しの入力が送信されてフローの各ノードを通り、最終的に出力ノードに到達します。呼び出しのレスポンスは最終出力を返します。
+ **ノード** – ノードとはフロー内のステップです。ノードごとに、名前、説明、入力、出力、その他の設定を行います。ノードの設定はタイプによって異なります。さまざまなノードタイプの詳細については、「[フローのノードタイプ](flows-nodes.md)」を参照してください。
+ **接続** – Amazon Bedrock Flows で使用される接続には 2 つのタイプがあります。
  + **データ接続**は、1 つのノード (*ソースノード*) の出力と別のノード (*ターゲットノード*) の入力の間の接続で、データはアップストリームノードからダウンストリームノードに送信されます。Amazon Bedrock コンソールでは、データ接続は灰色の実線で描かれます。
  + **条件付き接続**は、条件ノード内の条件とダウンストリームノードとの間の接続で、条件が満たされた場合に、条件ノードの前のノードからダウンストリームノードにデータが送信されます。Amazon Bedrock コンソールでは、条件付き接続は紫色の点線で描かれます。
+ **式** – 式は、ノードに入る入力全体から入力を抽出する方法を定義します。式を記述する方法については、「[式を使用して、Amazon Bedrock Flows の入力全体から関連部分を抽出して入力を定義する式を使用して入力を定義する](flows-expressions.md)」を参照してください。
+ **フロービルダー** – フロービルダーとは、ビジュアルインターフェイスを介してフローを構築および編集するための Amazon Bedrock コンソール上のツールです。ビジュアルインターフェイスを使用して、ノードをインターフェイスにドラッグアンドドロップし、これらのノードの入出力を設定してフローを定義します。
+ 以下のセクションでは、次の用語を使用します。
  + **入力全体** – 前のノードから現在のノードに送信される入力全体。
  + **アップストリーム** – フロー内で現在のノードよりも前にあるノード。
  + **ダウンストリーム** – フロー内で現在のノードよりも後にあるノード。
  + **入力** – ノードは複数の入力を持つことができます。式を使用して、入力全体から個々の入力に使用するの部分を抽出します。Amazon Bedrock コンソールのフロービルダーでは、入力はノードの左端に円として表示されます。各入力をアップストリームノードの出力に接続します。
  + **出力** – ノードは複数の出力を持つことができます。Amazon Bedrock コンソールのフロービルダーでは、出力はノードの右端に円として表示されます。各出力をダウンストリームノード内の 1 つ以上の入力に接続します。
  + **ブランチ** – ノードからの出力が複数のノードに送信される場合、または条件ノードが含まれる場合、フローのパスは複数のブランチに分かれます。各ブランチは、フロー呼び出しレスポンスで別の出力を生成する可能性があります。

# 式を使用して、Amazon Bedrock Flows の入力全体から関連部分を抽出して入力を定義する
式を使用して入力を定義する

ノードの入力を設定する際は、ノードに入る入力全体に関連して定義する必要があります。入力全体は、文字列、数値、ブール値、配列、またはオブジェクトを指定できます。入力全体に関連して入力を定義するには、[JsonPath](https://github.com/json-path/JsonPath) に基づいてサポートされている式のサブセットを使用します。すべての式は、入力全体を参照する `$.data` で始まる必要があります。式を使用する場合、以下の点に注意してください。
+ 入力全体が文字列、数値、またはブール値の場合は、個々の入力の定義に使用できる唯一の式は `$.data` です。
+ 入力全体が配列またはオブジェクトである場合は、その一部を抽出して個々の入力を定義できます。

式の使用方法を理解するための例として、入力全体が次の JSON オブジェクトであるとします。

```
{
    "animals": {
        "mammals": ["cat", "dog"],
        "reptiles": ["snake", "turtle", "iguana"]
    },
    "organisms": {
        "mammals": ["rabbit", "horse", "mouse"],
        "flowers": ["lily", "daisy"]
    },
    "numbers": [1, 2, 3, 5, 8]
}
```

次の式を使用すると、入力の一部を抽出できます (この例では、前述の JSON オブジェクトから返される結果を参照します)。


****  

| 式 | 意味 | 例 | 結果の例 | 
| --- | --- | --- | --- | 
| \$1.data | 入力全体。 | \$1.data | オブジェクト全体 | 
| .name | JSON オブジェクトの name と呼ばれるフィールドの値。 | \$1.data.numbers | [1, 2, 3, 5, 8] | 
| [int] | 配列内の int で指定されたインデックスのメンバー。 | \$1.data.animals.reptiles[2] | iguana | 
| [int1, int2, ...] | 配列内の各 int によって指定されたインデックスのメンバー。 | \$1.data.numbers[0, 3] | [1, 5] | 
| [int1:int2] | 配列内の int1 (包括的) と int2 (排他的) の間のインデックスの項目で構成される配列。int1 または int2 を省略する操作は、配列の開始または終了のマーキングに相当します。 | \$1.data.organisms.mammals[1:] | ["horse", "mouse"] | 
| \$1 | name または int の代わりに使用できるワイルドカード。結果が複数ある場合、結果は配列で返されます。 | \$1.data.\$1.mammals | [["cat", "dog"], ["rabbit", "horse", "mouse"]] | 

# フローのノードタイプ
ノードタイプ

Amazon Bedrock Flows には、フローを構築するために次のノードタイプが用意されています。ノードを設定するときは、次のフィールドを指定します。
+ 名前 — ノードの名前を入力します。
+ タイプ – コンソールでは、使用するノードのタイプをドラッグアンドドロップします。API では、 `type` フィールドと、`configuration` フィールドの対応する [FlowNodeConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNodeConfiguration.html) を使用します。
+ 入力 – 入力ごとに次の情報を指定します。
  + 名前 - 入力の名前。一部のノードには、使用する必要がある定義済みの名前またはタイプがあります。事前定義された名前を持つノードについては、「[ロジックノードタイプ](#flows-nodes-logic-table)」を参照してください。
  + 式 - 個々の入力として使用する入力全体の部分を定義します。詳細については、「[式を使用して、Amazon Bedrock Flows の入力全体から関連部分を抽出して入力を定義する式を使用して入力を定義する](flows-expressions.md)」を参照してください。
  + 型 – 入力のデータ型。実行時にこのノードに到達すると、Amazon Bedrock は入力全体に式を適用し、結果がデータ型と一致することを確認します。
+ 出力 – 出力ごとに次の情報を指定します。
  + 名前 - 出力の名前。一部のノードには、使用する必要がある定義済みの名前またはタイプがあります。事前定義された名前を持つノードについては、「[ロジックノードタイプ](#flows-nodes-logic-table)」を参照してください。
  + 型 - 出力値のデータ型。実行時にこのノードに到達すると、Amazon Bedrock はノード出力がデータ型と一致することを確認します。
+ 設定 – コンソールでは、ノードの上部でノード固有のフィールドを定義します。API では、適切な [FlowNodeConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNodeConfiguration.html) を使用して、そのフィールドに入力します。

各ノードタイプについて以下で説明し、その API の構造を示します。セクションを展開して、そのノードタイプの詳細を確認します。

## フローのロジックを制御するノード


フローのロジックを制御するには、次のノードタイプを使用します。

### Flow input ノード


すべてのフローには Flow input ノードが 1 つだけ含まれており、そこから始める必要があります。Flow input ノードは、`InvokeFlow` リクエストから `content` を受け取り、データ型を検証して、次のノードに送信します。

API の入力 [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を以下に示します。

```
{
    "name": "string",
    "type": "Input",
    "outputs": [
        {
            "name": "document",
            "type": "String | Number | Boolean | Object | Array",
        }
    ],
    "configuration": {
        "input": CONTEXT-DEPENDENT
    }
}
```

### Flow output ノード


Flow output ノードは、定義された式に基づいて前のノードから入力データを抽出し、それを返します。コンソールでは、出力は、テストウィンドウで **[実行]** を選択した後に返されるレスポンスです。API では、出力は、`InvokeFlow` レスポンスの `flowOutputEvent` の `content` フィールドで返されます。フローには、複数の Flow output ノードを含めることができます。

フローに複数のブランチがある場合、フローに複数の Flow output ノードを含めることができます。

出力 [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を以下に示しています。

```
{
    "name": "string",
    "type": "Output",
    "inputs": [
        {
            "name": "document",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        }
    ],
    "configuration": {
        "output": CONTEXT-DEPENDENT
    }
}
```

### Condition ノード


Condition ノードは、定義されている条件に応じて、前のノードから別のノードにデータを送信します。Condition ノードは複数の入力を受け付けることができます。

例については、[条件ノードを使用してフローを作成する](flows-ex-condition.md)を参照してください。

**Condition ノードを定義するには**

1. 追加する予定の条件を評価するために必要な数の入力を追加します。

1. 各入力の名前を入力し、想定される型を指定し、入力全体から関連部分を抽出する式を記述します。

1. 各入力をアップストリームノードからの関連する出力に接続します。

1. 必要な数の条件を追加します。

1. 条件ごとに以下の手順を実行します。

   1. 条件の名前を入力します。

   1. リレーショナル演算子と論理演算子を使用して、入力を他の入力または定数と比較する条件を定義します。
**注記**  
条件は順番に評価されます。複数の条件が満たされた場合、条件は昇順で優先されます。

   1. 満たされた場合にデータを送信するダウンストリームノードに各条件を接続します。

#### 条件式


条件を定義するには、その名前で入力を参照し、次のいずれかのリレーショナル演算子を使用して値と比較します。


****  

| オペレーター | 意味 | サポートされているデータ型 | 使用例 | 例の意味 | 
| --- | --- | --- | --- | --- | 
| == | 等しい (データ型も等しい必要がある) | 文字列、数値、ブール値 | A == B | A が B と等しい場合 | 
| \$1= | 等しくない | 文字列、数値、ブール値 | A \$1= B | A が B と等しくない場合 | 
| > | Greater than | Number | A > B | A が B より大きい場合 | 
| >= | 以上 | Number | A >= B | A が B 以上である場合 | 
| < | Less than | Number | A < B | A が B より小さい場合 | 
| <= | 以下 | Number | A <= B | A が B 以下である場合 | 

入力を他の入力と比較したり、条件式内の定数と比較したりできます。例えば、`profit` という数値入力と `expenses` という別の数値入力がある場合、**profit > expenses** と **profit <= 1000** の両方が有効な式です。

次の論理演算子を使用して、より複雑な条件の式を組み合わせることができます。括弧を使用して、式をグループ化したときのあいまいさを解決することをお勧めします。


****  

| オペレーター | 意味 | 使用例 | 例の意味 | 
| --- | --- | --- | --- | 
| と | 両方の式が true | (A < B) and (C == 1) | 両方の式が true の場合: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-nodes.html) | 
| または | 少なくとも 1 つの式が true | (A \$1= 2) or (B > C) | いずれかの式が true の場合: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-nodes.html) | 
| not | 式が true ではない | not (A > B) | A が B より大きくない場合 (A <= B に相当) | 

API では、[CreateFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlow.html) または [UpdateFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateFlow.html) リクエストを送信するときに、`definition` フィールドで以下を定義します。

1. `nodes` 配列の条件 [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクト。一般的な形式は次のとおりです (Condition ノードには `outputs` がありません)。

   ```
   {
       "name": "string",
       "type": "Condition",
       "inputs": [
           {
               "name": "string",
               "type": "String | Number | Boolean | Object | Array",
               "expression": "string"
           }
       ],
       "configuration": {
           "condition": {
               "conditions": [
                   {
                       "name": "string",
                       "expression": "string"
                   },
                   ...
               ]
           }
       }
   }
   ```

1. Condition ノードへの入力ごとに、`connections` 配列の [FlowConnection](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConnection.html) オブジェクト。`FlowConnection` オブジェクトの `configuration` フィールドに [FlowDataConnectionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowDataConnectionConfiguration.html) オブジェクトを含めます。`FlowConnection` オブジェクトの一般的な形式は次のとおりです。

   ```
   {
       "name": "string",
       "source": "string",
       "target": "string",
       "type": "Data",
       "configuration": {
           "data": {
               "sourceOutput": "string",
               "expression": "string"
           }
       }
   }
   ```

1. Condition ノードの条件 (デフォルト条件を含む) ごとに、`connections` 配列の [FlowConnection](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConnection.html) オブジェクト。`FlowConnection` オブジェクトの `configuration` フィールドに [FlowConditionalConnectionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConditionalConnectionConfiguration.html) オブジェクトを含めます。[FlowConnection](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConnection.html) オブジェクトの一般的な形式は次のとおりです。

   ```
   {
       "name": "string",
       "source": "string",
       "target": "string",
       "type": "Conditional",
       "configuration": {
           "conditional": {
               "condition": "string"
           }
       }
   }
   ```

   リレーショナル演算子と論理演算子を使用して、この条件 `source` ノードを `target` ノードダウンストリームに接続する `condition` を定義します。デフォルトの条件では、条件を **default** として指定します。

### Iterator ノード


Iterator ノードは配列を取得し、その項目をダウンストリームノードへの出力として繰り返し返します。Iterator ノードへの入力は 1 つずつ処理され、相互に並列処理されません。Flow output ノードは、異なるレスポンスで各入力の最終結果を返します。また、Iterator ノードの下流にある Collector ノードを使用すると、反復応答を収集して、配列のサイズに加えて配列として返すこともできます。

以下は、イテレーター [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を示しています。

```
{
    "name": "string",
    "type": "Iterator",
    "inputs": [
        {
            "name": "array",
            "type": "Array",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "arrayItem",
            "type": "String | Number | Boolean | Object | Array",
        },
        {
            "name": "arraySize",
            "type": "Number"
        }
    ],
    "configuration": {
        "iterator": CONTEXT-DEPENDENT
    }
}
```

### Collector ノード


Collector ノードは、配列のサイズに加えて反復入力を取得し、配列として返します。Iterator ノードの下流にある Collector ノードを使用すると、一部のノード経由で反復項目を送信した後にこれらの項目を収集できます。

コレクター [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を以下に示しています。

```
{
    "name": "string",
    "type": "Collector",
    "inputs": [
        {
            "name": "arrayItem",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        {
            "name": "arraySize",
            "type": "Number"
        }
    ],
    "outputs": [
        {
            "name": "collectedArray",
            "type": "Array"
        },
    ],
    "configuration": {
        "collector": CONTEXT-DEPENDENT
    }
}
```

### DoWhile ループノード


DoWhile ループノードは、指定された条件が true のままの間、ノードのシーケンスを繰り返し実行します。ループは条件を評価する前に少なくとも 1 回実行されるため、アクションを実行した後、結果に基づいて繰り返す必要があるかどうかを確認する必要があるシナリオに最適です。

DoWhile ループノードは入力データを受け取り、ループ本体に渡します。反復のたびに、条件が評価され、ループを継続するか終了するかが決定されます。ループは、条件が true に評価されるか、`maxIterations` を超えない限り継続されます。

DoWhile ループ [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "DoWhile",
    "inputs": [
        {
            "name": "loopInput",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "loopOutput",
            "type": "String | Number | Boolean | Object | Array"
        },
        {
            "name": "iterationCount",
            "type": "Number"
        }
    ],
    "configuration": {
        "doWhile": {
            "condition": "string",
            "maxIterations": "number"
        }
    }
}
```

設定で、次の操作を行います。
+ `condition` – ループを継続するかどうかを決定するブール式。条件ノードと同じリレーショナル演算子と論理演算子を使用します。条件は反復ごとに評価されます。
+ `maxIterations` – 最大反復回数。デフォルトは 10 です。正の数を指定する必要があります。このパラメータは、無限ループを回避するのに役立ちます。

**注記**  
`maxIterations` パラメータのデフォルト値は 10 で、正の数のみを使用できます。条件が false になるか、最大反復回数に達すると、ループは終了します。

## フローでデータを処理するノード


フロー内のデータを処理するには、次のノードタイプを使用します。

### Prompt ノード


Prompt ノードは、フローで使用するプロンプトを定義します。プロンプト管理のプロンプトを使用するか、ノードでプロンプトをインラインで定義できます。詳細については、「[Amazon Bedrock でプロンプト管理を使用して再利用可能なプロンプトを構築して保存する](prompt-management.md)」を参照してください。

例については、[サンプルフローを試す](flows-ex.md)を参照してください。

Prompt ノードへの入力は、変数に入力する値です。出力は、モデルから生成されたレスポンスです。

プロンプト [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "prompt",
    "inputs": [
        {
            "name": "content",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        ...
    ],
    "outputs": [
        {
            "name": "modelCompletion",
            "type": "String"
        }
    ],
    "configuration": {
        "prompt": {
            "sourceConfiguration": [PromptFlowNodeSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PromptFlowNodeSourceConfiguration.html) object (see below),
            "guardrailConfiguration": {
                "guardrailIdentifier": "string",
                "guardrailVersion": "string"
            }
        }
    }
}
```

[PromptFlowNodeSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PromptFlowNodeSourceConfiguration.html) オブジェクトは、プロンプト管理のプロンプトを使用するか、プロンプトをインラインで定義するかによって異なります。
+ プロンプト管理のプロンプトを使用する場合は、オブジェクトは次の一般的な構造である必要があります。

  ```
  {
      "resource": {
          "promptArn": "string"
      }
  }
  ```
+ プロンプトをインラインで定義する場合は、[プロンプト管理を使用してプロンプトを作成する](prompt-management-create.md) の API タブでバリアントを定義するガイダンスに従います (ただし、このオブジェクトには `name` フィールドがないことに注意してください)。使用するオブジェクトは、次の一般的な構造である必要があります。

  ```
  {
      "inline": {
          "modelId": "string",
          "templateType": "TEXT",
          "templateConfiguration": {
              "text": {
                  "text": "string",
                  "inputVariables": [
                      {
                          "name": "string"
                      },
                      ...
                  ]
              }
          },
          "inferenceConfiguration": {
              "text": {
                  "maxTokens": int,
                  "stopSequences": ["string", ...],
                  "temperature": float,
                  "topP": float
              }
          },
          "additionalModelRequestFields": {
              "key": "value",
              ...
          }
      }
  }
  ```

Amazon Bedrock ガードレールからのガードレールをプロンプトまたはそこから生成されたレスポンスに適用するには、`guardrailConfiguration` フィールドを追加し、ガードレールの ID または ARN を `guardrailIdentifier` フィールドに指定して、ガードレールのバージョンを `guardrailVersion` フィールドに指定します。

### Agent ノード


Agent ノードを使用すると、プロンプトをエージェントに送信できます。エージェントは、FM と関連付けられたリソース間でオーケストレーションを行い、エンドユーザーに対してアクションを識別して実行します。詳細については、「[AI エージェントを使用してアプリケーションのタスクを自動化する](agents.md)」を参照してください。

設定で、使用するエージェントのエイリアスの Amazon リソースネーム (ARN) を指定します。ノードへの入力は、エージェントのプロンプトおよび関連する[プロンプトまたはセッション属性](agents-session-state.md)です。ノードはエージェントのレスポンスを出力として返します。

エージェントノードはマルチターン呼び出しをサポートできるため、フローの実行中にユーザーとエージェント間のインタラクティブな会話が可能になります。エージェントノードに追加情報または説明が必要な場合、フローの実行を一時停止し、ユーザーに特定の入力をリクエストできます。リクエストされた情報をユーザーが提供すると、エージェントノードは新しい入力で処理を続行します。これは、エージェントノードが実行を完了するために必要なすべての情報を取得するまで続きます。

エージェント [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "Agent",
    "inputs": [
       {
            "name": "agentInputText"
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        {
            "name": "promptAttributes"
            "type": "Object",
            "expression": "string"
        },
        {
            "name": "sessionAttributes"
            "type": "Object",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "agentResponse",
            "type": "String"
        }
    ],
    "configuration": {
        "agent": {
            "agentAliasArn": "string"
        }
    }
}
```

### Knowledge base ノード


ナレッジベースノードを使用すると、Amazon Bedrock Knowledge Bases からナレッジベースにクエリを送信できます。詳細については、「[Amazon Bedrock ナレッジベースでデータを取得して AI レスポンスを生成する](knowledge-base.md)」を参照してください。

設定で、最小限の `knowledgeBaseId` を指定します。ユースケースに応じて、次のフィールドを含めることもできます。
+ `modelId` – 取得した結果に基づいてレスポンスを生成する場合に使用する[モデル ID](models-supported.md) を含めます。取得した結果を配列として返すには、モデル ID を省略します。
+ `guardrailConfiguration` – Amazon Bedrock ガードレールで定義されているガードレールの ID または ARN を `guardrailIdentifier` フィールドに、ガードレールのバージョンを `guardrailVersion` フィールドに含めます。
**注記**  
ガードレールは、ナレッジベースノードで `RetrieveAndGenerate` を使用する場合にのみ適用できます。

ノードへの入力は、ナレッジベースへのクエリです。出力は、モデルレスポンス、文字列、または取得した結果の配列のいずれかです。

ナレッジベース [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "KnowledgeBase",
    "inputs": [
       {
            "name": "retrievalQuery",
            "type": "String",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "retrievalResults" | "outputText",
            "type": "Array | String"
        }
    ],
    "configuration": {
        "knowledgeBase": {
            "knowledgeBaseId": "string",
            "modelId": "string",
            "guardrailConfiguration": {
                "guardrailIdentifier": "string",
                "guardrailVersion": "string"
            }
        }
    }
}
```

### S3 Storage ノード


S3 Storage ノードを使用すると、Amazon S3 バケットへのフローにデータを保存できます。設定では、データストレージに使用する S3 バケットを指定します。ノードへの入力は、保存するコンテンツと[オブジェクトキー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)です。ノードは S3 ロケーションの URI を出力として返します。

S3 ストレージ [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "Storage",
    "inputs": [
        {
            "name": "content",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        {
            "name": "objectKey",
            "type": "String",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "s3Uri",
            "type": "String"
        }
    ],
    "configuration": {
        "retrieval": {
            "serviceConfiguration": {
                "s3": {
                    "bucketName": "string"
                }
            }
        }
    }
}
```

### S3 Retrieval ノード


S3 Retrieval ノードを使用すると、Amazon S3 ロケーションからデータを取得してフローに導入できます。設定では、データを取得する S3 バケットを指定します。ノードへの入力は[オブジェクトキー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)です。ノードは S3 ロケーションのコンテンツを出力として返します。

**注記**  
現在、S3 ロケーションのデータは UTF-8 エンコード文字列である必要があります。

S3 取り出し [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "Retrieval",
    "inputs": [
        {
            "name": "objectKey",
            "type": "String",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "s3Content",
            "type": "String"
        }
    ],
    "configuration": {
        "retrieval": {
            "serviceConfiguration": {
                "s3": {
                    "bucketName": "string"
                }
            }
        }
    }
}
```

### Lambda function ノード


Lambda function ノードを使用すると、ビジネスロジックを実行するようにコードを定義できる Lambda 関数を呼び出すことができます。フローに Lambda ノードを含めると、Amazon Bedrock は指定された Lambda 関数に入力イベントを送信します。

設定では、Lambda 関数の Amazon リソースネーム (ARN) を指定します。Lambda 入力イベントで送信する入力を定義します。これらの入力に基づいてコードを記述し、関数によって返される内容を定義できます。出力では、関数のレスポンスが返されます。

Lambda 関数 [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "LambdaFunction",
    "inputs": [
       {
            "name": "codeHookInput",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        ...
    ],
    "outputs": [
        {
            "name": "functionResponse",
            "type": "String | Number | Boolean | Object | Array"
        }
    ],
    "configuration": {
        "lambdaFunction": {
            "lambdaArn": "string"
        }
    }
}
```

#### フローの Lambda 入力イベント


Lambda ノードで Lambda 関数に送信される入力イベントは、次の形式です。

```
{
   "messageVersion": "1.0",
   "flow": {
        "flowArn": "string",
        "flowAliasArn": "string"
   },
   "node": {
        "name": "string",
        "inputs": [
            {
               "name": "string",
               "type": "String | Number | Boolean | Object | Array",
               "expression": "string",
               "value": ...
            },
            ...
        ]
   }
}
```

各入力のフィールドは Lambda ノードを定義するときに指定したフィールドと一致し、`value` フィールドの値は、式によって解決された後のノードへの入力全体で指定されます。例えば、ノードへの入力全体が `[1, 2, 3]` で、式が `$.data[1]` の場合、Lambda 関数に送信される入力イベントの値は `2` になります。

Lambda でのイベントの詳細については、[AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/)の「[Lambda の概念](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event)」を参照してください。

#### フローの Lambda レスポンス


Lambda 関数を記述するときは、この関数から返されるレスポンスを定義します。このレスポンスは、Lambda ノードの出力としてフローに返されます。

### インラインコードノード


インラインコードノードを使用すると、フロー内でコードを直接記述して実行できるため、外部の Lambda 関数を使用せずにデータ変換、カスタムロジック、統合が可能になります。インラインコードノードをフローに含めると、Amazon Bedrock は、誰とも共有されておらず、インターネットアクセスも持たない独立した AWS マネージド環境でコードを実行します。

**注記**  
インラインコードノードは、Amazon Bedrock のプレビューリリースに含まれているため、変更される可能性があります。

ノード設定で、プログラミング言語とともに実行するコードを指定します (現在のところは `Python_3` が唯一の選択肢です)。コードが変数としてアクセスできる入力を定義します。コード内の最後に実行された行の結果がノード出力として返されます。

インラインコード [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次の例に示します。

```
{
    "name": "string",
    "type": "InlineCode",
    "inputs": [{
            "name": "string",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        ...
    ],
    "outputs": [{
        "name": "response",
        "type": "String | Number | Boolean | Object | Array"
    }],
    "configuration": {
        "inlineCode": {
            "code": "string",
            "language": "Python_3"
        }
    }
}
```

#### インラインコードノードを使用する際の考慮事項


フローでインラインコードノードを使用する場合は、次の点を考慮してください。

**重要**  
インラインコードノードに追加する前に、コードをテストすることをお勧めします。
+ インラインコードノードは、[非同期](flows-create-async.md)フロー実行ではサポートされていません。
+ 現在、インラインコードノードでサポートされているプログラミング言語は Python 3.12 (`Python_3)`) のみです。
+ インラインコードはインタラクティブな Python セッションのように機能します。最後に実行された行の結果のみがキャプチャされ、ノード出力として返されます。
+ Python コンソールの出力 (`print` 関数からの出力など) はキャプチャされません。
+ インラインコードノードの入力は、コード内の Python 変数として使用できます。ノード入力の正確な名前を使用して参照してください。
+ ランタイムエラーを回避するために、入力タイプと出力タイプを正しく構成してください。最大 5 つのノード入力を設定できます。
+ フローごとに最大 5 つのインラインコードノードを使用できます。
+ 1 つの AWS アカウントあたり最大 25 個のインラインコードノードを実行できます。
+ コードは 5 MB を超えることはできません。

#### インラインコードノード入力


インラインコードノードに定義した入力は、コード内の Python 変数として使用できます。例えば、`userData` という名前の入力を定義すると、コード内で `userData` として直接アクセスできます。

各入力の値は、定義した式に基づいて入力されます。例えば、ノードへの入力が `{"name": "John", "age": 30}` で、式が `$.name` の場合、入力変数の値は `"John"` になります。

#### インラインコードノード出力


コード内の最後に実行された行の結果がインラインコードノードの出力として返されます。この出力は、フロー内の後続のノードで使用できます。

例えば、次のコードはノード出力としてディクショナリを返します。

```
# Process input data
result = {"processed": True, "data": userData}

# The last line's result is returned as the node output
result
```

### Lex ノード


**注記**  
Lex ノードは Amazon Lex サービスに依存しています。Amazon Lex サービスは、他の AWS サービスの開発と継続的な改善のために、お客様のコンテンツを保存して使用する場合があります。お客様は AWS 、サービスの改善のためにコンテンツを保存または使用することをオプトアウトできます。Amazon Lex のオプトアウトポリシーを実装する方法については、「[AI サービスのオプトアウトポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html)」を参照してください。

Lex ノードを使用すると、Amazon Lex ボットを呼び出して自然言語処理を使用して発話を処理し、ボット定義に基づいてインテントを識別できます。詳細については、[Amazon LEX 開発者ガイド](https://docs.aws.amazon.com/lex/latest/dg/)を参照してください。

設定で、使用するボットのエイリアスの Amazon リソースネーム (ARN) と使用するロケールを指定します。ノードへの入力は、発話と、それに伴う[リクエスト属性](https://docs.aws.amazon.com/lexv2/latest/dg/context-mgmt-request-attribs.html)または[セッション属性](https://docs.aws.amazon.com/lexv2/latest/dg/context-mgmt-request-attribs.html)です。ノードは、識別されたインテントを出力として返します。

**注記**  
現在、Lex ノードはマルチターン会話に対応していません。1 つの Lex ノードは 1 つの発話しか処理できません。

Lex [FlowNode](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowNode.html) オブジェクトの一般的な構造を次に示します。

```
{
    "name": "string",
    "type": "Lex",
    "inputs": [
       {
            "name": "inputText",
            "type": "String | Number | Boolean | Object | Array",
            "expression": "string"
        },
        {
            "name": "requestAttributes",
            "type": "Object",
            "expression": "string"
        },
        {
            "name": "sessionAttributes",
            "type": "Object",
            "expression": "string"
        }
    ],
    "outputs": [
        {
            "name": "predictedIntent",
            "type": "String"
        }
    ],
    "configuration": {
        "lex": {
            "botAliasArn": "string",
            "localeId": "string"
        }
    }
}
```

## ノードタイプの概要テーブル


次の表は、各ノードタイプで許可される入力と出力をまとめたものです。次の点に注意してください。
+ 名前が「**すべて**」とマークされている場合は、任意の文字列を名前として指定できます。それ以外の場合は、テーブルで指定された値を使用する必要があります。
+ 型が「**すべて**」とマークされている場合は、文字列、数値、ブール値、オブジェクト、配列のいずれかのデータ型を指定できます。それ以外の場合は、テーブルで指定された型を使用する必要があります。
+ **条件**、**プロンプト**、**Lambda 関数**、**インラインコード**ノードに複数の入力を定義することができます。


**ロジックノードタイプ**  
<a name="flows-nodes-logic-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-nodes.html)


**データ処理ノードタイプ**  
<a name="flows-nodes-data-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-nodes.html)