기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자동 추론 정책 문제 해결 및 구체화
실제 결과가 예상 결과와 일치하지 않는 자동 추론 정책 테스트가 실패하면 문제는 번역(자연어가 잘못된 변수 또는 값에 매핑됨) 또는 규칙(정책 로직이 도메인과 일치하지 않음)에 있습니다. 이 페이지에서는 두 가지 유형의 문제를 모두 진단하고 수정할 수 있는 체계적인 접근 방식을 제공합니다.
문제 해결을 시작하기 전에에 설명된 2단계 검증 프로세스(번역 후 검증)를 이해해야 합니다번역: 자연어에서 공식 로직으로. 이러한 구분은 효율적인 디버깅의 핵심입니다.
참고
자습서 비디오: 다음 자습서를 시청하여 자동 추론 정책을 개선하고 문제를 해결하는 단계별 연습을 살펴봅니다.
워크플로 디버깅
테스트가 실패하면 실제 결과를 사용하여 문제의 유형을 식별하고 관련 섹션으로 이동합니다.
| 실제 결과 | 가능한 원인 | 살펴볼 위치 |
|---|---|---|
TRANSLATION_AMBIGUOUS |
변환 모델은 입력을 해석하는 방법에 동의하지 않았습니다. 일반적으로 겹치는 변수, 모호한 설명 또는 모호한 입력 텍스트로 인해 발생합니다. | 번역 문제 해결 |
NO_TRANSLATIONS |
입력을 정책 변수에 매핑할 수 없습니다. 입력이 주제를 벗어나거나 정책에 언급된 개념에 대한 변수가 누락되었습니다. | 번역 문제 해결 |
TOO_COMPLEX |
입력 또는 정책이 처리 한도를 초과합니다. 종종 비선형 산술 또는 상호 작용 규칙이 너무 많은 정책으로 인해 발생합니다. | 제한 사항 및 고려 사항 |
IMPOSSIBLE |
온프레미스가 서로 모순되거나 정책 자체에 충돌하는 규칙이 포함되어 있습니다. | 불가능한 결과 수정 |
VALID, INVALID또는 SATISFIABLE (예상한 것은 아님) |
먼저 조사 결과에서 번역을 확인합니다. 올바른 변수가 올바른 값으로 할당되면 규칙에서 문제가 발생합니다. 변환이 잘못된 경우 변수 설명에 문제가 있는 것입니다. | 번역 오류: 번역 문제 해결. 잘못된 규칙: 규칙 문제 해결. |
작은 정보
항상 먼저 번역을 확인합니다. 대부분의 경우 수학 검증(2단계)이 정확합니다. 문제는 자연어가 공식 로직(1단계)으로 변환된 방식입니다. 변수 설명 수정은 규칙을 변경하는 것보다 빠르고 위험도가 낮습니다.
번역 문제 해결
번역 문제는 자동 추론 검사가 자연어를 정책의 변수에 안정적으로 매핑할 수 없을 때 발생합니다. 가장 가시적인 증상은 TRANSLATION_AMBIGUOUS 결과이지만 잘못된 변수 또는 값이 할당되면 변환 문제로 인해 잘못된 VALIDINVALID, 또는 SATISFIABLE 결과가 발생할 수도 있습니다.
TRANSLATION_AMBIGUOUS 결과 진단
TRANSLATION_AMBIGUOUS 결과에는 불일치를 이해하는 데 도움이 되는 두 가지 주요 필드가 포함되어 있습니다.
-
options- 경쟁 논리 해석(최대 2개). 각 옵션에는 온프레미스, 클레임 및 신뢰도가 포함된 자체 번역이 포함되어 있습니다. 옵션을 비교하여 번역 모델이 동의하지 않는 부분을 확인합니다. -
differenceScenarios- 모호성의 실제 영향을 강조하는 변수 할당과 함께 다양한 해석의 의미를 보여주는 시나리오(최대 2개)입니다.
이러한 필드를 검토하여 특정 모호성 원인을 식별한 다음 다음 목록에서 적절한 수정 사항을 적용합니다.
겹치는 변수 정의
여러 변수가 동일한 개념을 합리적으로 나타낼 수 있는 경우, 번역 모델은 어떤 변수를 사용할지에 대해 불일치합니다.
증상: TRANSLATION_AMBIGUOUS 결과의는 다른 변수options에 할당된 것과 동일한 개념을 보여줍니다. 예를 들어 한 옵션은에 "2년 서비스"를 할당tenureMonths = 24하고 다른 옵션은에 할당합니다monthsOfService = 24.
수정: 겹치는 변수를 포괄적인 설명과 함께 단일 변수로 병합합니다. 나머지 변수를 사용하도록 삭제된 변수를 참조하는 모든 규칙을 업데이트합니다.
예:
| 이전(중첩) | 이후(병합됨) |
|---|---|
|
|
(규칙을 삭제 |
불완전한 변수 설명
사용자가 일상적인 언어로 개념을 참조하는 방법에 대한 세부 정보가 부족한 변수 설명으로 인해 입력을 올바른 변수에 매핑하기가 어렵습니다.
증상:는 올바른 변수를 options 표시하지만 값이 다르거나 번역은 사용자가 말한 것과 일치하지 않는 값을 할당합니다. 예를 들어 "2년"은 tenureMonths = 2 대신 로 변환됩니다tenureMonths = 24.
수정: 단위 변환 규칙, 동의어 및 대체 문구를 포함하도록 변수 설명을 업데이트합니다. 자세한 지침은 섹션을 참조포괄적인 변수 설명 작성하세요.
예:
| 이전(미완료) | 이후(종합) |
|---|---|
isFullTime: "정규직" |
isFullTime: "직원이 정규직(true)인지 아니면 시간제(false)인지 여부. 사용자가 '정규 근무', '정규 근무' 또는 주당 40시간 이상 근무한다고 언급하면 true로 설정합니다. 사용자가 '파트 타임', '시간 단축' 또는 주당 40시간 미만'으로 언급하면 false로 설정합니다. |
일관되지 않은 값 형식 지정
번역 모호성은 시스템에서 숫자, 날짜 또는 백분율과 같은 값의 형식을 지정하는 방법을 잘 모르는 경우에 발생할 수 있습니다.
증상:는 동일한 변수를 options 표시하지만 값 형식은 다릅니다. 예를 들어 한 옵션은 "5%"를 로 변환interestRate = 5하고 다른 옵션은 로 변환합니다interestRate = 0.05.
수정: 변수 설명을 업데이트하여 예상 형식을 지정하고 변환 규칙을 포함합니다. 변수 설명에서 단위 및 형식 지정을(를) 참조하세요.
모호한 입력 텍스트
입력 자체가 모호한 경우도 있습니다. 여기에는 모호한 대명사, 불분명한 참조 또는 여러 방식으로 해석할 수 있는 문이 포함되어 있습니다.
증상:는 동일한 텍스트에 대한 근본적으로 다른 해석을 options 보여줍니다. 예: "떠날 수 있나요?" 는 모든 직원 유형을 참조할 수 있습니다.
수정: 테스트인 경우 입력을 더 구체적으로 다시 작성합니다. 런타임 시 애플리케이션은 TRANSLATION_AMBIGUOUS 결과를 수신할 때 사용자에게 설명을 요청해야 합니다. 통합 패턴은 섹션을 참조하세요애플리케이션에 자동 추론 검사 통합.
신뢰도 임계값 조정
경계가 모호한 입력에 대한 TRANSLATION_AMBIGUOUS 결과가 표시되면 신뢰도 임계값을 조정할 수 있습니다. 임계값을 낮추면 모델 계약이 적은 번역을 검증으로 진행할 수 있으므로 TRANSLATION_AMBIGUOUS 결과가 줄어들지만 잘못된 번역의 위험이 높아집니다.
중요
임계값 조정은 최후의 수단이어야 합니다. 대부분의 경우 변수 설명을 개선하거나 겹치는 변수를 제거하는 것이 더 나은 해결 방법입니다. 근본 원인을 해결하기 때문입니다. 임계값 작동 방식에 대한 자세한 내용은 섹션을 참조하세요신뢰도 임계값.
규칙 문제 해결
규칙 문제는 변환이 올바르지만 정책 로직이 도메인과 일치하지 않을 때 발생합니다. 올바른 변수가 올바른 값으로 할당되었음을 확인했지만 검증 결과는 여전히 잘못되었습니다.
INVALID 예상 시 VALID 가져오기
정책에는 클레임을 금지하는 규칙이 없습니다. 응답은 도메인 지식과 모순되지만 정책은 이를 허용합니다.
진단: 조사 결과supportingRules에서를 살펴봅니다. 다음은 클레임이 유효함을 증명하는 규칙입니다. 이러한 규칙이 올바른지 또는 규칙이 누락되었는지 확인합니다.
일반적인 원인 및 수정 사항:
-
규칙이 누락되었습니다. 정책에이 조건을 다루는 규칙이 없습니다. 제약 조건을 캡처하는 새 규칙을 추가합니다. 예를 들어 정책에서 모든 정규직 직원에게 육아 휴가를 허용하지만 12개월의 재직 기간이 필요한 경우 다음을 추가합니다.
(=> (and isFullTime (<= tenureMonths 12)) (not eligibleForParentalLeave)) -
규칙이 너무 허용적입니다. 기존 규칙은 예상보다 많은 것을 허용합니다. 규칙을 편집하여 누락된 조건을 추가합니다. 예를 들어를
(=> isFullTime eligibleForParentalLeave)로 변경합니다.(=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave) -
변수가 누락되었습니다. 정책에는 관련 개념을 캡처하는 변수가 없습니다. 변수를 추가하고, 명확한 설명을 작성하고, 변수를 참조하는 규칙을 생성합니다.
VALID 예상 시 INVALID 가져오기
정책에 클레임을 잘못 금지하는 규칙이 있습니다.
진단: 조사 결과contradictingRules에서를 살펴봅니다. 다음은 클레임을 거부하는 규칙입니다. 이러한 규칙이 올바른지 확인합니다.
일반적인 원인 및 수정 사항:
-
규칙이 너무 제한적입니다. 기존 규칙은 유효한 시나리오를 차단합니다. 규칙을 편집하여 조건을 완화하거나 예외를 추가합니다. 예를 들어 규칙에 24개월의 재임 기간이 필요하지만 정책에 12개만 필요한 경우 임계값을 업데이트합니다.
-
규칙이 잘못 추출되었습니다. 자동 추론 검사에서 소스 문서를 잘못 해석했습니다. 의도한 로직과 일치하도록 규칙을 편집하거나 규칙을 삭제하고 올바른 규칙을 수동으로 추가합니다.
VALID가 예상될 때 만족하기
응답은 일부 조건에서는 정확하지만 전부는 아닙니다. 정책에는 응답이 다루지 않는 추가 규칙이 있습니다.
진단: 결과의 claimsTrueScenario 및 claimsFalseScenario를 비교합니다. 이들 간의 차이는 응답이 언급하지 않는 조건을 보여줍니다.
일반적인 원인 및 수정 사항:
-
응답이 불완전합니다. 테스트 출력에는 정책에 필요한 모든 조건이 언급되어 있지 않습니다. 누락된 조건을 포함하도록 테스트 출력을 업데이트하거나 불완전한 응답이 사용 사례에 적합한
SATISFIABLE경우 예상 결과를 로 변경합니다. -
정책에 불필요한 규칙이 있습니다. 이 정책에는이 시나리오와 관련이 없는 조건이 필요합니다. 추가 규칙을 적용해야 하는지 검토하고 적용하지 않으면 제거합니다.
불가능한 결과 수정
IMPOSSIBLE 결과는 온프레미스가 모순되거나 정책 자체에 충돌하는 규칙이 포함되어 있기 때문에 자동 추론 검사가 클레임을 평가할 수 없음을 의미합니다. 두 가지 고유한 원인이 있습니다.
입력의 모순
테스트 입력에는 서로 모순되는 문이 포함되어 있습니다. 예를 들어 "I'm a full-time employee and also part-time"은 isFullTime = true 및를 isFullTime = false 동시에 설정하므로 논리적으로 불가능합니다.
진단: 조사 결과에서 translation 온프레미스를 검사합니다. 모순되는 값이 할당된 변수를 찾습니다.
수정: 테스트인 경우 입력을 다시 작성하여 모순을 제거합니다. 런타임 시 애플리케이션은 사용자에게 입력을 명확히 하도록 요청하여 IMPOSSIBLE 결과를 처리해야 합니다.
정책의 충돌
정책에는 서로 모순되는 규칙이 포함되어 있으므로 자동 추론 검사가 충돌하는 규칙과 관련된 입력에 대한 결론에 도달할 수 없습니다.
진단: 입력이 유효하면(상반되는 온프레미스 없음) 정책에 문제가 있는 것입니다. 결과의 contradictingRules 필드를 확인하여 충돌하는 규칙을 식별합니다. 또한 품질 보고서를 확인합니다( 참조품질 보고서 사용). 충돌하는 규칙에 자동으로 플래그를 지정합니다.
일반적인 원인 및 수정 사항:
-
모순되는 규칙. 두 규칙은 동일한 조건에 대해 반대 결론에 도달합니다. 예를 들어 한 규칙은 정규직 직원에게 휴가 자격이 있다고 하고, 다른 규칙은 첫 해에 정규직 직원에게 어떤 일이 발생하는지 지정하지 않고 첫 해의 직원에게는 자격이 없다고 합니다. 규칙을 명시적 조건의 단일 규칙으로 병합합니다.
(=> (and isFullTime (> tenureMonths 12)) eligibleForLeave) -
베어 어설션. 와 같은 베어 어설션
(= eligibleForLeave true)을 사용하면 입력에서 사용자가 적합하지 않다고 주장할 수 없습니다. 베어 어설션을 영향으로 다시 작성합니다. 영향(=>)을 사용하여 규칙 구성을(를) 참조하세요. -
순환 종속성. 논리적 루프를 생성하는 방식으로 서로 의존하는 규칙입니다. 규칙을 단순화하여 주기를 해제하거나 중간 변수를 사용하여 로직을 명시적으로 만듭니다.
주석을 사용하여 정책 복구
주석은 테스트가 실패할 때 정책에 적용하는 대상 수정입니다. 규칙 및 변수를 수동으로 편집하는 대신 주석을 사용하여 원하는 변경 사항을 설명하고 자동 추론 검사가 이를 적용하도록 할 수 있습니다. 주석은 콘솔과 API를 통해 사용할 수 있습니다.
콘솔에서 주석 적용
-
실패한 테스트를 열고 결과를 검토하여 문제를 이해합니다.
-
테스트 조건을 수정하고(예: 온프레미스 추가 또는 예상 결과 변경) 테스트를 다시 실행합니다. 수정된 테스트가 예상한 결과를 반환하는 경우이 수정을 주석으로 적용할 수 있습니다.
-
주석 적용을 선택합니다. 자동 추론 검사는 피드백에 따라 정책에 변경 사항을 적용하는 빌드 워크플로를 시작합니다.
-
정책 변경 사항 검토 화면에서 정책의 규칙, 변수 및 유형에 대해 제안된 변경 사항을 검토합니다. 그런 다음 변경 사항 수락을 선택합니다.
API를 사용하여 주석 적용
StartAutomatedReasoningPolicyBuildWorkflow API를와 함께 사용하여 프로그래밍 방식으로 주석을 REFINE_POLICY 적용합니다. 주석과 함께 전체 현재 정책 정의를 전달합니다.
주석 유형은 다음과 같습니다.
-
변수 주석:
addVariable,updateVariable,deleteVariable- 누락된 변수를 추가하거나, 설명을 개선하거나, 중복을 제거합니다. -
규칙 주석:
addRule,updateRule,deleteRule,addRuleFromNaturalLanguage- 잘못된 규칙을 수정하거나, 누락된 규칙을 추가하거나, 충돌하는 규칙을 제거합니다.addRuleFromNaturalLanguage를 사용하여 규칙을 일반 영어로 설명하고 자동 추론 검사를 통해 공식 로직으로 변환할 수 있습니다. -
유형 주석:
addType,updateType,deleteType- 사용자 지정 유형( 열거형)을 관리합니다. -
피드백 주석:
updateFromRulesFeedback,updateFromScenarioFeedback- 특정 규칙 또는 시나리오에 대한 자연어 피드백을 제공하고 자동 추론 검사를 통해 필요한 변경 사항을 추론할 수 있습니다.
예: 주석을 사용하여 누락된 변수 및 규칙 추가
aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk" \ --build-workflow-type REFINE_POLICY \ --source-content "{ \"policyDefinition\":EXISTING_POLICY_DEFINITION_JSON, \"workflowContent\": { \"policyRepairAssets\": { \"annotations\": [ { \"addVariable\": { \"name\": \"tenureMonths\", \"type\": \"int\", \"description\": \"The number of complete months the employee has been continuously employed. When users mention years of service, convert to months (for example, 2 years = 24 months).\" } }, { \"addRuleFromNaturalLanguage\": { \"naturalLanguage\": \"If an employee is full-time and has more than 12 months of tenure, then they are eligible for parental leave.\" } } ] } } }"
주석 예제
예제 1: 누락된 재직 기간 요구 사항 수정
문제: 정책은 모든 정규직 직원의 육아 휴가를 승인하지만 소스 문서에는 12개월 이상의 재직 기간이 필요합니다.
| Before | 주석 이후 |
|---|---|
|
규칙:
|
새 변수: 업데이트된 규칙: |
예제 2: TRANSLATION_AMBIGUOUS를 유발하는 중복 변수 수정
문제: 두 변수(tenureMonths 및 monthsOfService)는 동일한 개념을 나타내며 일관되지 않은 번역을 일으킵니다.
주석:
-
deleteVariable(monthsOfService일 때) -
updateVariable사용자가 고용 기간을 참조할 수 있는 모든 방법을 다루는 개선된 설명이tenureMonths포함된 용 . -
updateRule를 참조한 모든 규칙에 대해monthsOfService를 사용하도록 변경합니다tenureMonths.
예제 3: 잘못된 결과를 유발하는 베어 어설션 수정
문제: 규칙(= eligibleForParentalLeave true)은 모든 입력이 사용자가 적합하지 않다고 주장할 수 없도록 하는 베어 어설션입니다.
주석:
-
deleteRule베어 어설션에 대한 입니다. -
addRuleFromNaturalLanguage: “직원이 정규직이고 재직 기간이 12개월 이상인 경우 육아 휴가 자격이 있습니다.”
품질 보고서 사용
품질 보고서는 각 빌드 워크플로 후에 생성되며 테스트 실패를 일으킬 수 있는 정책의 구조적 문제를 식별합니다. 콘솔에서 품질 보고서 문제는 정의 페이지에 경고로 표시됩니다. API를 통해를 GetAutomatedReasoningPolicyBuildWorkflowResultAssets와 함께 사용합니다--asset-type QUALITY_REPORT.
품질 보고서에는 다음 문제가 플래그로 표시됩니다.
충돌하는 규칙
두 개 이상의 규칙이 동일한 조건 집합에 대해 모순되는 결론에 도달합니다. 충돌하는 규칙으로 인해 충돌하는 규칙과 관련된 모든 검증 요청에 IMPOSSIBLE 대해 정책이 반환됩니다.
예: 규칙 A는 (=> isFullTime eligibleForLeave)를 나타내고 규칙 B는를 나타냅니다(=> (<= tenureMonths 6) (not eligibleForLeave)). 재직 기간이 3개월인 정규직 직원의 경우 규칙 A는 자격이 있다고 하고 규칙 B는 자격이 없다고 하는데, 이는 모순입니다.
수정: 규칙을 명시적 조건이 있는 단일 규칙으로 병합합니다(=> (and isFullTime (> tenureMonths 6)) eligibleForLeave). 또는 충돌하는 규칙 중 하나를 잘못 추출한 경우 삭제합니다.
미사용 변수
규칙에서 참조하지 않는 변수입니다. 사용하지 않는 변수는 번역 프로세스에 노이즈를 추가하며 동일한 개념에 대해 유사한 활성 변수와 경쟁할 때 TRANSLATION_AMBIGUOUS 결과를 초래할 수 있습니다.
수정: 향후 반복에서 참조하는 규칙을 추가하려는 경우가 아니면 사용하지 않는 변수를 삭제합니다.
미사용 유형 값
규칙에서 참조하지 않는 사용자 지정 유형( 열거형)의 값입니다. 예를 들어 LeaveType 열거형에 PARENTAL, MEDICAL, BEREAVEMENT 및 PERSONAL 값이 있지만 개인을 참조하는 규칙이 없는 경우 사용되지 않은 것으로 플래그가 지정됩니다.
수정 사항: 사용하지 않는 값을 참조하는 규칙을 추가하거나 열거형에서 제거합니다. 입력에서 개념을 언급하지만 이를 처리하는 규칙이 없는 경우 사용하지 않는 값으로 인해 번역 문제가 발생할 수 있습니다.
연결 해제 규칙 세트
변수를 공유하지 않는 규칙 그룹입니다. 분리된 규칙 세트는 반드시 문제가 되는 것은 아닙니다. 정책은 의도적으로 독립적인 주제(예: 휴가 자격 및 비용 환급)를 포함할 수 있습니다. 그러나 변수에 관련 규칙 간의 연결이 누락되었음을 나타낼 수 있습니다.
조치 시기: 결합 해제 규칙 세트가 관련되어야 하는 경우(예: 둘 다 직원 혜택을 처리하지만 동일한 개념에 다른 변수 이름을 사용함) 겹치는 변수를 병합하여 연결합니다. 규칙 세트가 실제로 독립된 경우 별도의 조치가 필요하지 않습니다.
정책 구체화에 Kiro CLI 사용
Kiro CLI는 정책 문제를 진단하고 수정할 수 있는 대화형 채팅 인터페이스를 제공합니다. 자연어 대화를 통해 정책 정의 및 품질 보고서를 로드하고, 테스트가 실패하는 이유를 설명하고, 변경 사항을 제안하고, 주석을 적용할 수 있습니다.
Kiro CLI는 다음과 같은 경우에 특히 유용합니다.
-
실패에 대한 이해. Kiro CLI에 실패한 테스트를 로드하도록 요청하고 예상 결과를 반환하지 않는 이유를 설명합니다. Kiro CLI는 정책 정의, 테스트 결과 및 품질 보고서를 분석하여 근본 원인을 식별합니다.
-
품질 보고서 문제 해결. Kiro CLI에 품질 보고서를 요약하고 충돌하는 규칙, 미사용 변수 및 중첩되는 변수 설명에 대한 수정 사항을 제안하도록 요청합니다.
-
규칙 변경을 제안합니다. 예상되는 동작을 설명하고 Kiro CLI에 필요한 변수 및 규칙 변경을 제안하도록 요청합니다. 제안을 검토하고 Kiro CLI에 주석으로 적용하도록 지시합니다.
워크플로 예제:
You: The test with ID test-12345 is not returning the expected result. Can you load the test definition and findings, look at the policy definition, and explain why this test is failing? Kiro: [analyzes the test and policy] The test expects VALID but gets INVALID because rule R3 requires 24 months of tenure, while the test input specifies 18 months. The source document says 12 months. Rule R3 appears to have been misextracted. You: Can you suggest changes to fix this? Kiro: I suggest updating rule R3 to change the tenure threshold from 24 to 12 months. Here's the updated rule: ... You: Looks good. Can you use the annotation APIs to submit these changes? Kiro: [applies annotations via the API]
자동 추론 정책과 함께 Kiro CLI를 설정하고 사용하는 방법에 대한 전체 지침은 섹션을 참조하세요자동 추론 정책과 함께 Kiro CLI 사용.