자동 추론 정책 생성 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자동 추론 정책 생성

자동 추론 정책을 생성하면 입력 소스 문서가 공식 로직 규칙 세트와 변수 및 유형의 스키마로 변환됩니다.

Amazon Bedrock은 AWS Key Management Service(KMS)를 사용하여 자동 추론 정책을 암호화합니다. 기본적으로 Amazon Bedrock은 서비스 소유 키를 사용합니다. 선택적으로 정책 데이터의 암호화를 추가로 제어하기 위해 고객 관리형 KMS 키를 지정할 수 있습니다.

예: 소스 문서에 "1년 이상 근무한 정규직 직원은 육아 휴가 자격이 있다"라는 HR 정책이 포함된 경우 자동 추론은 IsFullTime(부울), YearsOfService(정수) 및 EligibleForParentalLeave(부울)와 같은 변수를 연결하는 규칙과 함께 추출합니다.

참고

자습서 비디오: 다음 자습서를 시청하여 자동 추론을 생성하는 단계별 연습을 살펴봅니다.

자습서 데모 1 - 자동 추론 검사의 정책 생성

자동 추론 정책을 테스트하고 사용하려면 적절한 권한이 있는지 확인합니다.

콘솔에서 자동 추론 정책 생성

  1. 왼쪽 탐색에서 자동 추론을 선택한 다음 정책 만들기를 선택합니다.

  2. 정책의 이름을 입력합니다.

  3. (선택 사항) 정책에 대한 설명을 입력합니다.

  4. 소스의 경우 지식 도메인의 규칙과 정책을 설명하는 문서를 제공해야 합니다. 이 문서에는 자동 추론이 검증할 비즈니스 규칙, 정책 또는 지침이 포함되어야 합니다. 예를 들어 직원 혜택 자격을 정의하는 HR 정책 문서, 규제 요구 사항을 설명하는 규정 준수 설명서 또는 시스템 제약 조건을 설명하는 기술 사양을 업로드할 수 있습니다. 자동 추론은 이러한 콘텐츠에서 공식 로직 규칙을 추출하므로 문서를 포괄적이고 명확하게 작성해야 합니다.

    참고

    모범 사례: 복잡한 정책의 경우 콘텐츠를 요약 가능한 청크로 분할하고 새 콘텐츠를 점진적으로 정책으로 가져와 더 복잡하게 만드는 것이 좋습니다. 규칙의 중점 하위 집합으로 시작하여 정책을 철저히 생성 및 테스트한 다음 후속 반복에서 점진적으로 더 많은 콘텐츠를 추가합니다. 이 접근 방식을 사용하면 문제를 조기에 식별하고 해결할 수 있으며, 각 추가가 기존 규칙과 올바르게 작동하도록 하고 문제 발생 시 더 쉽게 해결할 수 있습니다.

    해결 방법:

    1. 수집 메서드에서 다음 중 하나를 수행합니다.

      1. 문서 업로드를 선택한 다음 파일 선택을 선택합니다. 정책의 기반으로 사용할 소스 콘텐츠의 PDF 문서를 업로드합니다.

      2. 텍스트 입력을 선택합니다. 정책의 기반으로 사용할 소스 콘텐츠를 붙여넣거나 입력합니다.

    2. (권장) 지침에서 소스 문서를 처리하는 방법에 대한 추가 정보를 지정합니다. 선택 사항이지만, 정책을 사용하는 방법과 문서의 어떤 부분에 초점을 맞추거나 무시할지에 대한 정보를 제공하면 로직 추출 프로세스에 도움이 됩니다.

      참고

      지침은 정책이 검증할 질문 유형을 설명하고, 입력 문서의 구조를 설명하고, 사용자가 질문할 유형의 예를 제공해야 합니다. 예: "이 정책은 휴가 자격에 대한 HR 질문을 검증합니다. 문서에는 다양한 휴가 유형에 대한 섹션이 있습니다. 사용자는 '9개월 동안 근무한 경우 육아 휴가 자격이 있습니까?’와 같은 질문을 합니다.”

  5. (선택 사항) 태그에서 새 태그 추가를 선택하여 정책에 태그를 추가합니다. 태그는 AWS 리소스 관리, 필터링 및 검색에 도움이 됩니다.

  6. (선택 사항) 암호화에서 정책을 암호화할 KMS 키를 선택합니다. 기본 서비스 소유 키를 사용하거나 계정에서 고객 관리형 키를 선택할 수 있습니다.

  7. 정책 생성을 선택합니다.

API를 사용하여 자동 추론 정책 생성

