

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

# Amazon Bedrock フローを使用してエンドツーエンドの生成 AI ワークフローを構築する
<a name="flows"></a>

Amazon Bedrock Flows では、サポートされる基盤モデル (FMs) を使用して、プロンプト、基盤モデル、その他の AWS サービスをリンクしてend-to-endソリューションを作成することでワークフローを構築できます。

フローを使用すると、ビジュアルビルダーを使用して複雑な生成 AI ワークフローをすばやく構築し、FMs、ナレッジベースなどの Amazon Bedrock サービスと簡単に統合できます。これらの AWS AWS Lambda 間でデータを転送したり、変更不可能なワークフローをデプロイして、数回のクリックでテストから本番環境に移行したりできます。

Amazon Bedrock フローの詳細については、次のリソースを参照してください。
+ Amazon Bedrock フローの料金は、使用するリソースによって異なります。例えば、Amazon Titan モデルを使用するプロンプトノードでフローを呼び出すと、そのモデルの呼び出しに対して料金が発生します。詳細については、「[Amazon Bedrock の料金](https://aws.amazon.com/bedrock/pricing/)」を参照してください。
+ フローのクォータを確認するには、「 AWS 全般のリファレンス」の「[Amazon Bedrock エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)」を参照してください。

Amazon Bedrockでフローを構築できるタスクの例の一部を以下に示します。
+ **E メール招待を作成して送信する** – プロンプトノード、ナレッジベースノード、Lambda 関数ノードを接続するフローを作成します。E メール本文を生成するには、「**Send invite to John Smith’s extended team for in-person documentation read for an hour at 2PM EST next Tuesday**」プロンプトを指定します。プロンプトの処理後、フローはナレッジベースにクエリを実行して John Smith の拡張チームの E メールアドレスを検索し、Lambda 関数に入力を送信して、リスト内のすべてのチームメンバーに招待を送信します。
+ **エラーメッセージと、エラーの原因となっているリソースの ID を使用してトラブルシューティングする** – フローは、ドキュメントナレッジベースで考えられるエラーの原因を調べ、システムログとリソースに関するその他の関連情報を取得して、リソースの障害のある設定と値を更新します。
+ **レポートを生成する** – フローを構築して、上位製品のメトリクスを生成します。フローでは、データベース内の販売メトリクスを検索し、メトリクスを集約して、上位の製品購入の概要レポートを生成し、指定されたポータルにレポートを発行します。
+ **指定されたデータセットからデータを取り込む** – 「**Start ingesting new datasets added after 3/31 and report failures**」のようなプロンプトを指定します。フローは、取り込みのためのデータの準備を開始し、ステータスに関するレポート作成を継続します。データ準備が完了すると、フローは失敗したデータをフィルタリングする取り込みプロセスを開始します。データインジェストが完了すると、フローは障害を要約し、障害レポートを公開します。

Amazon Bedrock のフローを使用すると、基盤モデル (FMs)、プロンプト、その他の AWS サービスを簡単にリンクして、フローをすばやく作成、テスト、実行できます。Amazon Bedrock コンソールのビジュアルビルダーまたは API を使用して、フローを管理できます。

フローを作成、テスト、デプロイするための一般的な手順は次のとおりです。

**フローを作成する:**

1. フロー名、説明、および適切な IAM アクセス許可を指定します。

1. 使用するノードを決定して、フローを設計します。

1. 各ノードに必要なすべてのリソースを作成または定義します。たとえば、 AWS Lambda 関数を使用する予定の場合は、ノードがタスクを完了するために必要な関数を定義します。

1. フローにノードを追加し、設定して、ノードの出力をフロー内の別のノードの入力にリンクしてノード間の接続を作成します。

**フローをテストする:**

1. 最新の変更がフローの*作業中のドラフト* (フローを繰り返しテストして更新するために使用できるフローのバージョン) に適用されるように、フローを準備します

1. フローをサンプル入力で呼び出してテストし、生成される出力を確認します。

1. フローの設定に問題がなければ、*バージョン*を公開するとスナップショットを作成できます。バージョンは、作成時に存在するフローの定義を保持します。バージョンは、作成時のフローのスナップショットとして機能するため、変更できません。

**フローをデプロイする**

1. アプリケーションで使用するフローのバージョンを指すエイリアスを作成します。

1. このエイリアスに `InvokeFlow` リクエストを送信するようにアプリケーションをセットアップします。古いバージョンに戻すか、新しいバージョンにアップグレードする必要がある場合は、エイリアスのルーティング設定を変更できます。

**Topics**
+ [Amazon Bedrock Flows の仕組み](flows-how-it-works.md)
+ [フローをサポートするリージョンとモデル](flows-supported.md)
+ [Amazon Bedrock プロンプトフローの前提条件](flows-prereq.md)
+ [Amazon Bedrock でフローを作成および設計する](flows-create.md)
+ [Amazon Bedrock でフローに関する情報を表示する](flows-view.md)
+ [Amazon Bedrock でフローを変更する](flows-modify.md)
+ [Amazon Bedrock のフローにガードレールを追加する](flows-guardrails.md)
+ [Amazon Bedrock でフローをテストする](flows-test.md)
+ [フロー実行を使用して Amazon Bedrock フローを非同期で実行する](flows-create-async.md)
+ [バージョンとエイリアスを使用してフローをアプリケーションにデプロイする](flows-deploy.md)
+ [別の AWS アカウントの Amazon Bedrock フローから AWS Lambda 関数を呼び出す](flow-cross-account-lambda.md)
+ [Amazon Bedrock フローと会話する](flows-multi-turn-invocation.md)
+ [Amazon Bedrock フローのコードサンプルを実行する](flows-code-ex.md)
+ [Amazon Bedrock でフローを削除する](flows-delete.md)

# Amazon Bedrock Flows の仕組み
<a name="flows-how-it-works"></a>

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 の主な定義
<a name="key-definitions-flow"></a>

次のリストでは、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 の入力全体から関連部分を抽出して入力を定義する
<a name="flows-expressions"></a>

ノードの入力を設定する際は、ノードに入る入力全体に関連して定義する必要があります。入力全体は、文字列、数値、ブール値、配列、またはオブジェクトを指定できます。入力全体に関連して入力を定義するには、[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"]] | 

# フローのノードタイプ
<a name="flows-nodes"></a>

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 の構造を示します。セクションを展開して、そのノードタイプの詳細を確認します。

## フローのロジックを制御するノード
<a name="flows-nodes-logic"></a>

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

### Flow input ノード
<a name="flows-nodes-input"></a>

すべてのフローには 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 ノード
<a name="flows-nodes-output"></a>

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 ノード
<a name="flows-nodes-condition"></a>

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

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

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

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

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

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

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

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

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

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

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

#### 条件式
<a name="flows-nodes-condition-expr"></a>

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


****  

| オペレーター | 意味 | サポートされているデータ型 | 使用例 | 例の意味 | 
| --- | --- | --- | --- | --- | 
| == | 等しい (データ型も等しい必要がある) | 文字列、数値、ブール値 | 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 ノード
<a name="flows-nodes-iterator"></a>

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 ノード
<a name="flows-nodes-collector"></a>

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 ループノード
<a name="flows-nodes-dowhile"></a>

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 になるか、最大反復回数に達すると、ループは終了します。

## フローでデータを処理するノード
<a name="flows-nodes-data"></a>

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

### Prompt ノード
<a name="flows-nodes-prompt"></a>

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 ノード
<a name="flows-nodes-agent"></a>

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 ノード
<a name="flows-nodes-kb"></a>

ナレッジベースノードを使用すると、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 ノード
<a name="flows-nodes-storage"></a>

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 ノード
<a name="flows-nodes-retrieval"></a>

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 ノード
<a name="flows-nodes-lambda"></a>

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 入力イベント
<a name="flows-nodes-lambda-input"></a>

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 レスポンス
<a name="flows-nodes-lambda-response"></a>

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

### インラインコードノード
<a name="flows-nodes-inline-code"></a>

インラインコードノードを使用すると、フロー内でコードを直接記述して実行できるため、外部の 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"
        }
    }
}
```

#### インラインコードノードを使用する際の考慮事項
<a name="flows-nodes-inline-code-usage"></a>

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

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

#### インラインコードノード入力
<a name="flows-nodes-inline-code-input"></a>

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

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

#### インラインコードノード出力
<a name="flows-nodes-inline-code-output"></a>

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

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

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

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

### Lex ノード
<a name="flows-nodes-lex"></a>

**注記**  
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"
        }
    }
}
```

## ノードタイプの概要テーブル
<a name="flows-nodes-summary-table"></a>

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

# フローをサポートするリージョンとモデル
<a name="flows-supported"></a>

Amazon Bedrock フローは、以下でサポートされていますAWS リージョン。
+ ap-northeast-1
+ ap-northeast-2
+ ap-northeast-3
+ ap-south-1
+ ap-south-2
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-central-2
+ eu-north-1
+ eu-south-1
+ eu-south-2
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ sa-east-1
+ us-east-1
+ us-east-2
+ us-gov-east-1
+ us-gov-west-1
+ us-west-2

Amazon Bedrock Flows でサポートされるモデルは、プロンプトフローで使用するノードによって異なります。
+ Prompt ノード – [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) API でサポートされている任意のテキストモデルでプロンプト管理を使用できます。サポートされているモデルのリストについては、「[サポートされているモデルとモデルの機能](conversation-inference-supported-models-features.md)」を参照してください。
+ Agent ノード — サポートされているモデルのリストについては、「[Amazon Bedrock エージェントでサポートされているリージョン](agents-supported.md)」を参照してください。
+ Knowledge base ノード – サポートされているモデルのリストについては、「[Amazon Bedrock ナレッジベースでサポートされているモデルとリージョン](knowledge-base-supported.md)」を参照してください。

各モデルをサポートするリージョンの表については、「[Amazon Bedrock でサポートされている基盤モデル](models-supported.md)」を参照してください。

# Amazon Bedrock プロンプトフローの前提条件
<a name="flows-prereq"></a>

フローを作成する前に、以下の前提条件を確認し、満たす必要があるものを判断します。

