使用 Step Functions 叫用和自訂 Amazon Bedrock 模型 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Step Functions 叫用和自訂 Amazon Bedrock 模型

您可以將 Step Functions 與 Amazon Bedrock 整合,以叫用指定的 Amazon Bedrock 模型,並建立微調任務來自訂模型。此頁面列出最佳化的 Amazon Bedrock APIs並提供範例Task狀態來擷取模型調用的結果。

若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務在 Step Functions 中將參數傳遞至服務 API

提示

若要部署與 整合的範例工作流程Amazon Bedrock,請參閱 使用 Amazon Bedrock 執行 AI 提示鏈結

Amazon Bedrock 服務整合 APIs

若要AWS Step Functions與 整合Amazon Bedrock,您可以使用下列 APIs。這些 APIs與對應的 Amazon Bedrock APIs類似,但 InvokeModel 有額外的請求欄位。

Amazon Bedrock API - CreateModelCustomizationJob

建立微調任務以自訂基礎模型。您可以使用 CreateModelCustomizationJob for Request ResponseCreateModelCustomizationJob.sync for Run a Job (.sync) 整合模式來叫用 Step Functions 整合 API。API 呼叫的欄位沒有差異。

Amazon Bedrock API - InvokeModel

使用您在請求內文中提供的輸入,叫用指定的Amazon Bedrock模型來執行推論。您可以使用 InvokeModel 來執行文字模型、影像模型和內嵌模型的推論。

InvokeModel Amazon Bedrock的服務整合 API 請求內文包含下列其他參數。

  • Body – 以內容類型請求標頭中指定的格式指定輸入資料。 Body包含目標模型特有的參數。

    如果您使用 InvokeModel API,則必須指定 Body 參數。 Step Functions不會驗證您在 中提供的輸入Body

    當您Body使用Amazon Bedrock最佳化整合指定 時,您可以指定高達 256 KiB 的承載。如果您的承載超過 256 KiB,我們建議您使用 Input

  • Input – 指定要從中擷取輸入資料的來源。此選用欄位專用於Amazon Bedrock最佳化與 的整合Step Functions。在此欄位中,您可以指定 S3Uri

    您可以在 參數或 Body中指定 Input,但不能同時指定兩者。

    當您在不指定 Input的情況下指定 時ContentType,輸入資料來源的內容類型會成為 的值ContentType

  • Output – 指定寫入 API 回應的目的地。此選用欄位專用於Amazon Bedrock最佳化與 的整合Step Functions。在此欄位中,您可以指定 S3Uri

    如果您指定此欄位,則會以原始輸出Amazon S3位置的參考取代 API 回應內文。

下列範例顯示用於Amazon Bedrock整合的 InvokeModel API 語法。

{ "ModelId": String, // required "Accept": String, // default: application/json "ContentType": String, // default: application/json "Input": { // not from Bedrock API "S3Uri": String }, "Output": { // not from Bedrock API "S3Uri": String } }

Amazon Bedrock 整合的任務狀態定義

下列任務狀態定義說明如何在狀態機器Amazon Bedrock中整合 。此範例顯示任務狀態,該狀態會擷取路徑 指定的模型調用的完整結果result_one。這是根據基礎模型的推論參數。此範例使用 Cohere Command 大型語言模型 (LLM)。

{ "Type": "Task", "Resource": "arn:aws:states:::bedrock:invokeModel", "Parameters": { "ModelId": "cohere.command-text-v14", "Body": { "prompt.$": "$.prompt_one", "max_tokens": 250 }, "ContentType": "application/json", "Accept": "*/*" }, "ResultPath": "$.result_one", "ResultSelector": { "result_one.$": "$.Body.generations[0].text" }, "End": true }

IAM policies for calling Amazon Bedrock

當您使用 主控台建立狀態機器時, Step Functions 會自動為您的狀態機器建立執行角色,並具有所需的最低權限。這些自動產生的IAM角色適用於 AWS 區域 您建立狀態機器的 。

我們建議您在建立IAM政策時,不要在政策中包含萬用字元。作為安全最佳實務,您應該盡可能縮小政策的範圍。只有在執行期間不知道特定輸入參數時,才應該使用動態政策。

下列範例範本顯示 如何根據您狀態機器定義中的資源 AWS Step Functions 產生 IAM 政策。如需詳細資訊,請參閱 Step Functions 如何為整合服務產生 IAM 政策探索 Step Functions 中的服務整合模式

IAMAmazon Bedrock整合的政策範例

下一節說明根據您用於特定基礎或佈建模型的 Amazon Bedrock API 所需的IAM許可。本節也包含授予完整存取權的政策範例。

請記得將斜體文字取代為您的資源特定資訊。

IAM 使用 InvokeModel 存取特定基礎模型的政策範例

以下是狀態機器IAM的政策範例,該機器amazon.titan-text-express-v1會使用 InvokeModel API 動作來存取名為 的特定基礎模型。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/amazon.titan-text-express-v1" ] } ] }

IAM 使用 InvokeModel 存取特定佈建模型的政策範例

以下是狀態機器IAM的政策範例,該機器c2oi931ulksx會使用 InvokeModel API 動作來存取名為 的特定佈建模型。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:provisioned-model/c2oi931ulksx" ] } ] }

使用 InvokeModel 的完整存取IAM政策範例

以下是狀態機器IAM的政策範例,在您使用 InvokeModel API 動作時提供完整存取權。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "InvokeModel1", "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/*", "arn:aws:bedrock:us-east-2:123456789012:provisioned-model/*" ] } ] }

IAM 以存取特定基礎模型做為基礎模型的政策範例

以下是狀態機器使用 CreateModelCustomizationJob API 動作存取amazon.titan-text-express-v1名為基本模型之特定基礎模型IAM的政策範例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/amazon.titan-text-express-v1", "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

IAM 政策範例,以存取特定自訂模型做為基礎模型

以下是狀態機器使用 CreateModelCustomizationJob API 動作存取特定自訂模型做為基礎模型IAM的政策範例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/[[roleName]]" ] } ] }

使用 CreateModelCustomizationJob.sync 的完整存取IAM政策範例

以下是狀態機器IAM的政策範例,在您使用 CreateModelCustomizationJob API 動作時提供完整存取權。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/*", "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

IAM 使用 CreateModelCustomizationJob.sync 存取特定基礎模型的政策範例

以下是狀態機器amazon.titan-text-express-v1使用 CreateModelCustomizationJob.sync API 動作存取名為 之特定基礎模型IAM的政策範例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/amazon.titan-text-express-v1", "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

IAM 使用 CreateModelCustomizationJob.sync 存取自訂模型的政策範例

以下是狀態機器使用 CreateModelCustomizationJob.sync API 動作存取自訂模型IAM的政策範例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }

使用 CreateModelCustomizationJob.sync 的完整存取IAM政策範例

以下是狀態機器IAM的政策範例,在您使用 CreateModelCustomizationJob.sync API 動作時提供完整存取權。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "CreateModelCustomizationJob1", "Action": [ "bedrock:CreateModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2::foundation-model/*", "arn:aws:bedrock:us-east-2:123456789012:custom-model/*", "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob2", "Action": [ "bedrock:GetModelCustomizationJob", "bedrock:StopModelCustomizationJob" ], "Resource": [ "arn:aws:bedrock:us-east-2:123456789012:model-customization-job/*" ] }, { "Effect": "Allow", "Sid": "CreateModelCustomizationJob3", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myRole" ] } ] }