자동 추론 정책은 Amazon 리소스 이름(ARN)을 사용하여 참조할 수 있는 AWS 계정의 리소스입니다. 자동 추론 정책은 정책 정의 및 정책 버전을 생성하는 빌드 워크플로를 위한 컨테이너입니다. 정책 정의는 변수 스키마와 변수에서 작동하는 규칙 세트로 구성됩니다. 정책 버전은 기본 초안 버전의 변경 불가능한 스냅샷입니다. 자동 추론 정책에는 최대 2개의 빌드 워크플로가 있을 수 있습니다. 각 빌드 워크플로는 정책 정의, 정책 정의에 대한 품질 보고서, 빌드 로그의 세 가지 자산을 출력합니다.

자동 추론 정책에는 CreateAutomatedReasoningPolicyVersion API 작업을 호출하여 생성된 정의의 번호가 매겨지고 변경 불가능한 버전이 포함될 수 있습니다. 자동 추론 정책은 AWS 콘솔에 “초안 작성”으로 DRAFT 표시되는 라는 특수 버전을 지원합니다.

새 정책을 생성하려면 첫 번째 단계는 CreateAutomatedReasoningPolicy API를 사용하여 정책 리소스를 생성하는 것입니다. 그런 다음 새 정책 Amazon 리소스 이름(ARN)을 사용하여를 호출StartAutomatedReasoningPolicyBuildWorkflow하여 문서의 정책 빌드를 변수 및 규칙 스키마로 채울 수 있습니다.

자동 추론 정책 요청 파라미터 생성

자동 추론 정책을 생성할 때 다음 파라미터는 필수 또는 선택 사항입니다.

name(필수)

자동 추론 정책의 이름입니다. 이 이름은 AWS 계정과 리전 내에서 고유한 이름이어야 합니다.

description(선택 사항)

자동 추론 정책에 대한 설명입니다. 이를 사용하여 정책의 목적과 정책이 수행하는 검증 유형에 대한 컨텍스트를 제공합니다.

clientRequestToken (선택 사항)

작업이 두 번 이상 완료되지 않도록 하는 고유한 대소문자 구분 식별자입니다. 이 토큰이 이전 요청과 일치하면 Amazon Bedrock은 요청을 무시하지만 오류를 반환하지 않습니다.

policyDefinition (선택 사항)

애플리케이션에서 파운데이션 모델 응답을 검증하는 데 사용되는 공식 로직 규칙, 변수 및 사용자 지정 변수 유형을 포함하는 정책 정의입니다.

tags (선택 사항)

자동 추론 정책과 연결할 태그 목록입니다. 태그를 사용하면 정책을 구성하고 관리할 수 있습니다.

kmsKeyId (선택 사항)

자동 추론 정책을 암호화하기 위한 KMS 키 식별자입니다. 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN을 사용할 수 있습니다. KMS 키를 지정하지 않으면 Amazon Bedrock은 서비스 소유 키를 사용하여 정책을 암호화합니다.

자동 추론 정책 응답 요소 생성

API는 다음 정보를 반환합니다.

policyArn

생성한 자동 추론 정책의 Amazon 리소스 이름(ARN)입니다.

version

자동 추론 정책의 버전입니다. 초기 버전은 DRAFT입니다.

name

자동 추론 정책의 이름입니다.

예제

다음 예제에서는 AWS CLI를 사용하여 자동 추론 정책을 생성하는 방법을 보여줍니다.

aws bedrock create-automated-reasoning-policy \ --name "DeleteMe" \ --kms-key-id arn:aws:kms:us-east-1:111122223333:key/12345678-1234-1234-1234-123456789012

응답 예제:

{ "createdAt": "2025-07-21T14:43:52.692Z", "definitionHash": "f16ba1ceca36e1d21adce559481add6a4998b79ae203d933fd0206a28d5c2896513dd62f57b293cba282441269a72063b1d9da02fcf2b421e9bf8495ff8c87af", "name": "DeleteMe", "policyArn": "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk",, "updatedAt": "2025-07-21T14:43:52.692Z", "version": "DRAFT" }

자동 추론 정책 빌드 워크플로 요청 파라미터 시작

자동 추론 정책에 대한 빌드 워크플로를 시작할 때 다음 파라미터는 필수 또는 선택 사항입니다.

policyArn(필수)

이전 단계에서 생성된 자동 추론 정책 리소스의 Amazon 리소스 이름(ARN)입니다.

buildWorkflowType(필수)

시작 중인 워크플로의 유형입니다. 옵션은 INGEST_CONTENT, REFINE_POLICY또는 입니다IMPORT_POLICY. 문서 또는 텍스트에서 새 정책 정의를 생성하려면를 사용합니다INGEST_CONTENT.

sourceContent(필수)

변수 및 규칙을 추출하는 데 사용되는 소스 파일입니다.

clientRequestToken (선택 사항)

