翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
フローのノードタイプ
Amazon Bedrock Flows には、フローを構築するための次のノードタイプが用意されています。ノードを設定するときは、次のフィールドを指定する必要があります。
-
名前 — ノードの名前を入力します。
-
タイプ – コンソールでは、使用するノードのタイプをドラッグアンドドロップします。API では、
type
フィールドと、configuration
フィールドの対応する FlowNodeConfiguration を使用します。 -
入力 – 入力ごとに次の情報を指定します。
-
名前 - 入力の名前。一部のノードには、使用する必要がある定義済みの名前またはタイプがあります。事前定義された名前を持つノードについては、「ロジックノードタイプ」を参照してください。
-
式 - 個々の入力として使用する入力全体の部分を定義します。詳細については、「式を使用して、Amazon Bedrock Flows の入力全体の関連部分を抽出して入力を定義する」を参照してください。
-
型 – 入力のデータ型。実行時にこのノードに到達すると、Amazon Bedrock は入力全体に式を適用し、結果がデータ型と一致することを確認します。
-
-
出力 – 出力ごとに次の情報を指定します。
-
名前 - 出力の名前。一部のノードには、使用する必要がある定義済みの名前またはタイプがあります。事前定義された名前を持つノードについては、「ロジックノードタイプ」を参照してください。
-
型 - 出力値のデータ型。実行時にこのノードに到達すると、Amazon Bedrock はノード出力がデータ型と一致することを確認します。
-
-
設定 – コンソールでは、ノードの上部でノード固有のフィールドを定義します。API では、適切な FlowNodeConfiguration を使用して、そのフィールドに入力します。
各ノードタイプについて以下で説明し、その API の構造を示します。セクションを展開して、そのノードタイプの詳細を確認します。
フローロジックを制御するノード
次のノードタイプを使用して、フローのロジックを制御します。
すべてのフローには 1 つのフロー入力ノードのみが含まれており、そのノードから始める必要があります。Flow input ノードは、InvokeFlow
リクエストから content
を受け取り、データ型を検証して、次のノードに送信します。
API の入力 FlowNode オブジェクトの一般的な構造を以下に示します。
{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }
Flow output ノードは、定義された式に基づいて前のノードから入力データを抽出し、それを返します。コンソールでは、出力は、テストウィンドウで [実行] を選択した後に返されるレスポンスです。API では、出力は、InvokeFlow
レスポンスの flowOutputEvent
の content
フィールドで返されます。フローには、複数のフロー出力ノードを含めることができます。
フローに複数のブランチがある場合、フローに複数の Flow output ノードを含めることができます。
出力 FlowNode オブジェクトの一般的な構造を以下に示しています。
{ "name": "string", "type": "Output", "inputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "output": CONTEXT-DEPENDENT } }
Condition ノードは、定義されている条件に応じて、前のノードから別のノードにデータを送信します。Condition ノードは複数の入力を受け付けることができます。
例については、条件ノードを使用してフローを作成するを参照してください。
Condition ノードを定義するには
-
追加する予定の条件を評価するために必要な数の入力を追加します。
-
各入力の名前を入力し、想定される型を指定し、入力全体から関連部分を抽出する式を記述します。
-
各入力をアップストリームノードからの関連する出力に接続します。
-
必要な数の条件を追加します。
-
条件ごとに以下の手順を実行します。
-
条件の名前を入力します。
-
リレーショナル演算子と論理演算子を使用して、入力を他の入力または定数と比較する条件を定義します。
注記
条件は順番に評価されます。複数の条件が満たされた場合、条件は昇順で優先されます。
-
満たされた場合にデータを送信するダウンストリームノードに各条件を接続します。
-
条件式
条件を定義するには、その名前で入力を参照し、次のいずれかのリレーショナル演算子を使用して値と比較します。
演算子 | 意味 | サポートされているデータ型 | 使用例 | 例の意味 |
---|---|---|---|---|
== | 等しい (データ型も等しい必要がある) | 文字列、数値、ブール値 | A == B | A が B と等しい場合 |
!= | 等しくない | 文字列、数値、ブール値 | A != B | A が B と等しくない場合 |
> | Greater than (より大きい) | 数値 | A > B | A が B より大きい場合 |
>= | 以上 | 数値 | A >= B | A が B 以上である場合 |
< | Less than (より小さい) | 数値 | A < B | A が B より小さい場合 |
<= | 以下 | 数値 | A <= B | A が B 以下である場合 |
入力を他の入力と比較したり、条件式内の定数と比較したりできます。例えば、profit
という数値入力と expenses
という別の数値入力がある場合、profit > expenses
と profit <= 1000
の両方が有効な式です。
次の論理演算子を使用して、より複雑な条件の式を組み合わせることができます。括弧を使用して、式をグループ化したときのあいまいさを解決することをお勧めします。
演算子 | 意味 | 使用例 | 例の意味 |
---|---|---|---|
and | 両方の式が true | (A < B) and (C == 1) | 両方の式が true の場合:
|
or | 少なくとも 1 つの式が true | (A != 2) or (B > C) | いずれかの式が true の場合:
|
not | 式が true ではない | not (A > B) | A が B より大きくない場合 (A <= B に相当) |
API では、CreateFlow または UpdateFlow リクエストを送信するときに、definition
フィールドで以下を定義します。
-
nodes
配列の条件 FlowNode オブジェクト。一般的な形式は次のとおりです (Condition ノードにはoutputs
がありません)。{ "name": "string", "type": "Condition", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "condition": { "conditions": [ { "name": "string", "expression": "string" }, ... ] } } }
-
Condition ノードへの入力ごとに、
connections
配列の FlowConnection オブジェクト。FlowConnection
オブジェクトのconfiguration
フィールドに FlowDataConnectionConfiguration オブジェクトを含めます。FlowConnection
オブジェクトの一般的な形式は次のとおりです。{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } }
-
Condition ノードの条件 (デフォルト条件を含む) ごとに、
connections
配列の FlowConnection オブジェクト。FlowConnection
オブジェクトのconfiguration
フィールドに FlowConditionalConnectionConfiguration オブジェクトを含めます。FlowConnection オブジェクトの一般的な形式は次のとおりです。{ "name": "string", "source": "string", "target": "string", "type": "Condition", "configuration": { "conditional": "default", ... } }
リレーショナル演算子と論理演算子を使用して、この条件
source
ノードをtarget
ノードダウンストリームに接続するcondition
を定義します。デフォルトの条件では、条件をdefault
として指定します。
Iterator ノードは配列を取得し、その項目をダウンストリームノードへの出力として繰り返し返します。Iterator ノードへの入力は 1 つずつ処理され、相互に並列処理されません。Flow output ノードは、異なるレスポンスで各入力の最終結果を返します。また、Iterator ノードの下流にある Collector ノードを使用すると、反復応答を収集して、配列のサイズに加えて配列として返すこともできます。
以下は、イテレーター FlowNode オブジェクトの一般的な構造を示しています。
{ "name": "string", "type": "Iterator", "inputs": [ { "name": "array", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "outputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", }, { "name": "arraySize", "type": "Number" } ], "configuration": { "iterator": CONTEXT-DEPENDENT } }
Collector ノードは、配列のサイズに加えて反復入力を取得し、配列として返します。Iterator ノードの下流にある Collector ノードを使用すると、一部のノード経由で反復項目を送信した後にこれらの項目を収集できます。
コレクター FlowNode オブジェクトの一般的な構造を以下に示しています。
{ "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 } }
フロー内のデータを処理するノード
次のノードタイプを使用して、フロー内のデータを処理します。
Prompt ノードは、フローで使用するプロンプトを定義します。プロンプト管理のプロンプトを使用するか、ノードでプロンプトをインラインで定義できます。詳細については、「Amazon Bedrock でプロンプト管理を使用して再利用可能なプロンプトを構築して保存する」を参照してください。
例については、サンプルフローの使用を開始するを参照してください。
Prompt ノードへの入力は、変数に入力する値です。出力は、モデルから生成されたレスポンスです。
プロンプト FlowNode オブジェクトの一般的な構造を次に示します。
{ "name": "string", "type": "prompt", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "modelCompletion", "type": "String" } ], "configuration": { "prompt": { "sourceConfiguration": PromptFlowNodeSourceConfiguration object (see below), "guardrailConfiguration": { "guardrailIdentifier": "string", "guardrailVersion": "string" } } } }
PromptFlowNodeSourceConfiguration オブジェクトは、プロンプト管理のプロンプトを使用するか、プロンプトをインラインで定義するかによって異なります。
-
プロンプト管理のプロンプトを使用する場合は、オブジェクトは次の一般的な構造である必要があります。
{ "resource": { "promptArn": "string" } }
-
プロンプトをインラインで定義する場合は、プロンプト管理を使用してプロンプトを作成する の 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 ノードを使用すると、プロンプトをエージェントに送信できます。エージェントは、FM と関連付けられたリソース間でオーケストレーションを行い、エンドユーザーに対してアクションを識別して実行します。詳細については、「AI エージェントを使用してアプリケーションのタスクを自動化する」を参照してください。
設定で、使用するエージェントのエイリアスの Amazon リソースネーム (ARN) を指定します。ノードへの入力は、エージェントのプロンプトおよび関連するプロンプトまたはセッション属性です。ノードはエージェントのレスポンスを出力として返します。
エージェントノードは、マルチターン呼び出しをサポートできるため、フロー実行中のユーザーとエージェント間のインタラクティブな会話が可能になります。エージェントノードが追加情報または明確化を必要とする場合、フロー実行を一時停止し、ユーザーに特定の入力をリクエストできます。ユーザーがリクエストされた情報を提供すると、エージェントノードは新しい入力で処理を続行します。これは、エージェントノードが実行を完了するために必要なすべての情報を取得するまで続きます。
エージェント FlowNode オブジェクトの一般的な構造を次に示します。
{ "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" } } }
ナレッジベースノードを使用すると、Amazon Bedrock ナレッジベースからナレッジベースにクエリを送信できます。詳細については、「Amazon Bedrock ナレッジベースを使用してデータを取得し、AI レスポンスを生成する」を参照してください。
設定で、 をknowledgeBaseId
最低限指定します。ユースケースに応じて、オプションで次のフィールドを含めることができます。
-
modelId
– 取得した結果に基づいてレスポンスを生成する場合に使用するモデル ID を含めます。取得した結果を配列として返すには、モデル ID を省略します。 -
guardrailConfiguration
–guardrailIdentifier
フィールドに Amazon Bedrock ガードレールで定義されているガードレールの ID または ARN を、guardrailVersion
フィールドにガードレールのバージョンを含めます。注記
ガードレールは、ナレッジベースノード
RetrieveAndGenerate
で を使用する場合にのみ適用できます。
ノードへの入力は、ナレッジベースへのクエリです。出力は、モデルレスポンス、文字列、または取得した結果の配列のいずれかです。
ナレッジベース FlowNode オブジェクトの一般的な構造を次に示します。
{ "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 ノードを使用すると、Amazon S3 ロケーションへのフローにデータを保存できます。設定では、データストレージに使用する S3 バケットを指定します。ノードへの入力は、保存するコンテンツとオブジェクトキーです。ノードは S3 ロケーションの URI を出力として返します。
S3 ストレージ FlowNode オブジェクトの一般的な構造を次に示します。
{ "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 ノードを使用すると、Amazon S3 ロケーションからデータを取得してフローに導入できます。設定では、データを取得する S3 バケットを指定します。ノードへの入力はオブジェクトキーです。ノードは S3 ロケーションのコンテンツを出力として返します。
注記
現在、S3 ロケーションのデータは UTF-8 エンコード文字列である必要があります。
S3 取り出し FlowNode オブジェクトの一般的な構造を次に示します。
{ "name": "string", "type": "Retrieval", "inputs": [ { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Content", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }
Lambda function ノードを使用すると、ビジネスロジックを実行するようにコードを定義できる Lambda 関数を呼び出すことができます。フローに Lambda ノードを含めると、Amazon Bedrock は指定した Lambda 関数に入力イベントを送信します。
設定では、Lambda 関数の Amazon リソースネーム (ARN) を指定します。Lambda 入力イベントで送信する入力を定義します。これらの入力に基づいてコードを記述し、関数によって返される内容を定義できます。出力では、関数のレスポンスが返されます。
Λ 関数 FlowNode オブジェクトの一般的な構造を次に示します。
{ "name": "string", "type": "LambdaFunction", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "functionResponse", "type": "String | Number | Boolean | Object | Array" } ], "configuration": { "lambdaFunction": { "lambdaArn": "string" } } }
フローの Lambda 入力イベント
Lambda ノードで Lambda 関数に送信される入力イベントは、次の形式です。
{ "messageVersion": "1.0", "flow": { "flowArn": "string", "flowAliasArn": "string" }, "node": { "name": "string", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string", "value": ... }, ... ] } }
各入力のフィールドは Lambda ノードを定義するときに指定したフィールドと一致し、value
フィールドの値は、式によって解決された後のノードへの入力全体で指定されます。例えば、ノードへの入力全体が [1, 2, 3]
で、式が $.data[1]
の場合、Lambda 関数に送信される入力イベントの値は 2
になります。
Lambda でのイベントの詳細については、AWS Lambda デベロッパーガイドの「Lambda の概念」を参照してください。
フローの Lambda レスポンス
Lambda 関数を記述するときは、この関数から返されるレスポンスを定義します。このレスポンスは、Lambda ノードの出力としてフローに返されます。
注記
Lex ノードはAmazon Lex サービスは、他の AWS サービスの開発と継続的な改善のために、お客様のコンテンツを保存して使用する場合があります。 AWS のお客様は、サービスの改善のためにコンテンツを保存または使用することをオプトアウトできます。Amazon Lex のオプトアウトポリシーを実装する方法については、「AI サービスのオプトアウトポリシー」を参照してください。
Lex ノードを使用すると、Amazon Lex ボットを呼び出して自然言語処理を使用して発話を処理し、ボット定義に基づいてインテントを識別できます。詳細については、Amazon LEX 開発者ガイドを参照してください。
設定で、使用するボットのエイリアスの Amazon リソースネーム (ARN) と使用するロケールを指定します。ノードへの入力は、発話と、それに伴うリクエスト属性またはセッション属性です。ノードは、識別されたインテントを出力として返します。
注記
現在、Lex ノードはマルチターン会話に対応していません。1 つの Lex ノードは 1 つの発話しか処理できません。
Lex FlowNode オブジェクトの一般的な構造を次に示します。
{ "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" } } }
ノードタイプの概要テーブル
次の表は、各ノードタイプで許可される入力と出力をまとめたものです。次の点に注意してください:
-
名前が「すべて」とマークされている場合は、任意の文字列を名前として指定できます。それ以外の場合は、テーブルで指定された値を使用する必要があります。
-
型が「すべて」とマークされている場合は、文字列、数値、ブール値、オブジェクト、配列のいずれかのデータ型を指定できます。それ以外の場合は、テーブルで指定された型を使用する必要があります。
-
現在、Condition、Prompt、Lambda function ノードのみが、自分で定義できる複数の入力を許可しています。
入力情報 | 出力情報 | |||||
---|---|---|---|---|---|---|
ノードの種類 | Input | 名前 | 型 | Output | 名前 | 型 |
Input (入力) | 該当なし | 該当なし | 該当なし | content リクエストの InvokeFlow フィールド。 |
document |
いずれか |
出力 | InvokeFlow レスポンスで返されるデータ。 |
document |
いずれか | 該当なし | 該当なし | 該当なし |
条件 |
条件に基づいて送信するデータ。 (複数入力可) |
いずれか | すべて |
条件に基づいて送信するデータ。 (異なるパスの条件を指定) |
いずれか | すべて |
Iterator | 次のノード (複数可) を各メンバーに繰り返し適用する配列。 | array |
配列 | 配列の各項目 | arrayItem |
いずれか |
入力配列のサイズ | arraySize |
数値 | ||||
Collector | 配列に統合する反復。 | arrayItem |
いずれか | 前のノードからのすべての出力を含む配列。 | collectedArray |
配列 |
出力配列のサイズ | arraySize |
数値 |
入力情報 | 出力情報 | |||||
---|---|---|---|---|---|---|
ノードの種類 | Input | 名前 | 型 | Output | 名前 | 型 |
Prompt |
プロンプトに変数を入力する値。 (複数入力可) |
|
いずれか | モデルによって返されるレスポンス。 | modelCompletion |
String |
S3 storage | S3 バケットに保存されるデータ。 | content |
いずれか | S3 ロケーションの URI。 | s3Uri |
String |
S3 オブジェクトに使用するオブジェクトキー。 | objectKey |
String | ||||
S3 retrieval | S3 オブジェクトのオブジェクトキー | objectKey |
String | S3 バケットから取得するデータ。 | s3Content |
いずれか |
Agent | エージェントに送信するプロンプト。 | agentInputText |
String | エージェントから返されたレスポンス。 | agentResponse |
String |
プロンプトとともに送信するプロンプト属性。 | promptAttributes |
オブジェクト | ||||
プロンプトとともに送信するセッション属性。 | sessionAttributes |
オブジェクト | ||||
Knowledge base | ナレッジベースに送信するクエリ。 | retrievalQuery |
String | ナレッジベースから返された結果または生成されたレスポンス。 | retrievalResults |
配列 |
Lambda function |
関数に送信するデータ。 (複数入力可) |
いずれか | 関数から返されたレスポンス。 | functionResponse |
いずれか | |
Lex | ボットに送信する発話。 | inputText |
String | ボットが発話について予測するインテント。 | predictedIntent |
String |
発話とともに送信するリクエスト属性。 | requestAttributes |
オブジェクト | ||||
発話とともに送信するセッション属性。 | sessionAttributes |
オブジェクト |