本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
流程中的節點類型
Amazon Bedrock Flows 提供下列節點類型來建置您的流程。設定節點時,您需要提供下列欄位:
-
名稱 – 輸入節點的名稱。
-
類型 – 在 主控台中,您可以拖放要使用的節點類型。在 API 中,使用
type
欄位和configuration
欄位中對應的 FlowNodeConfiguration。 -
輸入 – 為每個輸入提供下列資訊:
-
名稱 – 輸入的名稱。某些節點具有您必須使用的預先定義名稱或類型。若要了解哪些名稱具有預先定義的名稱,請參閱 邏輯節點類型。
-
表達式 – 定義整個輸入的部分,以用作個別輸入。如需詳細資訊,請參閱使用表達式來定義輸入,方法是擷取 Amazon Bedrock Flows 中整個輸入的相關部分。
-
類型 – 輸入的資料類型。在執行時間達到此節點時,Amazon Bedrock 會將表達式套用至整個輸入,並驗證結果是否符合資料類型。
-
-
輸出 – 為每個輸出提供下列資訊:
-
名稱 – 輸出的名稱。某些節點具有您必須使用的預先定義名稱或類型。若要了解哪些名稱具有預先定義的名稱,請參閱 邏輯節點類型。
-
類型 – 輸出的資料類型。執行時間達到此節點時,Amazon Bedrock 會驗證節點輸出是否符合資料類型。
-
-
組態 – 在主控台中,您可以在節點頂端定義節點特定的欄位。在 API 中,使用適當的 FlowNodeConfiguration 並填寫其欄位。
每個節點類型如下所述,並在 API 中提供其結構。展開區段以進一步了解該節點類型。
用於控制流程邏輯的節點
使用下列節點類型來控制流程的邏輯。
每個流程只包含一個流程輸入節點,且必須以其開頭。流程輸入節點content
會從InvokeFlow
請求取得 ,驗證資料類型,並將其傳送至下列節點。
下列顯示 API 中輸入 FlowNode 物件的一般結構:
{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }
流程輸出節點會根據定義的表達式,從上一個節點擷取輸入資料,然後傳回。在 主控台中,輸出是在測試視窗中選擇執行後傳回的回應。在 API 中,輸出會在flowOutputEvent
InvokeFlow
回應中的 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 |
> | 大於 | Number | A > B | 如果 A 大於 B |
>= | 大於或等於 | Number | A >= B | 如果 A 大於或等於 B |
< | 小於 | Number | A < B | 如果 A 小於 B |
<= | 小於或等於 | Number | A <= B | 如果 A 小於或等於 B |
您可以將輸入與其他輸入或條件表達式中的常數進行比較。例如,如果您有名為 的數值輸入profit
,以及另一個名為 的數值輸入expenses
,則 profit > expenses
或 profit <= 1000
都是有效的表達式。
您可以使用下列邏輯運算子來結合表達式,以因應更複雜的條件。我們建議您使用括號來解決運算式分組中的模棱兩可之處:
運算子 | 意義 | 範例使用方式 | 意義範例 |
---|---|---|---|
以及 | 兩個表達式都是 true | (A < B) 和 (C == 1) | 如果兩個表達式都是 true:
|
或 | 至少一個表達式為 true | (A != 2) 或 (B > C) | 如果任一表達式為 true:
|
非 | 表達式不是 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 物件。在物件的configuration
欄位中包含 FlowDataConnectionConfigurationFlowConnection
物件。物件的一般格式FlowConnection
如下所示:{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } }
-
對於條件節點中的每個條件 (包括預設條件),
connections
陣列中的 FlowConnection 物件。在物件的configuration
欄位中包含 FlowConditionalConnectionConfigurationFlowConnection
物件。FlowConnection 物件的一般格式如下所示:{ "name": "string", "source": "string", "target": "string", "type": "Conditional", "configuration": { "conditional": { "condition": "string" } } }
使用關聯式和邏輯運算子來定義
condition
將此條件source
節點連接到下游target
節點的 。針對預設條件,請將條件指定為default
。
迭代器節點會取得陣列,並反覆將其項目傳回為下游節點的輸出。迭代器節點的輸入會逐一處理,不會彼此平行處理。流程輸出節點會傳回不同回應中每個輸入的最終結果。您也可以使用反覆運算節點下游的收集器節點來收集反覆運算的回應,並傳回為陣列,以及陣列的大小。
以下顯示迭代器 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), "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 Guardrails 套用至您的提示或從中產生的回應,請包含 guardrailConfiguration
欄位,並在 guardrailIdentifier
欄位指定護欄的 ID 或 ARN,並在 guardrailVersion
欄位指定護欄的版本。
代理程式節點可讓您傳送提示給代理程式,該代理程式會協調 FMs 和相關聯的資源,以識別和執行最終使用者的動作。如需詳細資訊,請參閱使用 AI 代理程式自動化應用程式中的任務。
在組態中,指定要使用之代理程式別名的 Amazon Resource Name (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 Guardrails 中定義的護欄 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 儲存節點可讓您將資料儲存在流向 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 Resource Name (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 Resource Name (ARN) 和要使用的地區設定。節點的輸入是表達式和任何隨附的請求屬性或工作階段屬性。節點會傳回已識別的意圖做為輸出。
注意
目前,Lex 節點不支援多迴轉對話。一個 Lex 節點只能處理一個表達式。
以下顯示 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" } } }
節點類型的摘要資料表
下表摘要說明每個節點類型允許的輸入和輸出。注意下列事項:
-
如果名稱標記為任何,您可以提供任何字串做為名稱。否則,您必須使用資料表中指定的值。
-
如果類型標記為任何,您可以指定下列任何資料類型:字串、數字、布林值、物件、陣列。否則,您必須使用資料表中指定的類型。
-
目前,只有條件、提示和 Lambda 函數節點允許您可以自行定義的多個輸入。
輸入資訊 | 輸出資訊 | |||||
---|---|---|---|---|---|---|
節點類型 | 輸入 | 名稱 | Type | 輸出 | 名稱 | Type |
輸入 | N/A | N/A | N/A | InvokeFlow 請求中的 content 欄位。 |
document |
任何 |
輸出 | InvokeFlow 回應中要傳回的資料。 |
document |
任何 | N/A | N/A | N/A |
Condition |
根據條件傳送的資料。 (允許多個輸入) |
任何 | 任何 |
根據條件傳送的資料。 (指定不同路徑的條件) |
任何 | 任何 |
迭代器 | 您想要反覆將下列節點套用到每個成員的陣列 (這些節點)。 | array |
陣列 | 陣列中的每個項目 | arrayItem |
任何 |
輸入陣列的大小 | arraySize |
Number | ||||
收集器 | 您想要合併到陣列的反覆運算。 | arrayItem |
任何 | 已附加上一個節點的所有輸出的陣列。 | collectedArray |
陣列 |
輸出陣列的大小 | arraySize |
Number |
輸入資訊 | 輸出資訊 | |||||
---|---|---|---|---|---|---|
節點類型 | 輸入 | 名稱 | Type | 輸出 | 名稱 | Type |
提示 |
在提示中填入變數的值。 (允許多個輸入) |
|
任何 | 模型傳回的回應。 | 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 |
物件 |