작업이 두 번 이상 완료되지 않도록 하는 고유한 대소문자 구분 식별자입니다. 이 토큰이 이전 요청과 일치하면 Amazon Bedrock은 요청을 무시하지만 오류를 반환하지 않습니다.

자동 추론 정책 응답 요소 생성

API는 다음 정보를 반환합니다.

policyArn

생성한 자동 추론 정책의 Amazon 리소스 이름(ARN)입니다.

buildWorkflowId

새 빌드 워크플로의 고유 식별자입니다.

예제

다음 예제에서는를 사용하여 가져오기 워크플로를 시작하는 방법을 보여줍니다AWS CLI. 예를 들어 특정 변수 집합을 예상하는 애플리케이션이 이미 있는 경우 선택적 policyDefinition 속성을 사용하여 시작 변수 스키마 또는 규칙 집합을 지정할 수 있습니다.

# Step 1: Encode PDF to base64 (remove newlines) PDF_BASE64=$(base64 -i your-policy.pdf | tr -d '\n') # Step 2: Create policy from base64-encoded content aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk \ --build-workflow-type INGEST_CONTENT \ --source-content "{ \"policyDefinition\": { \"version\": \"1.0\", \"types\": [], \"rules\": [], \"variables\": [] }, \"workflowContent\": { \"documents\": [ { \"document\": \"$PDF_BASE64\", \"documentContentType\": \"pdf\", \"documentName\": \"Company Policy Document\", \"documentDescription\": \"I'm building a chatbot that answers user questions about my leave of absence HR policy, capture rules and variables that help users determine whether they are eligible for leave of absence.\" } ] } }"

응답 예제:

{ "policyArn": "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk", "buildWorkflowId": "d40fa7fc-351e-47d8-a338-53e4b3b1c690" }

문서 수집 워크플로를 시작한 후 ListAutomatedReasoningPolicyBuildWorkflows를 사용하여 정책 ARN으로 가져오기 워크플로의 상태를 확인할 수 있습니다.

aws bedrock list-automated-reasoning-policy-build-workflows \ --policy-arn arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk

자동 추론 정책에 대한 KMS 권한

고객 관리형 KMS 키를 지정하여 자동 추론 정책을 암호화하는 경우 Amazon Bedrock이 사용자를 대신하여 키를 사용하도록 허용하는 권한을 구성해야 합니다.

키 정책 권한

Amazon Bedrock이 자동 추론 정책에 키를 사용할 수 있도록 KMS 키 정책에 다음 문을 추가합니다.

{ "Sid": "PermissionsForAutomatedReasoningPolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/role" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:bedrock:automated-reasoning-policy": [ "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id", "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id:*" ], "kms:ViaService": "bedrock.us-east-1.amazonaws.com" } } }

IAM 권한

자동 추론 정책과 함께 고객 관리형 KMS 키를 사용하려면 IAM 보안 주체에 다음 권한이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSForAutomatedReasoningPolicy", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:bedrock:automated-reasoning-policy": [ "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id", "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/policy-id:*" ], "kms:ViaService": "bedrock.us-east-1.amazonaws.com" } } } ] }

암호화 컨텍스트

Amazon Bedrock은 암호화 컨텍스트를 사용하여 자동 추론 정책에 대한 추가 보안을 제공합니다. 암호화 컨텍스트는 Amazon Bedrock이 정책을 암호화하고 해독할 때 추가 인증 데이터로 사용하는 키-값 쌍 세트입니다.

자동 추론 정책의 경우 Amazon Bedrock은 다음 암호화 컨텍스트를 사용합니다.

  • : aws:bedrock:automated-reasoning-policy

  • 값: 자동 추론 정책의 Amazon 리소스 이름(ARN)입니다.

자동 추론 정책 세부 정보 보기

정책을 생성한 후 정책의 정의 페이지에서 변환된 로직 및 변수를 볼 수 있습니다.

정책 생성 모범 사례

올바른 자동 추론 정책은 애플리케이션의 콘텐츠를 검증하는 데 필요한 모든 정보를 캡처합니다. 상위 수준에서 LLM의 답변이 유효하고 완전하다고 판단되면 정책은 VALID의 검증 결과를 반환해야 합니다.

사용자 의도를 캡처하고 영향(=>)을 사용하여 관계를 구조화하는 변수 생성

부울 변수를 사용하여 "이 양식을 제출할 수 있나요" 또는 "이 결제 규정을 준수하나요"와 같이 사용자가 추진하고 있는 결론을 캡처한 다음 변수를 사용하여 ‘추론적 양식’을 따르는 규칙을 생성합니다. 정책을 생성하는 동안 콘텐츠 설명 필드를 사용하여 사용자가 질문하거나 이러한 변수가 무엇인지에 대한 직접적인 지침을 제공하는 질문 유형의 예를 제공할 수 있습니다.

