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