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 서비스 통합 API

AWS Step Functions과 Amazon Bedrock을 통합하려면 다음 API를 사용합니다. 이러한 API는 InvokeModel에 추가 요청 필드가 있다는 점을 제외하면 해당 Amazon Bedrock API와 유사합니다.

Amazon Bedrock API - CreateModelCustomizationJob

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

Amazon Bedrock API - InvokeModel

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

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

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

    InvokeModel API를 사용하는 경우 Body 파라미터를 지정해야 합니다. Step Functions는 Body에 입력된 값의 유효성을 검사하지 않습니다.

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

  • Input - 입력 데이터를 검색할 소스를 지정합니다. 이 옵션 필드는 Step Functions를 사용한 Amazon Bedrock 최적화 통합에만 해당됩니다. 이 필드에서 S3Uri를 지정할 수 있습니다.

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

    ContentType을 지정하지 않고 Input을 지정하면 입력 데이터 소스의 콘텐츠 유형이 ContentType의 값이 됩니다.

  • Output - API 응답이 기록되는 대상을 지정합니다. 이 옵션 필드는 Step Functions를 사용한 Amazon Bedrock 최적화 통합에만 해당됩니다. 이 필드에서 S3Uri를 지정할 수 있습니다.

    이 필드를 지정하면 API 응답 본문이 원래 출력의 Amazon S3 위치에 대한 참조로 대체됩니다.

다음 예제는 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 정책을 만들 때는 정책에 와일드카드를 포함하지 않는 것이 좋습니다. 보안 모범 사례로 정책 범위를 최대한 좁혀야 합니다. 런타임 중에 특정 입력 파라미터를 알 수 없는 경우에만 동적 정책을 사용해야 합니다.

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

Amazon Bedrock 통합을 위한 IAM 정책 예

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

기울임꼴 텍스트를 리소스별 정보로 바꿔야 합니다.

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

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

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

InvokeModel을 사용하여 특정 프로비저닝 모델에 액세스하는 IAM 정책의 예

다음은 InvokeModel API 작업을 사용하여 c2oi931ulksx이라는 이름의 특정 프로비저닝 모델에 액세스하는 상태 머신의 IAM 정책 예입니다.

{ "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 정책 예

다음은 InvokeModel API 작업을 사용할 때 전체 액세스를 제공하는 상태 머신의 IAM 정책 예입니다.

{ "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 정책 예

다음은 CreateModelCustomizationJob API 작업을 사용할 때 전체 액세스를 제공하는 상태 머신의 IAM 정책 예입니다.

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

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

다음은 CreateModelCustomizationJob.sync 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": [ "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 정책 예

다음은 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 정책 예

다음은 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/*", "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" ] } ] }