1. フローに追加する予定の 1 つ以上のノードのリソースを定義または作成します。
   + Prompt ノードの場合 – プロンプト管理を使用してプロンプトを作成します。詳細については、「[Amazon Bedrock でプロンプト管理を使用して再利用可能なプロンプトを構築して保存する](prompt-management.md)」を参照してください。フローでノードを作成するときにプロンプトをインラインで定義する場合、プロンプト管理でプロンプトを作成する必要はありません。
   + ナレッジベースノードの場合 – フローで使用するナレッジベースを作成します。詳細については、「[Amazon Bedrock ナレッジベースでデータを取得して AI レスポンスを生成する](knowledge-base.md)」を参照してください。
   + Agent ノードの場合 – フローで使用する予定のエージェントを作成します。詳細については、「[AI エージェントを使用してアプリケーションのタスクを自動化する](agents.md)」を参照してください。
   + S3 storage ノードの場合 – S3 バケットを作成して、フロー内のノードからの出力を保存します。
   + S3 retrieval ノードの場合 – フローのデータを取得するバケットに S3 オブジェクトを作成します。S3 オブジェクトは UTF-8 でエンコードされた文字列である必要があります。
   + Lambda ノードの場合 – フローに実装するビジネスロジックのAWS Lambda関数を定義します。詳細については、[AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/)を参照してください。
   + Amazon Lex ノードの場合 – インテントを識別する Amazon Lex ボットを作成します。詳細については、[Amazon LEX 開発者ガイド](https://docs.aws.amazon.com/lex/latest/dg/)を参照してください。

1. フローを使用するには、次の 2 つの異なるロールが必要です。

   1. **ユーザーロール** – にログインAWS マネジメントコンソールしたり API コールを行ったりするために使用する IAM ロールには、フロー関連のアクションを実行するためのアクセス許可が必要です。

      ロールに [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess) ポリシーがアタッチされている場合、このロールに追加のアクセス許可を設定する必要はありません。フローに使用されるアクションのみにロールのアクセス許可を制限するには、次の ID ベースのポリシーを IAM ロールにアタッチします。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "FlowPermissions",
                  "Effect": "Allow",
                  "Action": [  
                      "bedrock:CreateFlow",
                      "bedrock:UpdateFlow",
                      "bedrock:GetFlow",
                      "bedrock:ListFlows", 
                      "bedrock:DeleteFlow",
                      "bedrock:ValidateFlowDefinition", 
                      "bedrock:CreateFlowVersion",
                      "bedrock:GetFlowVersion",
                      "bedrock:ListFlowVersions",
                      "bedrock:DeleteFlowVersion",
                      "bedrock:CreateFlowAlias",
                      "bedrock:UpdateFlowAlias",
                      "bedrock:GetFlowAlias",
                      "bedrock:ListFlowAliases",
                      "bedrock:DeleteFlowAlias",
                      "bedrock:InvokeFlow",
                      "bedrock:TagResource",
                      "bedrock:UntagResource", 
                      "bedrock:ListTagsForResource"
                  ],
                  "Resource": "*"
              }
          ]   
      }
      ```

------

      [アクション](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)を省略するか、[リソース](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)と[条件キー](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys)を指定することで、アクセス許可をさらに制限できます。IAM ID は、特定のリソースに対して API オペレーションを呼び出すことができます。ポリシーで指定されたリソースで使用できない API オペレーションを指定すると、Amazon Bedrock はエラーを返します。

   1. **サービスロール** – Amazon Bedrock がユーザーに代わってアクションを実行することを許可するロール。このロールは、フローを作成または更新する際に指定する必要があります。[カスタム AWS Identity and Access Management[サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)](flows-permissions.md)を作成できます。
**注記**  
フローの作成時に Amazon Bedrock コンソールを使用してロールを自動的に作成する場合、このロールを手動で設定する必要はありません。

# Amazon Bedrock でフローを作成および設計する
<a name="flows-create"></a>

このセクションでは、Amazon Bedrock コンソールを使用して、フローを作成および設計する方法について説明します。開始しやすいように、コンソールで作成したフローは、単一のプロンプトノードで実行されるように設定されています。このセクションでは、さまざまなタイプのフローを作成するための追加の例とテンプレートも提供します。

AWS SDK を使用してフローを作成する場合は、「[Amazon Bedrock フローのコードサンプルを実行する](flows-code-ex.md)」を参照してください。

**Topics**
+ [Amazon Bedrock で最初のフローを作成する](flows-get-started.md)
+ [Amazon Bedrock でフローを設計する](flows-design.md)
+ [サンプルフローを試す](flows-ex.md)
+ [テンプレートを使用して Amazon Bedrock フローを作成する](flows-templates.md)

# Amazon Bedrock で最初のフローを作成する
<a name="flows-get-started"></a>

フローを作成するたびに、Amazon Bedrock コンソールで初期フローが自動的に作成されます。このフローには、**フロー入力**ノード、**プロンプト**ノード、**フロー出力**ノードが含まれます。フローを実行するときに、フローのトピックを入力すると、プロンプトノードを使用してトピックが要約されます。フローを実行する前に、プロンプトのモデルを設定する必要があります。

フローを作成するには、フローの名前と説明を指定します。デフォルトでは、Amazon Bedrock は適切なアクセス許可を持つサービスロールを作成します。オプションで、既存のサービスロールを指定できます。

Amazon Bedrock は、保管中のデータを暗号化します。デフォルトでは、Amazon Bedrock はこのデータを暗号化するのに AWS マネージドキーを使用します。オプションで、カスタマーマネージドキーを使用してフロー実行データを暗号化することもできます。詳細については、「[Amazon Bedrock Flows リソースの暗号化](encryption-flows.md)」を参照してください。

初期フローを使用した作業が完了した後、または初期フローが不要な場合は、フローの構築を続行できます。「[Amazon Bedrock Flows の仕組み](flows-how-it-works.md)」を読んで Amazon Bedrock Flows の概念と用語を理解し、利用可能なノードのタイプについて学ぶことをお勧めします。詳細については、「[Amazon Bedrock でフローを設計する](flows-design.md)」を参照してください。

**最初のフローを作成するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。

1. **[Amazon Bedrock Flows]** セクションで、**[フローを作成]** を選択します。

1. フローの **[名前]** とオプションの **[説明]** を入力します。

1. **[サービスロール名]** で、以下のオプションのいずれかを選択します。
   + **新しいサービスロールを作成して使用** – 使用するサービスロールを Amazon Bedrock で作成します。
   + **既存のサービスロールを使用 ** – 以前に設定したカスタムサービスロールを選択します。詳細については、「[Amazon Bedrock で Amazon Bedrock Flows のサービスロールを作成する](flows-permissions.md)」を参照してください。

1. (オプション) 以下を実行して、カスタマーマネージドキーでフローを暗号化します。

   1. **[追加設定]** を選択します。

   1. **[KMS キーの選択]** で、**[暗号化設定をカスタマイズ (高度)]** を選択します。次に、**[AWS KMS キーを選択]** で次のいずれかを実行します。
      + 既存のキーを使用するには、ARN を入力するか、使用するキーを見つけます。
      + 新しいキーを作成するには、**[AWS KMS キーを作成]** を選択して AWS Key Management Service コンソールを開き、[キーを作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)します。キーを作成するときは、キーの ARN を書き留めます。Amazon Bedrock コンソールに戻り、**[AWS KMS キーを選択]** でキーの ARN を入力します。

   詳細については、[Amazon Bedrock Flows リソースの暗号化](encryption-flows.md)を参照してください。

1. **[作成]** を選択します。Amazon Bedrock によって初期フローが作成され、**フロービルダー**が表示されます。

1. **[フロービルダー]** セクションでは、中央ペイン (キャンバス) に**フロー入力**ノード、**プロンプト**ノード、**フロー出力**が表示されます。ノードは既に接続されています。

1. キャンバスで、**プロンプト**ノードを選択します。

1. [フロービルダー] ペインで、**[設定]** セクションを選択します。

1. **[ノード名]** で、**[ノードで定義]** が選択されていることを確認します。

1. **[モデルを選択]** で、使用するモデルを選択します。

1. **[保存]** を選択して、フローを保存します。

1. 右側の **[フローをテスト]** ペインで、要約するフローのトピックを入力します。

1. **[実行]** を選択してフローを実行します。要約されたトピックがフローに表示されます。

# Amazon Bedrock でフローを設計する
<a name="flows-design"></a>

このセクションでは、Amazon Bedrock フローを設計します。フローを設計する前に、「[Amazon Bedrock Flows の仕組み](flows-how-it-works.md)」を読んで Amazon Bedrock フローの概念と用語を理解し、利用可能なノードのタイプについて学ぶことをお勧めします。試すことができるフローの例については、「[サンプルフローを試す](flows-ex.md)」を参照してください。

**フローを構築するには**

1. **[フロービルダー]** を開いていない場合は、以下を実行します。

   1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

   1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションでフローを選択します。

   1. **[フロービルダーで編集]** を選択します。

1. **[フロービルダー]** セクションでは、中央パネルに**フロー入力**ノードと**フロー出力**ノードが表示されます。これらは、フローの入力ノードと出力ノードです。

1. 次を実行して、ノードの追加と設定を行います。

   1. **[フロービルダー]** パネルで、**[ノード]** を選択します。

   1. フローの最初のステップに使用するノードをドラッグし、中央ペインにドロップします。

   1. ノードの円は接続ポイントです。フロー入力ノードを 2 番目のノードに接続するには、**フロー入力**ノードの円から、追加したノードの**入力**セクションの円に線をドラッグします。

   1. 追加したノードを選択します。

   1. **[フロービルダー]** パネルの **[設定]** セクションで、選択したノードの設定を指定し、ノードの入力と出力の名前、データ型、式を定義します。

   1. **[フロービルダー]** パネルで、**[ノード]** を選択します。

   1. ステップを繰り返して、フロー内の残りのノードを追加して設定します。
**注記**  
Amazon Bedrock によって自動的に作成されたサービスロールを使用する場合は、ノードを追加すると、ロールが適切なアクセス許可で更新されます。ただし、カスタムサービスロールを使用する場合は、「[Amazon Bedrock で Amazon Bedrock Flows のサービスロールを作成する](flows-permissions.md)」を参照して、サービスロールにアタッチされたポリシーに適切なアクセス許可を追加する必要があります。

1. フロー内の最後のノードの**出力**を**フロー出力**ノード**の入力**に接続します。複数の**フロー出力**ノードを構成できます。さらにフロー出力ノードを追加するには、**フロー出力**ノードをドラッグして、フローを停止するノードの横にドロップします。2 つのノード間では必ず接続を描画してください。

1. 次の手順 ([Amazon Bedrock でフローをテストする](flows-test.md)) に進むか、後で戻って実行します。次のステップに進むには、**[保存]** を選択します。後から戻るには、**[保存して終了]** を選択します。

**ノードまたは接続を削除する**

フローを構築するプロセス中、ノードを削除したり、ノード接続を削除したりする必要がある場合があります。

**ノードを削除するには**

1. 削除するノードを選択します。

1. **[フロービルダー]** パネルで、削除アイコン (![\[Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family.\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/trash.png)) を選択します。
**注記**  
Amazon Bedrock によって自動的に作成されたサービスロールを使用する場合は、ノードを追加すると、ロールが適切なアクセス許可で更新されます。ただし、ノードを削除しても、関連するアクセス許可は削除されません。不要になったアクセス許可は、「[ロールの変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)」の手順に従って削除することをお勧めします。

**接続を削除するには**
+ **[フロービルダー]** ページで、展開アイコンが表示されるまで、削除する接続にカーソルを合わせ、接続をノードからドラッグします。

フローを構築する際には、次の要件が適用されます。
+ フローには、フロー入力ノードが 1 つのみ、フロー出力ノードが 1 つ以上必要です。
+ フロー入力ノードの入力を含めることはできません。
+ フロー出力ノードの出力を含めることはできません。
+ ノード内のすべての出力は、ダウンストリームノードの入力に接続する必要があります (API では、これは [FlowConnection](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConnection.html) と [FlowDataConnectionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowDataConnectionConfiguration.html) を介して行われます)。
+ 条件ノードのすべての条件 (デフォルトの条件を含む) は、ダウンストリームノードに接続する必要があります (API では、[FlowConnection](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConnection.html) と [FlowConditionalConnectionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowConditionalConnectionConfiguration.html) を介して行われます)。

フローを構築する際には、次のポインターが適用されます。
+ まず、フロー入力ノードの出力のデータ型を設定します。このデータ型は、フローを呼び出すときに入力として送信することが期待されるデータ型と一致する必要があります。
+ 式を使用してフローの入力を定義するとき、結果が入力に選択したデータ型と一致することを確認します。
+ イテレータノードを含める場合、必要なノードを介して出力を送信した後、コレクターノードのダウンストリームを含めます。コレクターノードは、配列内の出力を返します。

# サンプルフローを試す
<a name="flows-ex"></a>

このトピックでは、Amazon Bedrock Flows の使用を開始するために試すことができるフローの例をいくつか紹介します。テンプレートを使用して、最初のフローを作成することもできます。詳細については、「[テンプレートを使用して Amazon Bedrock フローを作成する](flows-templates.md)」を参照してください。

Amazon Bedrock コンソールで構築する方法を確認するには、例を展開します。

**Topics**
+ [単一のプロンプトでフローを作成する](flows-ex-prompt.md)
+ [条件ノードを使用してフローを作成する](flows-ex-condition.md)

# 単一のプロンプトでフローを作成する
<a name="flows-ex-prompt"></a>

次の図は、ノード内にインラインで定義された単一のプロンプトで構成されるフローを説明しています。このプロンプトは、ジャンルとプレイリストに含める曲の数を含む JSON オブジェクト入力から曲のプレイリストを生成します。

![\[2 つの変数を持つプロンプトノードを使用する例。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/flows/flows-prompt.png)


**コンソールでこのフローを構築してテストするには**

1. 「[Amazon Bedrock で最初のフローを作成する](flows-get-started.md)」の手順に従ってフローを作成します。

1. 次の手順を実行して、プロンプトノードを設定します。

   1. 中央ペインで、**[プロンプト]** ノードを選択します。

   1. **[フロービルダー]** ペインで、**[設定]** タブを選択します。

   1. **ノード名**として **MakePlaylist** と入力します。

   1. **[ノードで定義]** を選択します。

   1. プロンプトで次の設定を行います。

      1. **[モデルを選択]** で、プロンプトで推論を実行するモデルを選択します。

      1. **[メッセージ]** テキストボックスに「**Make me a \$1\$1genre\$1\$1 playlist consisting of the following number of songs: \$1\$1number\$1\$1.**」と入力します。これにより、ノードへの入力として表示される 2 つの変数が作成されます。

      1. (オプション) **[推論の設定]** を変更します。

      1. (オプション) モデルでサポートされている場合は、プロンプトメッセージのプロンプト**キャッシュ**を設定できます。詳細については、「[Amazon Bedrock でフローを作成および設計する](flows-create.md)」を参照してください。

   1. **[入力]** セクションを展開します。入力の名前は、プロンプトメッセージの変数によって事前に入力されます。以下のように入力を設定します。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-ex-prompt.html)

      この設定は、プロンプトノードが、`genre` 入力にマッピングされる `genre` というフィールドと、`number` 入力にマッピングされる `number` というフィールドを含んでいる JSON オブジェクトを期待することを意味します。

   1. **[出力]** を変更することはできません。これはモデルからのレスポンスであり、文字列として返されます。

1. **フロー入力**ノードを選択し、**[設定]** タブを選択します。**[タイプ]** で **[オブジェクト]** を選択します。これは、フロー呼び出しが JSON オブジェクトを受け取ることを期待することを意味します。

1. ノードを接続して、次の手順を実行してフローを完了します。

   1. **フロー入力**ノードの出力ノードから **MakePlaylist** プロンプトノードの **genre** 入力に接続をドラッグします。

   1. **フロー入力**ノードの出力ノードから **MakePlaylist** プロンプトノードの **number** 入力に接続をドラッグします。

   1. **MakePlaylist** プロンプトノードの **modelCompletion** 出力の出力ノードから、**フロー出力** 出力ノードの**ドキュメント**入力に接続をドラッグします。

1. **[保存]** を選択して、フローを保存します。これで、フローをテストする準備が整いました。

1. 右側の **[テストフロー]** ペインに、以下の JSON オブジェクトを入力して、フローをテストします。**[実行]** を選択すると、フローはモデルレスポンスを返します。

   ```
   {
       "genre": "pop",
       "number": 3
   }
   ```

# 条件ノードを使用してフローを作成する
<a name="flows-ex-condition"></a>

次の図は、1 つの条件ノードが、満たされた条件に基づいて 3 つの可能な値のいずれかを返すフローを示しています。

![\[2 つの条件を持つ条件ノードを使用する例。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/flows/flows-condition.png)


**コンソールでこのフローを構築してテストするには:**

1. 「[Amazon Bedrock で最初のフローを作成する](flows-get-started.md)」の手順に従ってフローを作成します。

1. 中央のペインの**プロンプト**ノードを削除します。

1. 以下を実行して、条件ノードを設定します。

   1. **[フロービルダー]** の左ペインから、**[ノード]** タブを選択します。

   1. **[条件]** ノードを中央ペインのフローにドラッグします。

   1. **[フロービルダー]** ペインで **[設定]** タブを選択します。

   1. **[入力]** セクションを展開します。以下のように入力を設定します。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows-ex-condition.html)

      この設定は、条件ノードが、フィールド `retailPrice`、`marketPrice`、`type` を含んでいる JSON オブジェクトを期待することを意味します。

   1. 以下を実行して条件を設定します。

      1. **[条件]** セクションで、オプションで条件の名前を変更します。次に、**[条件]** テキストボックスに次の条件を追加します: **(retailPrice > 10) and (type == "produce")**

      1. **[条件を追加]** を選択して、2 番目の条件を追加します。オプションで、2 番目の条件の名前を変更します。次に、**[条件]** テキストボックスに次の条件を追加します: **(retailPrice < marketPrice)**

1. **フロー入力**ノードを選択し、**[設定]** タブを選択します。**[タイプ]** で **[オブジェクト]** を選択します。これは、フロー呼び出しが JSON オブジェクトを受け取ることを期待することを意味します。

1. 総ノード数が 3 になるようにフロー出力ノードを追加します。各フロー出力ノードの **[フロービルダー]** ペインの **[設定]** タブで、次のように設定します。

   1. 最初のフロー出力ノードの入力型を **String** に設定し、式を **\$1.data.action[0]** に設定して、受信オブジェクトの `action` フィールドの配列内の最初の値を返します。

   1. 2 番目のフロー出力ノードの入力型を **String** に設定し、式を **\$1.data.action[1]** に設定して、受信オブジェクトの `action` フィールドの配列内の 2 番目の値を返します。

   1. 3 番目のフロー出力ノードの入力型を **String** に設定し、式を **\$1.data.action[2]** に設定して、受信オブジェクトの `action` フィールドの配列内の 3 番目の値を返します。

1. 最初の条件を最初のフロー出力ノードに接続し、2 番目の条件を 2 番目のフロー出力ノードに接続して、デフォルトの条件を 3 番目のフロー出力ノードに接続します。

1. すべてのノードの入力と出力を接続し、次の手順を実行してフローを完了します。

   1. **フロー入力**ノードの出力ノードから条件ノードの **retailPrice** 入力に接続をドラッグします。

   1. **フロー入力**ノードの出力ノードから条件ノードの **marketPrice** 入力に接続をドラッグします。

   1. **フロー入力**ノードの出力ノードから条件ノードの **type** 入力に接続をドラッグします。

   1. **フロー入力**ノードの出力から 3 つの出力ノードそれぞれの **document** 入力に接続をドラッグします。

1. **[保存]** を選択して、フローを保存します。これで、フローをテストする準備が整いました。

1. 右側の **[フローをテスト]** ペインに次の JSON オブジェクトを入力してフローをテストします。入力ごとに **[実行]** を選択します。

   1. 次のオブジェクトは、最初の条件 (`retailPrice` が 10 より大きく、`type` が "produce") を満たしており、`action` の最初の値 ("don't buy") を返します。

      ```
      {
          "retailPrice": 11, 
          "marketPrice": 12, 
          "type": "produce", 
          "action": ["don't buy", "buy", "undecided"]
      }
      ```
**注記**  
最初の条件と 2 番目の条件の両方を満たしていても、最初の条件が優先されます。

   1. 次のオブジェクトは 2 番目の条件 (`retailPrice` が `marketPrice` より小さい) を満たしており、`action` の 2 番目の値 ("buy") を返します。

      ```
      {
          "retailPrice": 11, 
          "marketPrice": 12, 
          "type": "meat", 
          "action": ["don't buy", "buy", "undecided"]
      }
      ```

   1. 次のオブジェクトは、最初の条件 (`retailPrice` が 10 より大きいが、`type` は "produce"ではない) も 2 番目の条件 (`retailPrice` が `marketPrice` より小さい) も満たしていないため、`action` の 3 番目の値 ("undecided") が返されます。

      ```
      {
          "retailPrice": 11, 
          "marketPrice": 11, 
          "type": "meat", 
          "action": ["don't buy", "buy", "undecided"]
      }
      ```

# テンプレートを使用して Amazon Bedrock フローを作成する
<a name="flows-templates"></a>

Amazon Bedrock Flows の定義とオーケストレーションを開始するサポートとして、テンプレートを使用すると、さまざまなフロー設定のフローを作成できます。例えば、テンプレートを使用して、ナレッジベースを含むフローや、条件を使用してフローロジックを指示するフローを確認できます。

テンプレートには、[Amazon Bedrock Flows Samples](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file) GitHub リポジトリからアクセスできます。Amazon Bedrock コンソールでは、フローのキャンバスページからリポジトリへのリンクも提供されます。

フローテンプレートは、サポートされているフロー定義ごとに [JSON テンプレート](https://github.com/aws-samples/amazon-bedrock-flows-samples/tree/main/templates)と、フローの作成と実行に使用する Python スクリプトとして提供されます。Amazon Bedrock コンソールからフローにアクセスすることもできます。

リポジトリは、以下のテンプレートを提供しています。
+  [ナレッジベースフロー](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#1-knowledgebase-flow-1) – RAG (検索拡張生成) やナレッジベースの検索と取得など、[ナレッジベース](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#1-knowledgebase-flow-1)を統合してクエリする方法を示します。
+  [マルチターン会話エージェントフロー](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#2-multi-turn-conversation-agent-flow-1) – フローでインタラクティブかつステートフルな会話を実行する方法を示します。詳細については、「[Amazon Bedrock フローと会話する](flows-multi-turn-invocation.md)」を参照してください。
+  [条件フロー](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#3-conditions-flow-1) – フロー内で条件ロジックと分岐を実行する方法を示します。
+ [ガードレールフローを使用したプロンプトノード](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#4-prompt-node-with-guardrail-flow-1) – ガードレールを使用してプロンプトノードを保護する方法を示します。
+  [イテレーターとコレクターのフロー](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#5-iterator--collector-flow-1) – 複数の入力を処理し、レスポンスを集約する方法を示します。
+  [マルチエージェントフロー](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#5-iterator--collector-flow-1) – マルチエージェントコラボレーションやタスク委任など、さまざまなエージェントベースのワークフローを示します。

スクリプトを実行する前に、フローが使用するナレッジベースやエージェントなどの Amazon Bedrock リソースを作成する必要があります。これらのリソースが不要になったら削除するのは、お客様の責任となります。

テンプレートからフローを作成して実行するには、スクリプト (`flow_manager.py`) を実行します。このスクリプトは、使用するフローテンプレートやテンプレートに必要なリソースの識別子など、必要な追加情報の入力を求めます。フローで試すテストプロンプトを含めることができます。

必要に応じて、フローを作成する AWS リージョンを設定できます。このスクリプトは、デフォルトの [IAM ロールのアクセス許可](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#iam-role-permissions)セットを持つ、必要なリソースを作成します。また、独自に作成した IAM ロールを使用することもできます。

Amazon Bedrock コンソールでフローを使用する場合は、`--cleanup` パラメータは使用しないでください。このパラメータを使用すると、スクリプトがフローを実行した後にフローが削除されるためです。`--cleanup` を使用しない場合は、不要になったフローを削除する必要があります。

詳細については、[https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file\$1how-to-use](https://github.com/aws-samples/amazon-bedrock-flows-samples?tab=readme-ov-file#how-to-use) を参照してください。



# Amazon Bedrock でフローに関する情報を表示する
<a name="flows-view"></a>

フローに関する情報を表示する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**フローの詳細を表示するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションで、フローを選択します。

1. **[フローの詳細]** ペインでフローの詳細を確認します。

------
#### [ API ]

フローに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、フローの ARN または ID を `flowIdentifier` として指定し、[GetFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlow.html) リクエストを送信します。

フローの情報を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [ListFlows](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlows.html) リクエストを送信します。以下のオプションパラメータを指定できます。


****  

| フィールド | 簡単な説明 | 
| --- | --- | 
| maxResults | レスポンスとして返す結果の最大数。 | 
| nextToken | maxResults フィールドで指定した数よりも結果の件数が多い場合は、レスポンスで nextToken 値が返されます。結果の次のバッチを表示するには、別のリクエストで nextToken 値を送信します。 | 

------

# Amazon Bedrock でフローを変更する
<a name="flows-modify"></a>

フローを変更する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**フローの詳細を変更するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションで、フローを選択します。

1. **[フローの詳細]** セクションで、**[編集]** をクリックします。

1. 名前と説明を編集し、フローに別のサービスロールを関連付けることができます。

1. **[変更を保存]** を選択します。

**フローを変更するには**

1. **[フロービルダー]** を開いていない場合は、以下を実行します。

   1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

   1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションでフローを選択します。

   1. **[フロービルダーで編集]** を選択します。

1. 必要に応じて、ノードと接続を追加、削除、変更します。詳細については、[Amazon Bedrock でフローを作成および設計する](flows-create.md) および [フローのノードタイプ](flows-nodes.md) を参照してください。

1. フローに問題がなければ、**[保存]** または **[保存して終了]** をクリックします。

------
#### [ API ]

フローを編集するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[UpdateFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateFlow.html) リクエストを送信します。維持するフィールドと変更するフィールドの両方を含めます。リクエストのフィールドに関する考慮事項については、「[Amazon Bedrock でフローを作成および設計する](flows-create.md)」を参照してください。

------

# Amazon Bedrock のフローにガードレールを追加する
<a name="flows-guardrails"></a>

Amazon Bedrock Flows は Amazon Bedrock ガードレールと統合されているため、フロー内の不要なコンテンツを特定してブロックまたはフィルタリングできます。フローでサポートされているノードタイプにガードレールを適用する方法については、次の表を参照してください。


****  

| ノードの種類 | コンソール | API | 
| --- | --- | --- | 
| Prompt ノード | フローを[作成](flows-create.md)または[更新](flows-modify.md)する際に、[設定] セクションでプロンプトノードを選択し、ガードレールを指定します。 | [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) リクエストの nodes フィールドにプロンプトノードを定義する場合は、[PromptFlowNodeConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PromptFlowNodeConfiguration.html) に guardrailConfiguration フィールドを含めます。 | 
| Knowledge base ノード | フローを[作成](flows-create.md)または[更新](flows-modify.md)する際に、[設定] セクションでナレッジベースノードを選択し、ガードレールを指定します。取得された結果に基づいてレスポンスを生成する場合にのみ、ガードレールを含めることができます。 | [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) リクエストの nodes フィールドにナレッジベースノードを定義する場合は、[KnowledgeBaseFlowNodeConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseFlowNodeConfiguration.html) に guardrailConfiguration フィールドを含めます。RetrieveAndGenerate を使用する場合にのみガードレールを含めることができるため、modelId を含める必要があります。 | 

ガードレールの詳細については、「[Amazon Bedrock ガードレールを使用して有害なコンテンツを検出してフィルタリングする](guardrails.md)」を参照してください。

ノードタイプの詳細については、「[フローのノードタイプ](flows-nodes.md)」を参照してください。

# Amazon Bedrock でフローをテストする
<a name="flows-test"></a>

フローを作成すると、*作業中のドラフト*が表示されます。作業中のドラフトは、繰り返し構築してテストできるフローのバージョンです。フローを変更するたびに、作業中のドラフトが更新されます。

フローをテストすると、Amazon Bedrock は最初に以下を検証し、検証に失敗した場合は例外をスローします。
+ すべてのフローノード間の接続。
+ 1 つ以上のフロー出力ノードが設定されていること。
+ 入力変数タイプと出力変数タイプが必要に応じて一致していること。
+ 条件式が有効で、デフォルトの結果が提供されていること。

検証が失敗した場合、フローのパフォーマンスをテストして検証する前にエラーを修正する必要があります。フローをテストするための手順を以下に示します。希望する方法のタブを選択し、手順に従ってください。

------
#### [ Console ]

**フローをテストするには**

1. **[フロービルダー]** を開いていない場合は、以下を実行します。

   1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

   1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock Flows]** セクションで、テストするフローを選択します。

   1. **[フロービルダーで編集]** を選択します。

1. **フロービルダーページ**の右側のペインで、フローを呼び出す入力を入力します。入力データ型が、フロー入力ノード用に設定した出力データ型と一致することを確認します。

1. **[Run]** (実行) を選択します。

1. フロー設定の中で、エラーをトリガーするノードまたは接続は赤で強調表示され、警告をトリガーするノードまたは接続は黄色で強調表示されます。エラーメッセージと警告を読み、特定された問題を修正し、フローを保存して、テストを再度実行します。
**注記**  
フローをテストするときには、変更内容が適用されるように、フローを保存する必要があります。

1. (オプション) 各ノードの入力、出力、実行時間を表示するには、レスポンスで **[トレースを表示]** を選択します。詳細については、「[Amazon Bedrock の証跡を表示してフローの各ステップを追跡するフローの各ステップを証跡を表示して追跡する](flows-trace.md)」を参照してください。ビジュアルビルダーに戻るには、**[トレースを非表示]** を選択するか、折りたたみアイコンを選択します。

1. フローのパフォーマンスに満足したら、**[保存して終了]** を選択します。

1. 引き続きフローの構築を繰り返すことができます。満足し、本番環境にデプロイする準備ができたら、フローのバージョンとエイリアスを作成してそのバージョンを指します。詳細については、「[バージョンとエイリアスを使用してフローをアプリケーションにデプロイする](flows-deploy.md)」を参照してください。

------
#### [ API ]

フローをテストするには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) リクエストを送信します。フローの ARN または ID を `flowIdentifier` フィールドに含め、使用するエイリアスの ARN または ID を `flowAliasIdentifier` フィールドに含めます。

各ノードの入力と出力を表示するには、`enableTrace` フィールドを `TRUE` に設定します。詳細については、「[Amazon Bedrock の証跡を表示してフローの各ステップを追跡するフローの各ステップを証跡を表示して追跡する](flows-trace.md)」を参照してください。

リクエスト本文はフローの入力を指定し、形式は以下のとおりです。

```
{
   "inputs": [ 
      { 
         "content": { 
            "document": "JSON-formatted string"
         },
         "nodeName": "string",
         "nodeOutputName": "string"
      }
   ],
   "enableTrace": TRUE | FALSE
}
```

`document` フィールドで入力を指定し、`nodeName` フィールドで入力の名前を指定して、`nodeOutputName` フィールドで入力の名前を指定します。

レスポンスはストリームで返されます。返される各イベントには、`document` フィールドのノードからの出力、`nodeName` フィールドで処理されたノード、および `nodeType` フィールド内のノードのタイプが含まれます。これらのイベントの形式は以下のとおりです。

```
{
    "flowOutputEvent": { 
        "content": { 
            "document": "JSON-formatted string"
        },
        "nodeName": "string",
        "nodeType": "string"
    }
}
```

フローが終了すると、`completionReason` を含む `flowCompletionEvent` フィールドも返されます。エラーがある場合、対応するエラーフィールドが返されます。

------

# Amazon Bedrock の証跡を表示してフローの各ステップを追跡する
<a name="flows-trace"></a>

フローを呼び出す際、*証跡*を表示して各ノードへの入力と出力を確認できます。証跡は、入力から最終的に返されるレスポンスまでのパスを追跡するのに役立ちます。証跡を使用すると、発生したエラーのトラブルシューティング、予期しない結果やパフォーマンスのボトルネックにつながるステップの特定、フローを改善する方法の検討を行うことができます。

証跡を表示するには、次の手順を実行します。
+ 「[Amazon Bedrock でフローをテストする](flows-test.md)」の**[コンソール]** タブの手順に従って、コンソールで、フロー呼び出しからのレスポンスで **[トレースを表示]** を選択します。
+ API で、[InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) リクエストの `enableTrace` フィールドを `true` に設定します。レスポンスの各 `flowOutputEvent` は、`flowTraceEvent` と共に返されます。

各証跡イベントには、入力を受信したか出力を生成したノードの名前と、入力または出力が処理された日時が含まれます。証跡イベントのタイプの詳細を確認するには、次のタブを選択してください。

------
#### [ FlowTraceConditionNodeResultEvent ]

このタイプの証跡は、条件ノードで満たされる条件を識別し、呼び出し中にアクティブ化されたフローの分岐を識別するのに役立ちます。次の JSON オブジェクトは、条件ノードの結果について [FlowTraceEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowTraceEvent.html) がどのように表示されるかを説明しています。

```
{
    "trace": {
        "conditionNodeOutputTrace": {
            "nodeName": "string",
            "satisfiedConditions": [
                {
                    "conditionName": "string"
                },
                ...
            ],
            "timestamp": timestamp
        }
    }
}
```

------
#### [ FlowTraceNodeInputEvent ]

このタイプの証跡は、ノードに送信された入力を表示します。イベントがイテレーターノードの下流で、コレクターノードの上流にある場合、`iterationIndex` フィールドは、入力元の配列内の項目のインデックスを示します。次の JSON オブジェクトは、ノードへの入力に対する [FlowTraceEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowTraceEvent.html) がどのように表示されるかを説明しています。

```
{
    "trace": {
        "nodeInputTrace": {
            "fields": [
                {
                    "content": {
                        "document": JSON object
                    },
                    "nodeInputName": "string"
                },
                ...
            ],
            "nodeName": "string",
            "timestamp": timestamp,
            "iterationIndex": int
        }
    }
}
```

------
#### [ FlowTraceNodeOutputEvent ]

このタイプの証跡は、ノードが生成した出力を表示します。イベントがイテレーターノードの下流で、コレクターノードの上流にある場合、`iterationIndex` フィールドは、出力元の配列内の項目のインデックスを示します。次の JSON オブジェクトは、ノードからの出力に対する [FlowTraceEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowTraceEvent.html) がどのように表示されるかを説明しています。

```
{
    "trace": {
        "nodeOutputTrace": {
            "fields": [
                {
                    "content": {
                        "document": JSON object
                    },
                    "nodeOutputName": "string"
                },
                ...
            ],
            "nodeName": "string",
            "timestamp": timestamp,
            "iterationIndex": int
        }
    }
}
```

------

# フロー実行を使用して Amazon Bedrock フローを非同期で実行する
<a name="flows-create-async"></a>

フロー実行では、Amazon Bedrock フローを非同期で実行できます。これにより、フローの実行時間が長くなり、アプリケーションが他のタスクを実行できるように制御することも可能になります。

Amazon Bedrock コンソールまたは [InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) オペレーションを使用してフローを実行すると、フローは終了するまで、または 1 時間でタイムアウトするまで (いずれか早い方) 実行されます。フロー実行を実行すると、フローの実行時間がはるかに長くなります。個々のノードは最大 5 分、フロー全体は最大 24 時間実行できます。

**注記**  
フロー実行は Amazon Bedrock のプレビューリリースで行われるため、変更される可能性があります。

## フロー実行を実行するために必要なアクセス許可
<a name="flows-create-async-permissions"></a>
+ Amazon Bedrock Flows サービスロールに、必要なアクセス許可がすべて付与されていることを確認します。詳細については、「[Amazon Bedrock で Amazon Bedrock Flows のサービスロールを作成する](flows-permissions.md)」を参照してください。
+ (オプション) カスタマーマネージド AWS KMS キーを使用してフロー実行データを暗号化します。詳細については、「[Amazon Bedrock Flows リソースの暗号化](encryption-flows.md)」を参照してください。

## フロー実行を作成および管理する
<a name="flows-create-async-how-to"></a>

フロー実行は、コンソールで、または [StartFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StartFlowExecution.html) オペレーションを使用して作成できます。

------
#### [ Console ]

1. 「[Amazon Bedrock でフローを作成および設計する](flows-create.md)」の手順に従ってフローを作成します。

1. 「[Amazon Bedrock でフローのエイリアスを作成する](flows-alias-create.md)」の手順に従って、フローのエイリアスを作成します。

1. **[フロービルダー]** を開いていない場合は、以下を実行します。

   1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

   1. 左側のナビゲーションペインから **[Amazon Bedrock フロー]** を選択し、フローを選択します。

1. **[実行]** タブを選択し、**[実行を作成]** を選択します。

1. **[実行を作成]** ダイアログで、以下を入力します。

   1. **[名前]** にフロー実行の名前を入力します。

   1. **[エイリアスを選択]** で、使用するフローのエイリアスを選択します。

   1. **[プロンプト入力]** に、フローを開始するプロンプトを入力します。

   1. **[作成]** を選択してフロー実行を作成し、その実行を開始します。

1. フローの詳細ページで、**[実行]** タブを選択し、**[実行ステータス]** のフロー実行のステータスを書き留めます。

1. (オプション) 実行を選択してフローを開き、実行の概要を表示します。

   **[実行出力]** に、フローからの出力が表示されます。

1. (オプション) フロー実行を停止するには、実行を選択し、**[停止]** を選択します。

------
#### [ API ]

**フロー実行を開始する**  
フロー実行を実行するには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [StartFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StartFlowExecution.html) リクエストを送信します。リクエストで、実行するフローのフロー ID とフローエイリアス ID を指定します。以下を指定することもできます。
+ **入力** – フローの実行を開始する[入力](flows-nodes.md#flows-nodes-input)ノードを含む配列。`content` フィールドで、プロンプトフロー入力ノードに送信する入力を指定します。
+ **名前** – フロー実行の名前。

```
{
    "inputs": [{
        "nodeName": "FlowInputNode",
        "nodeOutputName": "document",
        "content": {
            "document": "Test"
        }
    }],
    "name": "MyExecution"
}
```

レスポンスは、フロー実行の Amazon リソースネーム (ARN) です。フローの実行が終了したときや条件ノードが条件を評価するときなどに、`executionArn` を使用してフローの現在の状態をポーリングできます。

```
{
      "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution"
}
```

**フロー実行の進行状況を追跡する**  
[GetFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetFlowExecution.html) オペレーションを使用して、実行 ARN で識別したフローの現在のステータスを取得します。フローステータスは、`Running`、`Succeeded`、`Failed`、`TimedOut`、または `Aborted` のいずれかです。

```
{
      "endedAt": null,
      "errors": null,
      "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution",
      "flowAliasIdentifier": "TSTALIASID",
      "flowIdentifier": "FLOWID",
      "flowVersion": "DRAFT",
      "startedAt": "2025-03-20T23:32:28.899221162Z",
      "status": "Running"
}
```

エラー (タイムアウトする Lambda ノードなど) は、次の例のように `errors` 配列で返されます。

```
"errors": [{
    "nodeName": "LambdaNode1",
    "errorType": "ExecutionTimedOut",
    "message": "Call to lambda function timed out"
}],
```

**フロー実行の結果を取得する**  
Amazon Bedrock は、フローの出力をフローの[出力](flows-nodes.md#flows-nodes-output)ノードに書き込みます。フローが完了時、またはフローの実行中に (ユースケースに応じて)、出力を取得できます。

最初にフローを完了させる場合は、`GetFlowExecution` を呼び出し、レスポンスの `status` フィールドの値が `Succeeded` であることを確認します。

フロー実行から出力イベントのリストを取得するには、[ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html) を呼び出します。レスポンスで、`flowExecutionEvents` の `flowOutputEvent` オブジェクトを確認します。例えば、`content` フィールドでフローの出力を取得できます。

```
{
      "flowOutputEvent": {
        "content": {
          "document": "The model response."
        },
        "nodeName": "FlowOutputNode"
      }
}
```

`eventType` クエリパラメータを `Flow` に設定することで、`ListFlowExecutions` からの出力を入力ノードと出力ノードのみに制限できます。

**イベントの表示**  
フロー実行のデバッグに役立つように、[ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html) オペレーションを使用して、フローの実行中にノードが生成するイベントを表示できます。`eventType` クエリパラメータを `Node` に設定すると、次の例のようなレスポンスのすべてのノード (中間ノードを含む) の入力と出力が表示されます。

```
{
    "flowExecutionEvents": [{
            "nodeOutputEvent": {
                "fields": [{
                    "content": {
                        "document": "History book"
                    },
                    "name": "document"
                }],
                "nodeName": "FlowInputNode",
                "timestamp": "2025-05-05T18:38:56.637867516Z"
            }
        },
        {
            "nodeInputEvent": {
                "fields": [{
                    "content": {
                        "document": "History book"
                    },
                    "name": "book"
                }],
                "nodeName": "Prompt_1",
                "timestamp": "2025-05-05T18:38:57.434600163Z"
            }
        },
        {
            "nodeOutputEvent": {
                "fields": [{
                    "content": {
                        "document": "Here's a summary of the history book."
                    },
                    "name": "modelCompletion"
                }],
                "nodeName": "Prompt_1",
                "timestamp": "2025-05-05T18:39:06.034157077Z"
            }
        },
        {
            "nodeInputEvent": {
                "fields": [{
                    "content": {
                        "document": "Here's a summary of the history book."
                    },
                    "name": "document"
                }],
                "nodeName": "FlowOutputNode",
                "timestamp": "2025-05-05T18:39:06.453128251Z"
            }
        }
    ]
}
```

**フロー実行のスナップショットを取得する**  
Amazon Bedrock は、フロー実行が開始されると、フロー定義とメタデータのスナップショットを自動的に作成します。これは、フローが非同期で実行中に更新できるため便利です。このスナップショットを取得するには、[GetExecutionFlowSnapshot](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetExecutionFlowSnapshot.html) オペレーションを呼び出します。レスポンスには、以下のフローフィールドが含まれます。
+ **customerEncryptionKeyArn** – フローを暗号化する AWS KMS キーの ARN。
+ **定義** – フローの[定義](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowDefinition.html)。
+ **executionRoleArn** – フロー実行で使用される IAM サービスロールの ARN。
+ **flowAliasIdentifier** – フローのエイリアス ID。
+ **flowIdentifier** – フローの ID。
+ **flowVersion** – フローのバージョン。

```
{
      "customerEncryptionKeyArn": null,
      "definition": "{flow-definition}",
      "executionRoleArn": "arn:aws:iam::111122223333:role/name",
      "flowAliasIdentifier": "TSTALIASID",
      "flowIdentifier": "FLOWID",
      "flowVersion": "DRAFT"
}
```

**フロー実行を一覧表示する**  
[ListFlowExecutions](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutions.html) オペレーションを呼び出すことで、フロー実行のリストを取得できます。レスポンスには、フロー AWS リージョン またはフローエイリアスの現在の の各フロー実行に関する情報を含む`flowExecutionSummaries`配列が含まれます。各要素には、実行 ARN、開始時刻、フローの現在のステータスなどの情報が含まれます。

```
{
    "flowExecutionSummaries": [{
        "createdAt": "2025-03-11T23:21:02.875598966Z",
        "endedAt": null,
        "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution",
        "flowAliasIdentifier": "TSTALIASID",
        "flowIdentifier": "FLOWID",
        "flowVersion": "DRAFT",
        "status": "Running"
    }]
}
```

**実行中のフロー実行を停止する**  
実行中のフロー実行を停止する必要がある場合は、[StopFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StopFlowExecution.html) オペレーションを呼び出し、停止する実行のフロー ID、フローエイリアス ID、およびフロー実行 ID を渡します。

------

## フロー実行ステータス
<a name="flows-async-statuses"></a>

フロー実行には、次のいずれかのステータスがあります。
+ **実行中** – フロー実行が進行中です。
+ **成功** – フロー実行が正常に完了しました。
+ **失敗** – エラーのため、フロー実行が失敗しました。
+ **タイムアウト** – フロー実行が最大ランタイムの 24 時間を超えました。
+ **中止** – [StopFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StopFlowExecution.html) オペレーションを使用してフロー実行が手動で停止されました。

実行されなくなったフロー実行は、90 日後に自動的に削除されます。

## フロー実行のベストプラクティス
<a name="flows-async-best-practices"></a>

フロー実行を使用するときは、以下を考慮してください。
+ フローが終了状態 (`Running` 以外) になるまで、[GetFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetFlowExecution.html) を使用してフロー実行のステータスを定期的にポーリングします。
+ フロー実行が終了状態になったら、[ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html) を使用してフローの結果を取得します。例えば、これらの結果を使用して、フローの周囲にロジックを構築できます。
+ [GetExecutionFlowSnapshot](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetExecutionFlowSnapshot.html) を使用してフロー実行のスナップショットを取得して、実行で問題が発生した場合のデバッグに役立てます。

# バージョンとエイリアスを使用してフローをアプリケーションにデプロイする
<a name="flows-deploy"></a>

フローを初めて作成する際に、作業中のドラフトバージョン (`DRAFT`) と、作業中のドラフトバージョンをポイントするテストエイリアス (`TSTALIASID`) が作成されます。フローを変更すると、変更内容は作業中のドラフトに適用され、それがフローの最新バージョンになります。フローの動作が満足いくものになるまで、作業中のドラフトで反復的に作業を行うことができます。その後、フローの*バージョン*を作成して、デプロイ用のフローを設定できます。

*バージョン*は、それが作成されたときに存在していたリソースを保存したスナップショットです。必要に応じて、作業中のドラフトの変更を継続し、フローのバージョンを作成できます。Amazon Bedrock は、バージョンを作成して、バージョン名として 1 から始まる番号を順に付けます。バージョンは、作成時のフローのスナップショットとして機能するため、変更はできません。本番環境にデプロイしたフローを更新するには、作業中のドラフトから新しいバージョンを作成し、そのバージョンを指すエイリアスを呼び出します。

フローをデプロイするには、フローのバージョンを指す*エイリアス*を作成する必要があります。次に、そのエイリアスに `InvokeFlow` リクエストを行います。エイリアスを使用すると、バージョンを追跡する必要なく、フローの複数のバージョンを効率的に切り替えることができます。例えば、すぐに元に戻す必要がある変更の場合は、以前のバージョンのフローをポイントするようにエイリアスを変更できます。

以降のトピックでは、フローのバージョンとエイリアスを作成する方法について説明します。

**Topics**
+ [Amazon Bedrock でフローのバージョンを作成する](flows-version-create.md)
+ [Amazon Bedrock でフローのバージョンに関する情報を表示する](flows-version-view.md)
+ [Amazon Bedrock でフローのバージョンを削除する](flows-version-delete.md)
+ [Amazon Bedrock でフローのエイリアスを作成する](flows-alias-create.md)
+ [Amazon Bedrock でフローのエイリアスに関する情報を表示する](flows-alias-view.md)
+ [Amazon Bedrock でフローのエイリアスを変更する](flows-alias-modify.md)
+ [Amazon Bedrock でフローのエイリアスを削除する](flows-alias-delete.md)

# Amazon Bedrock でフローのバージョンを作成する
<a name="flows-version-create"></a>

フローの設定に問題がなければ、エイリアスで参照できるフローのイミュータブルバージョンを作成します。フローのバージョンを作成する方法については、使用する方法に対応するタブをクリックして、手順に従ってください。

------
#### [ Console ]

**Amazon Bedrock フローのバージョンを作成するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションでフローを選択します。

1. **[バージョン]** セクションで **[バージョンを発行]** を選択します。

1. バージョンが発行されると、成功バナーが上部に表示されます。

------
#### [ API ]

フローのバージョンを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、フローの ARN または ID を `flowIdentifier` として指定し、[CreateFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlowVersion.html) リクエストを送信します。

レスポンス応答は、バージョンの ID と ARN を返します。バージョンは 1 から段階的に作成されます。

------

# Amazon Bedrock でフローのバージョンに関する情報を表示する
<a name="flows-version-view"></a>

フローのバージョンに関する情報を表示する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**フローのバージョンに関する情報を表示するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/)を開き、アカウントにサインインします。Amazon Bedrock に移動します。

1. 左側のナビゲーションペインで **[フロー]** を選択します。その後、**[フロー]** セクションで、表示するフローを選択します。

1. **[バージョン]** セクションで、表示するバージョンを選択します。

1. フローのバージョンにアタッチされたノードと設定の詳細を表示するには、ノードを選択して、**[フロービルダー]** ペインで詳細を表示します。フローを変更するには、作業中のドラフトを使用して新しいバージョンを作成します。

------
#### [ API ]

フローのバージョンに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、フローの ARN または ID を `flowIdentifier` として指定し、[GetFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlowVersion.html) リクエストを送信します。`flowVersion` フィールドで、バージョン番号を指定します。

フローのすべてのバージョンの情報を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用し、フローの ARN または ID を `flowIdentifier` として指定して [ListFlowVersions](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlowVersions.html) リクエストを送信します。以下のオプションパラメータを指定できます。


****  

| フィールド | 簡単な説明 | 
| --- | --- | 
| maxResults | レスポンスとして返す結果の最大数。 | 
| nextToken | maxResults フィールドで指定した数よりも結果の件数が多い場合は、レスポンスで nextToken 値が返されます。結果の次のバッチを表示するには、別のリクエストで nextToken 値を送信します。 | 

------

# Amazon Bedrock でフローのバージョンを削除する
<a name="flows-version-delete"></a>

フローのバージョンを削除する方法については、使用する方法に対応するタブをクリックして、手順に従ってください。

------
#### [ Console ]

**フローのバージョンを削除するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/)を開き、アカウントにサインインします。Amazon Bedrock に移動します。

1. 左側のナビゲーションペインで **[フロー]** を選択します。次に、**[フロー]** セクションで、フローを選択します。

1. **[削除]** を選択します。

1. 削除の結果について警告するダイアログボックスが表示されます。バージョンの削除を確定するには、入力フィールドに **delete** と入力し、**[削除]** を選択します。

1. バージョンが削除されていることを知らせるバナーが表示されます。削除が完了すると、成功を示すバナーが表示されます。

------
#### [ API ]

フローのバージョンを削除するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [DeleteFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlowVersion.html) リクエストを送信します。`flowIdentifier` フィールドでフローの ARN または ID を指定し、`flowVersion` フィールドで削除するバージョンの ARN または ID を指定します。

------

# Amazon Bedrock でフローのエイリアスを作成する
<a name="flows-alias-create"></a>

フローを呼び出すには、まずフローのバージョンを指すエイリアスを作成する必要があります。エイリアスを作成する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**Amazon Bedrock Flows のエイリアスを作成するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[フロー]** セクションでフローを選択します。

1. **[エイリアス]** タブで **[エイリアスの作成]** を選択します。

1. エイリアスの一意の名前を入力し、任意で説明も入力します。

1. 以下のオプションのいずれかを選択してください:
   + 新しいバージョンを作成するには、**[新しいバージョンを作成してこのエイリアスに関連付ける]** を選択します。
   + 既存のバージョンを使用するには、**[既存のバージョンを使用してこのエイリアスを関連付ける]** を選択します。ドロップダウンメニューから、エイリアスを関連付けるバージョンを選択します。

1. **[エイリアスを作成]** を選択します。上部に成功を示すバナーが表示されます。

------
#### [ API ]

フローのバージョンを指すエイリアスを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlowAlias.html) リクエストを送信します。

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| flowIdentifier | エイリアスを作成するフローの ARN または ID | 
| 名前 | エイリアスの名前。 | 
| routingConfiguration | flowVersion フィールドでエイリアスをマッピングするバージョンを指定します。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| description | エイリアスの説明を入力します。 | 
| clientToken | リクエストの重複を防ぎます。 | 

------

エイリアスを作成すると、アプリケーションからフローを呼び出す際に指定できる識別子と Amazon リソースネーム (ARN) を持つリソースが生成されます。フローを呼び出す方法については、「[Amazon Bedrock でフローをテストする](flows-test.md)」を参照してください。

# Amazon Bedrock でフローのエイリアスに関する情報を表示する
<a name="flows-alias-view"></a>

フローのエイリアスに関する情報を表示する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**エイリアスの詳細を表示するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/)を開き、アカウントにサインインします。Amazon Bedrock に移動します。

1. 左側のナビゲーションペインで **[フロー]** を選択します。次に、**[フロー]** セクションで、フローを選択します。

1. **[エイリアス]** セクションで、表示するエイリアスを選択します。

1. エイリアスの名前と説明、およびエイリアスに関連付けられているタグを表示できます。

------
#### [ API ]

フローのエイリアスに関する情報を取得するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、フローの ARN または ID を `flowIdentifier` として指定し、[GetFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlowAlias.html) リクエストを送信します。`aliasIdentifier` フィールドで、エイリアスの ID または ARN を指定します。

フローのすべてのエイリアスの情報を一覧表示するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用し、フローの ARN または ID を `flowIdentifier` として指定して [ListFlowAliass](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlowAliass.html) リクエストを送信します。以下のオプションパラメータを指定できます。


****  

| フィールド | 簡単な説明 | 
| --- | --- | 
| maxResults | レスポンスとして返す結果の最大数。 | 
| nextToken | maxResults フィールドで指定した数よりも結果の件数が多い場合は、レスポンスで nextToken 値が返されます。結果の次のバッチを表示するには、別のリクエストで nextToken 値を送信します。 | 

------

# Amazon Bedrock でフローのエイリアスを変更する
<a name="flows-alias-modify"></a>

フローのエイリアスを変更する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**エイリアスを変更するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/)を開き、アカウントにサインインします。Amazon Bedrock に移動します。

1. 左側のナビゲーションペインで **[フロー]** を選択します。次に、**[フロー]** セクションで、フローを選択します。

1. **[エイリアス]** セクションで、編集するエイリアスの横にあるオプションボタンを選択します。

1. エイリアスの名前と説明を編集できます。また、次のいずれかのアクションも実行できます。
   + 新しいバージョンを作成し、このエイリアスをそのバージョンに関連付けるには、**[新しいバージョンを作成してこのエイリアスに関連付ける]** を選択します。
   + このエイリアスを別の既存のバージョンに関連付けるには、**[既存のバージョンを使用してこのエイリアスを関連付ける]** を選択します。

1. **[保存]** を選択します。

------
#### [ API ]

エイリアスを更新するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[UpdateFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateFlowAlias.html) リクエストを送信します。維持するフィールドと変更するフィールドの両方をリクエストに含めます。

------

# Amazon Bedrock でフローのエイリアスを削除する
<a name="flows-alias-delete"></a>

フローのエイリアスを削除する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**エイリアスを削除するには**

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/)を開き、アカウントにサインインします。Amazon Bedrock に移動します。

1. 左側のナビゲーションペインで **[フロー]** を選択します。次に、**[フロー]** セクションで、フローを選択します。

1. 削除するエイリアスを選択するには、**[エイリアス]** セクションで、削除するエイリアスの横にあるオプションボタンを選択します。

1. **[削除]** を選択します。

1. 削除の結果について警告するダイアログボックスが表示されます。エイリアスの削除を確定するには、入力フィールドに **delete** と入力し、**[削除]** を選択します。

1. エイリアスが削除中であることを知らせるバナーが表示されます。削除が完了すると、成功を示すバナーが表示されます。

------
#### [ API ]

フローのエイリアスを削除するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[DeleteFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlowAlias.html) リクエストを送信します。`flowIdentifier` フィールドでフローの ARN または ID を指定し、`aliasIdentifier` フィールドで削除するエイリアスの ARN または ID を指定します。

------

# 別の AWS アカウントの Amazon Bedrock フローから AWS Lambda 関数を呼び出す
<a name="flow-cross-account-lambda"></a>

Amazon Bedrock フローは、フローとは異なる AWS アカウントにある AWS Lambda 関数を呼び出すことができます。次の手順を使用して、Lambda 関数 (*アカウント A*) とフロー (*アカウント B*) を設定します。

**別の AWS アカウントで Lambda 関数を呼び出すようにフローを設定するには**

1. アカウント A (Lambda 関数) で、アカウント B のフロー実行ロールをプリンシパルとして使用して、リソースベースのポリシーを Lambda 関数に追加します。詳細については、*AWS Lambda* ドキュメントの「[Lambda 関数へのアクセス権を他のアカウントに付与する](https://docs.aws.amazon.com/lambda/latest/dg/permissions-function-cross-account.html)」を参照してください。

1. アカウント B (Amazon Bedrock フロー) で、使用している Lambda 関数 ARN のフロー実行ロールに、[invoke](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) オペレーションのアクセス許可を追加します。詳細については、*AWS Identity and Access Management* ドキュメントの「[ロールに対するアクセス許可を更新する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)」を参照してください。

# Amazon Bedrock フローと会話する
<a name="flows-multi-turn-invocation"></a>

**注記**  
Amazon Bedrock フローのマルチターン会話は Amazon Bedrock のプレビューリリースに含まれており、変更される可能性があります。

Amazon Bedrock フローのマルチターン会話では、自然な対話のように、ユーザーとフロー間の動的な相互の会話が可能です。エージェント ノードが説明や追加のコンテキストを必要とする場合、フローの実行をインテリジェントに一時停止し、ユーザーに特定の情報の入力を求めることができます。これにより、ノードはユーザーの応答に基づいて動作を適応させることができるため、よりインタラクティブでコンテキスト対応のエクスペリエンスを実現できます。例えば、最初のユーザークエリがあいまいであったり不完全であったりすると、ノードは必要な詳細を収集するためにフォローアップの質問をすることができます。ユーザーが要求された情報を提供すると、フローは拡充された入力を使用してシームレスに実行を再開し、より正確で関連性の高い結果が保証されます。この機能は、1 回のやり取りだけではユーザーのニーズを完全に理解し対応することが難しい複雑な状況において、特に価値があります。

**Topics**
+ [フローでマルチターン会話を処理する方法](#flows-multi-turn-invocation-how)
+ [フローの例の作成と実行](#flows-multi-turn-invocation-example-flow)

## フローでマルチターン会話を処理する方法
<a name="flows-multi-turn-invocation-how"></a>

フローでマルチターン会話を使用するには、Amazon Bedrock エージェントに接続された[エージェントノード](flows-nodes.md#flows-nodes-agent)が必要です。フローを実行すると、エージェントが続行する前にユーザーからのさらなる情報を必要とする場合、マルチターン会話が発生します。このセクションでは、次の手順でエージェントを使用するフローについて説明します。

```
You are a playlist creator for a radio station. 
When asked to create a playlist, ask for the number of songs,
the genre of music, and a theme for the playlist.
```

エージェントの作成については、「[AI エージェントを使用してアプリケーションのタスクを自動化する](agents.md)」を参照してください。

### ステップ 1: フローを開始する
<a name="flows-multi-turn-invocation-start-flow"></a>

フローを開始するには、[InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) オペレーションを呼び出します。フローに送信する初期コンテンツを含めます。次の例では、`document` フィールドに*プレイリストを作成する*ためのリクエストが含まれています。各会話には、フロー内の会話を特定する一意の ID (*実行 ID*) があります。実行 ID を取得するには、`InvokeFlow` への最初の呼び出しで `executionID` フィールドを送信しないでください。`InvokeFlow` からの応答には実行 ID が含まれています。コードでは、識別子を使用して複数の会話を追跡し、`InvokeFlow` オペレーションへの以降の呼び出しで会話を特定します。

`InvokeFlow` へのリクエストに関する JSON の例を次に示します。

```
{
  "flowIdentifier": "XXXXXXXXXX",
  "flowAliasIdentifier": "YYYYYYYYYY",
  "inputs": [
    {
      "content": {
        "document": "Create a playlist."
      },
      "nodeName": "FlowInputNode",
      "nodeOutputName": "document"
    }
  ]
}
```

### ステップ 2: エージェントリクエストを取得する
<a name="flows-multi-turn-invocation-retrieve-requests"></a>

フロー内のエージェントノードがユーザーからのさらなる情報が必要であると判断した場合、`InvokeFlow` からの応答ストリーム (`responseStream`) には `FlowMultiTurnInputRequestEvent` イベントオブジェクトが含まれます。イベントには、`content` (`FlowMultiTurnInputContent`) フィールドに要求された情報が含まれています。次の例において、`document` フィールドのリクエストは、プレイリストの曲数、音楽ジャンル、テーマに関する情報に関するものです。コードでは、その情報をユーザーから取得する必要があります。

`FlowMultiTurnInputRequestEvent` JSON オブジェクトの例を次に示します。

```
{
    "nodeName": "AgentsNode_1",
    "nodeType": "AgentNode",
    "content": {
        "document": "Certainly! I'd be happy to create a playlist for you. To make sure it's tailored to your preferences, could you please provide me with the following information:
        1. How many songs would you like in the playlist?
        2. What genre of music do you prefer? 
        3. Is there a specific theme or mood you'd like for the playlist? Once you provide these details, I'll be able to create a customized playlist just for you."
    }
}
```

フローは追加の入力が受信されるまで続行できないため、フローは `FlowCompletionEvent` イベントも出力します。フローは常に `FlowMultiTurnInputRequestEvent` の前に `FlowCompletionEvent` を出力します。`FlowCompletionEvent` イベントの `completionReason` の値が `INPUT_REQUIRED` の場合、フローを続行するには詳細が必要です。

`FlowCompletionEvent` JSON オブジェクトの例を次に示します。

```
{
    "completionReason": "INPUT_REQUIRED"
}
```

### ステップ 3: ユーザー応答をフローに送信する
<a name="flows-multi-turn-invocation-continue"></a>

`InvokeFlow` オペレーションを再度呼び出して、ユーザー応答をフローに戻します。会話の `executionId` を必ず含めてください。

`InvokeFlow` へのリクエストに関する JSON の例を次に示します。`document` フィールドには、ユーザーからの応答が含まれています。

```
{
  "flowIdentifier": "AUS7BMHXBE",
  "flowAliasIdentifier": "4KUDB8VBEF",
  "executionId": "b6450554-f8cc-4934-bf46-f66ed89b60a0",
  "inputs": [
    {
      "content": {
        "document": "1. 5 songs 2. Welsh rock music 3. Castles"
      },
      "nodeName": "AgentsNode_1",
      "nodeInputName": "agentInputText"
    }
  ]
}
```

フローは、詳細が必要な場合、さらに `FlowMultiTurnInputRequestEvent` イベントを作成します。

### ステップ 4: フローを終了する
<a name="flows-multi-turn-invocation-end"></a>

詳細が不要となった時点で、フローは最終的な応答を含む `FlowOutputEvent` イベントを出力します。

`FlowOutputEvent` JSON オブジェクトの例を次に示します。

```
{
    "nodeName": "FlowOutputNode",
    "content": {
        "document": "Great news! I've created a 5-song Welsh rock playlist centered around the theme of castles. 
        Here's the playlist I've put together for you: Playlist Name: Welsh Rock Castle Anthems 
        Description: A 5-song Welsh rock playlist featuring songs about castles 
        Songs: 
        1. Castell y Bere - Super Furry Animals 
        2. The Castle - Manic Street Preachers 
        3. Caerdydd (Cardiff Castle) - Stereophonics 
        4. Castell Coch - Catatonia 
        5. Chepstow Castle - Feeder 
        This playlist combines Welsh rock bands with songs that reference castles or specific Welsh castles. 
        Enjoy your castle-themed Welsh rock music experience!"
     }
}
```

フローは `FlowCompletionEvent` イベントも出力します。`completionReason`の値は`SUCCESS`です。

`FlowCompletionEvent` JSON オブジェクトの例を次に示します。

```
{
    "completionReason": "SUCCESS"
}
```

次のシーケンス図は、マルチターンフローのステップを示しています。

![\[マルチターン会話のフローステップ。\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/flows/flows-multi-turn-steps.png)


## フローの例の作成と実行
<a name="flows-multi-turn-invocation-example-flow"></a>

この例では、エージェントを使用してラジオステーションのプレイリストを作成するフローを作成します。エージェントは明確な質問をして、プレイリストの曲数、音楽ジャンル、テーマを決めるために明確な質問をします。

**フローを作成する方法**

1. 「[エージェントを手動で作成および設定する](agents-create.md)」の手順を実行して、Amazon Bedrock コンソールでエージェントを作成します。
   + ステップ *2.d* では、「**You are a playlist creator for a radio station. When asked to create a playlist, ask for the number of songs, the genre of music, and a theme for the playlist.**」と入力します。
   + ステップ *2.e* では、**[ユーザー入力]** で **[有効]** を選択します。これを行っておくと、エージェントは必要に応じて詳細をリクエストできるようになります。

1. 「[Amazon Bedrock でフローを作成および設計する](flows-create.md)」の手順に実行してフローを作成します。フローに入力ノード、エージェントノード、出力ノードがあることを確認します。

1. エージェントノードをステップ 1 で作成したエージェントにリンクします。フローは次の画像のようになります。  
![\[フローのマルチターン会話\]](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/flows/flows-multi-turn.png)

1. Amazon Bedrock コンソールでフローを実行します。テスト用に、フローがたどるステップを追跡できます。詳細については、「[Amazon Bedrock でフローをテストする](flows-test.md)」を参照してください。

次 Python コードサンプルは、フローの使用方法を示しています。

コードを実行するには、次を指定します。
+ `region_name` – フローを実行している AWS リージョン。
+ `FLOW_ID` – フローの ID。
+ `FLOW_ALIAS_ID` – フローのエイリアス ID。

ID の取得方法については、「[Amazon Bedrock でフローに関する情報を表示する](flows-view.md)」を参照してください。コードは、フローに送信する最初のリクエストのプロンプトを表示し、フローの必要に応じて追加の入力を要求します。このコードは、 AWS Lambda 関数を呼び出すリクエストなど、エージェントからの他のリクエストを管理しません。詳細については、「[Amazon Bedrock エージェントの仕組み](agents-how.md)」を参照してください。実行中、コードは、入力からフローが返す応答までのパスを追跡するために使用できる `FlowTraceEvent` オブジェクトを生成します。詳細については、「[Amazon Bedrock の証跡を表示してフローの各ステップを追跡するフローの各ステップを証跡を表示して追跡する](flows-trace.md)」を参照してください。

```
"""
Runs an Amazon Bedrock flow and handles muli-turn interaction for a single conversation.

"""
import logging
import boto3
import botocore