예:

✓ Good: (=> isPaymentCompliant (<= paymentAmount 10000)) ✗ Poor: (<= paymentAmount 10000)

비배타적 상태의 경우 열거형 대신 부울 사용

상호 배타적인 열거형 값이 아닌 별도의 부울 변수로 공존할 수 있는 특성을 나타냅니다. 이렇게 하면 여러 조건을 동시에 적용할 수 있을 때 논리적 모순을 방지할 수 있습니다. 예를 들어 사용자는 재향 군인과 교사일 수 있습니다. 두 부울 변수를 모두 true로 설정할 수 있습니다. 열거형 값을 사용하여 customerType을 TEACHER로 설정하고 customerType을 VETERAN으로 설정하면 변수가 단일 값만 가질 수 있기 때문에 모순이 발생합니다.

예:

✓ Good: isTeacher, isVeteran ✗ Poor: customerType = {TEACHER, VETERAN, OTHER}

변수 설명에서 명시적으로 단위 및 형식 지정

설명에 모든 숫자 값의 단위와 형식을 명확하게 문서화합니다. 이렇게 하면 다양한 형식의 텍스트를 해석할 때 분산이 줄어들고 단위 변환 오류를 방지하여 보다 예측 가능한 검증 결과를 얻을 수 있습니다.

:

  • "discountRate: 백분율의 소수 표현(0.15는 15%를 의미)"

  • "refundTimeframeInDays: 환급 요청에 허용되는 일수"

  • "temperatureInCelsius: 섭씨 단위의 정수 값"

숫자 값의 범위 검증

규칙을 사용하여 변수 값이 유효한지 확인합니다. 숫자 변수에 이러한 제약 조건을 설정하면 비감각적 입력으로부터 보호하여 발생할 때 ‘불가’로 강조 표시할 수 있습니다.

예:

✓ Good: (> patientAge 0) ✓ Good: (and (> creditScore 300) (< creditScore 1100))

중간 변수를 사용하여 다양한 수준을 모델링하고 추상화 생성

의미 있는 중간 변수를 사용하여 복잡한 개념을 표현하고 구현 세부 정보에 명시적으로 연결합니다. 명시적 표현식 대신 개념 변수를 사용하면 모듈성이 생성되고 정책 개념에서 특정 결과로의 논리적 흐름이 명확해집니다. 이렇게 하면 명시적 입력이 없는 일반 사례에 대한 검증도 가능합니다. 예: "프리미엄 혜택에는 무료 업그레이드가 포함되나요?"

예:

(=> (or (> membershipDurationYears 10) lifeTimeStatusGranted) hasLifetimeStatus) (= qualifiesForPremiumBenefits (or isPlatinumMember hasLifetimeStatus)) (=> qualifiesForPremiumBenefits freeUpgrade)

범주화 및 주관적 평가에 열거형 사용

숫자 눈금을 사용하는 대신 문제를 분류하거나 주관적 판단을 표현하기 위해 열거형 유형을 정의합니다. 개별 범주를 사용하면 각 심각도에 대해 명확한 정의를 할당할 수 있습니다. 숫자 눈금은 일관된 범주화 수단을 제공하지 않습니다. 변수에 열거형의 값이 없을 수 있는 경우 가능한 값 중 OTHER 또는 NONE을 포함합니다.

예:

type "Severity" with values "CRITICAL", "MAJOR", "MINOR"

로직은 선언적이어야 하며 절차가 아니어야 합니다.

표준 컴퓨터 코드는 지정된 순서로 실행되지만 정책은 지정된 순서로 실행되지 않는 규칙을 지정합니다. 단일 규칙 내에서 if/then/else 로직을 허용하는 규칙 및 변수를 설계합니다. 이 접근 방식을 사용하면 규칙이 분리 상태를 유지하고 규칙 충돌을 방지하는 동시에 정책의 논리적 구조를 명확하게 나타낼 수 있습니다.

예:

✗ Poor: (=> conditionA (= outcome VALUE_1)) ✗ Poor: (=> conditionB (= outcome VALUE_2)) ✓ Good: (=> (and conditionA conditionB) (= outcome VALUE_1)) // A takes precedence when both apply ✓ Good: (=> (and (not conditionA) conditionB) (= outcome VALUE_2)) ✓ Good: (=> (and (not conditionA) (not conditionB)) (= outcome DEFAULT_VALUE))

명확하고 일관된 이름 지정 규칙 사용

변수 이름 지정에 예측 가능한 패턴을 적용하여 가독성과 일관된 해석을 개선합니다.

:

  • 부울 변수: ‘is’ 또는 ‘has’ 접두사 사용

  • 범주형 변수: 실질적인 명사 사용

  • 숫자 변수: 적절한 경우 단위 포함