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

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

使用 Step Functions 叫用和自訂 Amazon 基岩模型

您可以將 Step Functions 與 Amazon 基岩整合,以叫用指定的 Amazon 基岩模型,並建立微調任務以自訂模型。本頁列出支援的 Amazon 基岩,APIs並提供擷取模型叫用結果的範例Task狀態。

若要瞭解如何整合 AWS 服務在 Step Functions 中,請參閱整合 服務和。將參數傳遞給 Step Functions 數API中的服務

提示

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

Amazon Bedrock 服務整合 APIs

若要整合 AWS Step Functions 取代為 Amazon Bedrock,您可以使用以下內容APIs。這APIs些類似於相應的 Amazon Bedrock APIs,除了InvokeModel有額外的請求欄位。

Amazon 基岩-API CreateModelCustomizationJob

建立微調工作以自訂基本模型。您可以CreateModelCustomizationJob請求響應調用 Step Functions 集成API,或者為運行 Job(CreateModelCustomizationJob.sync)集成模式調用 .sync。API呼叫的欄位沒有差異。

Amazon 基岩-API InvokeModel

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

所以此 Amazon Bedrock 的服務整合API要求主體InvokeModel包含下列其他參數。

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

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

    當您Body使用 Amazon Bedrock 最佳化整合,您可以指定最大 256 KB 的承載。如果您的承載超過 256 KB,建議您使用Input

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

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

    如果Input未指定指定ContentType,則輸入資料來源的內容類型會成為的值ContentType

  • Output— 指定寫入API回應的目的地。此選擇性欄位特定於 Amazon Bedrock 最佳化整合 Step Functions。 在此欄位中,您可以指定S3Uri.

    如果您指定此欄位,API回應主體會取代為 Amazon S3 原始輸出的位置。

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

{ "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 在你的狀態機器中。此範例顯示 Task 狀態,result_one該狀態會擷取路徑指定之模型呼叫的完整結果。這是以基礎模型的推論參數為基礎。此範例使用 Cohere 命令大型語言模型 (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 中的服務整合模式

IAM 政策範例 Amazon Bedrock 整合

以下部分描述 IAM 您需要的權限 Amazon Bedrock API您用於特定基礎或佈建模型。本節也包含授與完整存取權的原則範例。

記得更換 italicized 包含資源特定資訊的文字。

IAM 使用存取特定基礎模型的原則範例 InvokeModel

以下是 IAM 狀態機器的原則範例,可存取amazon.titan-text-express-v1使用InvokeModelAPI動作命名的特定基礎模型。

{ "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使用InvokeModelAPI動作命名的特定佈建模型。

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

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

以下是 IAM 當您使用InvokeModelAPI動作時提供完整存取權的狀態機器的原則範例。

{ "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 將特定基礎模型作為基礎模型存取的原則範例

以下是 IAM 狀態機器的原則範例,以使用CreateModelCustomizationJobAPI動作存取名amazon.titan-text-express-v1為基礎模型的特定基礎模型。

{ "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 將特定自訂模型作為基礎模型存取的原則範例

以下是 IAM 使用CreateModelCustomizationJobAPI動作將特定自訂模型存取為基礎模型的狀態機器的原則範例。

{ "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]]" ] } ] }

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

以下是 IAM 當您使用CreateModelCustomizationJobAPI動作時提供完整存取權的狀態機器的原則範例。

{ "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 存取特定基礎模型的政策範例

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

{ "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 存取自訂模型的原則範例

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

{ "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" ] } ] }

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

以下是 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" ] } ] }