import botocore.exceptions

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


def invoke_flow(client, flow_id, flow_alias_id, input_data, execution_id):
    """
    Invoke an Amazon Bedrock flow and handle the response stream.

    Args:
        client: Boto3 client for Amazon Bedrock agent runtime
        flow_id: The ID of the flow to invoke
        flow_alias_id: The alias ID of the flow
        input_data: Input data for the flow
        execution_id: Execution ID for continuing a flow. Use the value None on first run.

    Returns:
        Dict containing flow_complete status, input_required info, and execution_id
    """

    response = None
    request_params = None

    if execution_id is None:
        # Don't pass execution ID for first run.
        request_params = {
            "flowIdentifier": flow_id,
            "flowAliasIdentifier": flow_alias_id,
            "inputs": [input_data],
            "enableTrace": True
        }
    else:
        request_params = {
            "flowIdentifier": flow_id,
            "flowAliasIdentifier": flow_alias_id,
            "executionId": execution_id,
            "inputs": [input_data],
            "enableTrace": True
        }

    response = client.invoke_flow(**request_params)
    if "executionId" not in request_params:
        execution_id = response['executionId']

    input_required = None
    flow_status = ""

    # Process the streaming response
    for event in response['responseStream']:
        # Check if flow is complete.
        if 'flowCompletionEvent' in event:
            flow_status = event['flowCompletionEvent']['completionReason']

        # Check if more input us needed from user.
        elif 'flowMultiTurnInputRequestEvent' in event:
            input_required = event

        # Print the model output.
        elif 'flowOutputEvent' in event:
            print(event['flowOutputEvent']['content']['document'])

        elif 'flowTraceEvent' in event:
            logger.info("Flow trace:  %s", event['flowTraceEvent'])

    return {
        "flow_status": flow_status,
        "input_required": input_required,
        "execution_id": execution_id
    }


