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 FunctionsAPI의 서비스에 파라미터 전달.

작은 정보

와 통합되는 예제 워크플로를 배포하려면 Amazon Bedrock, 단원을 참조하십시오Amazon Bedrock을 사용하여 AI 프롬프트 체이닝 수행.

Amazon Bedrock 서비스 통합 APIs

통합하려면 AWS Step Functions with Amazon Bedrock, 다음를 사용할 수 있습니다APIs. APIs 이는 해당와 유사합니다.Amazon Bedrock APIs를 제외하고 InvokeModel에는 추가 요청 필드가 있습니다.

Amazon Bedrock API - CreateModelCustomizationJob

기본 모델을 사용자 지정하기 위한 미세 튜닝 작업을 생성합니다. 요청 응답CreateModelCustomizationJob 경우 API와 Step Functions 통합을 호출하고 작업 실행(CreateModelCustomizationJob.sync) 통합 패턴의 경우 .sync를 호출할 수 있습니다. API 호출에 대한 필드에는 차이가 없습니다.

Amazon Bedrock API - InvokeModel

지정된를 호출합니다.Amazon Bedrock 요청 본문에 제공한 입력을 사용하여 추론을 실행하는 모델입니다. InvokeModel을 사용하여 텍스트 모델, 이미지 모델 및 임베딩 모델의 추론을 실행합니다.

.Amazon Bedrock 에 대한 서비스 통합 API 요청 본문에는 다음과 같은 추가 파라미터가 InvokeModel 포함됩니다.

  • Body - 콘텐츠 유형 요청 헤더에 지정된 형식으로 입력 데이터를 지정합니다. Body에는 대상 모델별 파라미터가 포함되어 있습니다.

    를 사용하는 경우 Body 파라미터를 지정InvokeModelAPI해야 합니다.Step Functions 는에서 제공하는 입력을 검증하지 않습니다Body.

    Body 사용하여를 지정하는 경우 Amazon Bedrock 최적화된 통합으로 최대 256KiB의 페이로드를 지정할 수 있습니다. 페이로드가 256KiB를 초과하는 경우를 사용하는 것이 좋습니다Input.

  • Input - 입력 데이터를 검색할 소스를 지정합니다. 이 선택적 필드는 Amazon Bedrock 와의 최적화된 통합 Step Functions. 이 필드에서는를 지정할 수 있습니다S3Uri.

    파라미터의 Body 또는 Input 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

    ContentType을 지정하지 않고 Input을 지정하면 입력 데이터 소스의 콘텐츠 유형이 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 상태 시스템에서. 이 예제는 경로 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 정책에 와일드카드를 포함하지 마십시오. 보안 모범 사례로 정책 범위를 최대한 좁혀야 합니다. 런타임 중에 특정 입력 파라미터를 알 수 없는 경우에만 동적 정책을 사용해야 합니다.

다음 예제 템플릿은가 상태 시스템 정의의 리소스를 기반으로 IAM 정책을 AWS Step Functions 생성하는 방법을 보여줍니다. 자세한 내용은 Step Functions가 통합 서비스용 IAM 정책을 생성하는 방법Step Functions에서 서비스 통합 패턴 검색 단원을 참조하세요.

IAM 에 대한 정책 예제 Amazon Bedrock 통합

다음 섹션에서는 IAM 를 기반으로 필요한 권한 Amazon Bedrock API 특정 파운데이션 또는 프로비저닝된 모델에 사용하는 . 또한 이 섹션에는 전체 액세스 권한을 부여하는 정책의 예가 포함되어 있습니다.

italicized 텍스트를 리소스별 정보로 바꿔야 합니다.

IAM 를 사용하여 특정 파운데이션 모델에 액세스하는 정책 예제 InvokeModel

다음은 입니다.IAM InvokeModel API 작업을 amazon.titan-text-express-v1 사용하여 라는 특정 파운데이션 모델에 액세스하는 상태 시스템에 대한 정책 예제입니다.

{ "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 InvokeModel API 작업을 c2oi931ulksx 사용하여 라는 특정 프로비저닝된 모델에 액세스하는 상태 시스템에 대한 정책 예제입니다.

{ "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 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 기본 모델로 특정 파운데이션 모델에 액세스하는 정책 예제

다음은 입니다.IAM CreateModelCustomizationJob API 작업을 사용하여 기본 모델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 상태 시스템이 CreateModelCustomizationJob 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": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/[[roleName]]" ] } ] }

모든 액세스 IAM use CreateModelCustomizationJob.sync에 대한 정책 예제

다음은 입니다.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를 사용하여 특정 파운데이션 모델에 액세스하는 정책 예제

다음은 입니다.IAM 상태 머신이 CreateModelCustomizationJob.sync API 작업을 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": [ "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 use 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" ] } ] }