本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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
创建微调作业以自定义基础模型。您可以调用 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
包含特定于目标模型的参数。如果使用
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
。如果您指定此字段,则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
" ] } ] }