if __name__ == "__main__":

    session = boto3.Session(profile_name='default', region_name='YOUR_FLOW_REGION')
    bedrock_agent_client = session.client('bedrock-agent-runtime')
    
    # Replace these with your actual flow ID and alias ID
    FLOW_ID = 'YOUR_FLOW_ID'
    FLOW_ALIAS_ID = 'YOUR_FLOW_ALIAS_ID'


    flow_execution_id = None
    finished = False

    # Get the intial prompt from the user.
    user_input = input("Enter input: ")

    flow_input_data = {
        "content": {
            "document": user_input
        },
        "nodeName": "FlowInputNode",
        "nodeOutputName": "document"
    }

    logger.info("Starting flow %s", FLOW_ID)

    try:
        while not finished:
            # Invoke the flow until successfully finished.

            result = invoke_flow(
                bedrock_agent_client, FLOW_ID, FLOW_ALIAS_ID, flow_input_data, flow_execution_id)
            status = result['flow_status']
            flow_execution_id = result['execution_id']
            more_input = result['input_required']
            if status == "INPUT_REQUIRED":
                # The flow needs more information from the user.
                logger.info("The flow %s requires more input", FLOW_ID)
                user_input = input(
                    more_input['flowMultiTurnInputRequestEvent']['content']['document'] + ": ")
                flow_input_data = {
                    "content": {
                        "document": user_input
                    },
                    "nodeName": more_input['flowMultiTurnInputRequestEvent']['nodeName'],
                    "nodeInputName": "agentInputText"

                }
            elif status == "SUCCESS":
                # The flow completed successfully.
                finished = True
                logger.info("The flow %s successfully completed.", FLOW_ID)

    except botocore.exceptions.ClientError as e:
        print(f"Client error: {str(e)}")
        logger.error("Client error: %s", {str(e)})

    except Exception as e:
        print(f"An error occurred: {str(e)}")
        logger.error("An error occurred: %s", {str(e)})
        logger.error("Error type: %s", {type(e)})
