使用 Step Functions 调用和自定义 Amazon Bedrock 模型 - AWS Step Functions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Step Functions 调用和自定义 Amazon Bedrock 模型

您可以将 Step Functions 与 Amazon Bedrock 集成,以调用指定的 Amazon Bedrock 模型并创建微调任务来自定义模型。本页列出了支持的 Amazon Bedrock,APIs并提供了提取模型调用结果的示例Task状态。

要了解如何与集成 AWS Step Functions 中的服务,参见集成 服务和。在 Step Functions API 中向服务传递参数

提示

部署与集成的示例工作流程 Amazon Bedrock,请参阅 使用 Amazon Bedrock 进行人工智能提示链接

Amazon Bedrock 服务集成 APIs

要整合 AWS Step Functions 替换为 Amazon Bedrock,你可以使用以下内容APIs。APIs这些类似于相应的 Amazon Bedrock APIs,但InvokeModel有其他请求字段除外。

Amazon Bedrock-API CreateModelCustomizationJob

创建微调作业以自定义基础模型。您可以调用 Step Functions 集成API以CreateModelCustomizationJob获取请求响应,也可以使用 CreateModelCustomizationJob.sync 调用 Run a Job (.sync) 集成模式。API呼叫的字段没有区别。

Amazon Bedrock-API InvokeModel

调用指定的 Amazon Bedrock 使用您在请求正文中提供的输入来运行推理的模型。您可以使用 InvokeModel 对文本模型、图像模型和嵌入模型运行推理。

这些区域有:Amazon Bedrock 的服务集成API请求正文InvokeModel包括以下附加参数。

  • Body:以 Content-Type 请求标头中指定的格式指定输入数据。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 原始输出的位置。

以下示例显示了 for 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" ] } ] }