```

# Amazon Bedrock フローのコードサンプルを実行する
<a name="flows-code-ex"></a>

次のコードサンプルは、次の前提条件を満たしていることを前提としています。

1. Amazon Bedrock アクションへのアクセス許可を持つロールを設定する。設定していない場合は、「[クイックスタート](getting-started.md)」を参照します。

1. AWS API を使用するように認証情報を設定する。設定していない場合は、「[API の使用を開始する](getting-started-api.md)」を参照します。

1. サービスロールを作成して、ユーザーに代わってフロー関連のアクションを実行する。設定していない場合は、「[Amazon Bedrock で Amazon Bedrock Flows のサービスロールを作成する](flows-permissions.md)」を参照します。

フローを作成するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、[CreateFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlow.html) リクエストを送信します。サンプルコードについては、「[Amazon Bedrock フローのコードサンプルを実行する](#flows-code-ex)」を参照してください。

以下のフィールドが必要です。


****  

| フィールド | 基本的な説明 | 
| --- | --- | 
| 名前 | フローの名前。 | 
| executionRoleArn | [フローを作成して管理するためのアクセス許可を持つサービスロールの ARN](flows-permissions.md)。 | 

次のフィールドはオプションです。


****  

| フィールド | ユースケース | 
| --- | --- | 
| 定義 | フローを構成する nodes と connections が含まれます。 | 
| description | フローについて記述する場合に指定します。 | 
| tags | タグをエイリアスに関連付ける場合に指定します。詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。 | 
| customerEncryptionKeyArn | KMS キーを使用してリソースを暗号化する場合に指定します。詳細については、「[Amazon Bedrock Flows リソースの暗号化](encryption-flows.md)」を参照してください。 | 
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「[べき等性の確保](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)」を参照してください。 | 

`definition` フィールドはオプションですが、フローが機能するために必要です。定義なしでフローを作成し、後でフローを更新することもできます。

`nodes` リスト内のノードごとに、`type` フィールドでノードのタイプを指定し、`config` フィールドでノードの対応する設定を指定します。さまざまなタイプのノードの API 構造の詳細については、「[フローのノードタイプ](flows-nodes.md)」を参照してください。

Amazon Bedrock フローのコードサンプルを試すには、任意の方法のタブを選択してステップを実行してください。

------
#### [ Python ]

1. 次のノードについて、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [CreateFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlow.html) リクエストを使用してフローを作成します。
   + 入力ノード。
   + 2 つの変数 (`genre` と `number`) を使用して音楽プレイリストを作成するプロンプトがインラインで定義されているプロンプトノード。
   + モデルの完了を返す出力ノード。

   次のコードスニペットを実行して AWS SDK for Python (Boto3) をロードし、Amazon Bedrock エージェントクライアントを作成して、ノードでフローを作成します (`executionRoleArn` フィールドをフロー用に作成したサービスロールの ARN に置き換えます)。

   ```
   # Import Python SDK and create client
   import boto3
   
   client = boto3.client(service_name='bedrock-agent')
   
   # Replace with the service role that you created. For more information, see https://docs.aws.amazon.com/bedrock/latest/userguide/flows-permissions.html
   FLOWS_SERVICE_ROLE = "arn:aws:iam::123456789012:role/MyFlowsRole"
   
   # Define each node
   
   # The input node validates that the content of the InvokeFlow request is a JSON object.
   input_node = {
       "type": "Input",
       "name": "FlowInput",
       "outputs": [
           {
               "name": "document",
               "type": "Object"
           }
       ]
   }
   
   # This prompt node defines an inline prompt that creates a music playlist using two variables.
   # 1. {{genre}} - The genre of music to create a playlist for
   # 2. {{number}} - The number of songs to include in the playlist
   # It validates that the input is a JSON object that minimally contains the fields "genre" and "number", which it will map to the prompt variables.
   # The output must be named "modelCompletion" and be of the type "String".
   prompt_node = {
       "type": "Prompt",
       "name": "MakePlaylist",
       "configuration": {
           "prompt": {
               "sourceConfiguration": {
                   "inline": {
                       "modelId": "amazon.nova-lite-v1:0",
                       "templateType": "TEXT",
                       "inferenceConfiguration": {
                           "text": {
                               "temperature": 0.8
                           }
                       },
                       "templateConfiguration": { 
                           "text": {
                               "text": "Make me a {{genre}} playlist consisting of the following number of songs: {{number}}."
                           }
                       }
                   }
               }
           }
       },
       "inputs": [
           {
               "name": "genre",
               "type": "String",
               "expression": "$.data.genre"
           },
           {
               "name": "number",
               "type": "Number",
               "expression": "$.data.number"
           }
       ],
       "outputs": [
           {
               "name": "modelCompletion",
               "type": "String"
           }
       ]
   }
   
   # The output node validates that the output from the last node is a string and returns it as is. The name must be "document".
   output_node = {
       "type": "Output",
       "name": "FlowOutput",
       "inputs": [
           {
               "name": "document",
               "type": "String",
               "expression": "$.data"
           }
       ]
   }
   
   # Create connections between the nodes
   connections = []
   
   #   First, create connections between the output of the flow input node and each input of the prompt node
   for input in prompt_node["inputs"]:
       connections.append(
           {
               "name": "_".join([input_node["name"], prompt_node["name"], input["name"]]),
               "source": input_node["name"],
               "target": prompt_node["name"],
               "type": "Data",
               "configuration": {
                   "data": {
                       "sourceOutput": input_node["outputs"][0]["name"],
                       "targetInput": input["name"]
                   }
               }
           }
       )
   
   # Then, create a connection between the output of the prompt node and the input of the flow output node
   connections.append(
       {
           "name": "_".join([prompt_node["name"], output_node["name"]]),
           "source": prompt_node["name"],
           "target": output_node["name"],
           "type": "Data",
           "configuration": {
               "data": {
                   "sourceOutput": prompt_node["outputs"][0]["name"],
                   "targetInput": output_node["inputs"][0]["name"]
               }
           }
       }
   )
   
   # Create the flow from the nodes and connections
   response = client.create_flow(
       name="FlowCreatePlaylist",
       description="A flow that creates a playlist given a genre and number of songs to include in the playlist.",
       executionRoleArn=FLOWS_SERVICE_ROLE,
       definition={
           "nodes": [input_node, prompt_node, output_node],
           "connections": connections
       }
   )
   
   flow_id = response.get("id")
   ```

1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [ListFlows](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlows.html) リクエストを行い、作成したフローを含めて、アカウント内のフローを一覧表示します。

   ```
   client.list_flows()
   ```

1. 次のコードスニペットを実行して [Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)で [GetFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlow.html) リクエストを行い、作成したフローに関する情報を取得します。

   ```
   client.get_flow(flowIdentifier=flow_id)
   ```

1. 作業中のドラフトから最新の変更が適用されるように、またバージョン管理の準備が整うようにフローを準備してください。次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [PrepareFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PrepareFlow.html) リクエストを行います。

   ```
   client.prepare_flow(flowIdentifier=flow_id)
   ```

1. フローに関する作業中のドラフトのバージョン管理を行い、フローの静的スナップショットを作成し、次のアクションを実行してそのスナップショットに関する情報を取得します。

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlowVersion.html) リクエストを行い、バージョンを作成します。

      ```
      response = client.create_flow_version(flowIdentifier=flow_id)
                                      
      flow_version = response.get("version")
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [ListFlowVersions](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlowVersions.html) リクエストを行い、フローのバージョンをすべて一覧表示します。

      ```
      client.list_flow_versions(flowIdentifier=flow_id)
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [GetFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlowVersion.html) リクエストを行い、バージョンに関する情報を取得します。

      ```
      client.get_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
      ```

1. 作成したフローのバージョンを指すエイリアスを作成して、次のアクションでこれに関する情報を取得します。

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [CreateFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateFlowAlias.html) リクエストを行い、エイリアスを作成し、作成したバージョンを指します。

      ```
      response = client.create_flow_alias(
          flowIdentifier=flow_id,
          name="latest",
          description="Alias pointing to the latest version of the flow.",
          routingConfiguration=[
              {
                  "flowVersion": flow_version
              }
          ]
      )
      
      flow_alias_id = response.get("id")
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [ListFlowAliass](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListFlowAliass.html) リクエストを行い、フローのエイリアスをすべて一覧表示します。

      ```
      client.list_flow_aliases(flowIdentifier=flow_id)
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [GetFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetFlowAlias.html) リクエストを行い、作成したエイリアスに関する情報を取得します。

      ```
      client.get_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
      ```

1. 次のコードスニペットを実行して、Amazon Bedrock Agents Runtime クライアントを作成し、フローを呼び出します。このリクエストにより、フローのプロンプトに変数が埋められ、モデルから応答が返されて、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) リクエストが行われます。

   ```
   client_runtime = boto3.client('bedrock-agent-runtime')
   
   response = client_runtime.invoke_flow(
       flowIdentifier=flow_id,
       flowAliasIdentifier=flow_alias_id,
       inputs=[
           {
               "content": {
                   "document": {
                       "genre": "pop",
                       "number": 3
                   }
               },
               "nodeName": "FlowInput",
               "nodeOutputName": "document"
           }
       ]
   )
   
   result = {}
   
   for event in response.get("responseStream"):
       result.update(event)
   
   if result['flowCompletionEvent']['completionReason'] == 'SUCCESS':
       print("Flow invocation was successful! The output of the flow is as follows:\n")
       print(result['flowOutputEvent']['content']['document'])
   
   else:
       print("The flow invocation completed because of the following reason:", result['flowCompletionEvent']['completionReason'])
   ```

   応答は、3 曲で構成されるポップミュージックのプレイリストを返す必要があります。

1. 次のアクションを実行して作成したエイリアス、バージョン、フローを削除します。

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [DeleteFlowAlias](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlowAlias.html) リクエストを行い、エイリアスを削除します。

      ```
      client.delete_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [DeleteFlowVersion](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlowVersion.html) リクエストを行い、バージョンを削除します。

      ```
      client.delete_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
      ```

   1. 次のコードスニペットを実行し、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して [DeleteFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlow.html) リクエストを行い、フローを削除します。

      ```
      client.delete_flow(flowIdentifier=flow_id)
      ```

------

# Amazon Bedrock でフローを削除する
<a name="flows-delete"></a>

フローが不要になった場合は、削除できます。削除したフローは、AWS サーバーに最長 14 日間保持されます。フローを削除する方法については、使用する方法に対応するタブを選択して、手順に従ってください。

------
#### [ Console ]

**フローを削除するには**

1. Amazon Bedrock コンソールを使用するためのアクセス許可を持つ IAM ID を使用して、AWS マネジメントコンソールにサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[Amazon Bedrock フロー]** を選択します。次に、**[Amazon Bedrock フロー]** セクションで、削除するフローを選択します。

1. **[削除]** を選択します。

1. 削除の結果について警告するダイアログボックスが表示されます。フローの削除を確定するには、入力フィールドに「**delete**」と入力し、**[削除]** をクリックします。

1. フローが削除中であることを通知するバナーが表示されます。削除が完了すると、成功を示すバナーが表示されます。

------
#### [ API ]

フローを削除するには、[Amazon Bedrock エージェントのビルドタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)を使用して、フローの ARN または ID を `flowIdentifier` として指定し、[DeleteFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteFlow.html) リクエストを送信します。

------