

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

# 인적 검토를 위한 Amazon Augmented AI 사용
<a name="a2i-use-augmented-ai-a2i-human-review-loops"></a>

Amazon Rekognition, Amazon Textract, 또는 사용자 지정 기계 학습(ML) 모델과 같은 AI 애플리케이션을 사용할 때 사용자는 Amazon Augmented AI를 사용해 낮은 신뢰도 또는 무작위 예측 표본에 대해 인적 검토를 실시할 수 있습니다.
<a name="what-is-amazon-augmented-ai-a2i"></a>
**Amazon Agmented AI란 무엇인가요?**  
Amazon Augmented AI (Amazon A2I)는 인적 검토 시스템을 구축하거나 많은 수의 검토자를 관리하는 데 따르는 번거로움을 제거함으로써 모든 개발자에게 ML 예측에 대한 인적 검토를 제공하는 서비스입니다.

많은 ML 애플리케이션에서 정확한 결과를 위해 신뢰도가 낮은 예측은 인적 검토가 필요합니다. 예를 들어 스캔한 모기지 신청서 양식에서 정보를 추출하는 경우 낮은 품질의 스캔 이미지나 알아보기 어려운 필기로 인해 인적 검토가 필요할 수 있습니다. 인적 검토 시스템을 빌드하려면 복잡한 프로세스 또는 워크플로를 구현하고, 검토 작업 및 결과를 관리하는 사용자 지정 소프트웨어를 작성하며, 대규모 검토자 그룹을 관리해야 하기 때문에 시간과 비용이 많이 소요될 수 있습니다.**

Amazon A2I는 ML 애플리케이션을 위한 인적 검토 구축 및 관리를 간소화합니다. Amazon A2I는 콘텐츠 조정 및 문서에서 텍스트 추출과 같은 일반적인 ML 사용 사례를 위한 내장형 인적 검토 워크플로를 제공합니다. 또한 SageMaker AI 또는 기타 도구를 기반으로 하는 ML 모델을 위한 자체 워크플로를 만들 수도 있습니다. Amazon A2I를 사용하면 사용자가 모델에서 높은 신뢰도로 예측을 할 수 없을 때 사람인 검토자를 개입시키거나 지속적으로 예측 결과를 감사할 수 있습니다.
<a name="a2i-use-cases-intro"></a>
**Amazon A2I 사용 사례 예제**  
다음 예는 사용자가 Amazon A2I를 사용하여 사람의 검토 루프를 ML 애플리케이션에 통합하는 방법을 보여줍니다. 각 예제에서 사용자는 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)의 해당 워크플로를 보여 주는 Jupyter Notebook을 찾을 수 있습니다.
+ **Amazon Textract와 함께 Amazon A2I 사용** - 한 페이지 문서에서 중요한 키-값 페어를 사람이 검토하도록 하거나 Amazon Textract가 무작위로 문서를 샘플링하여 검토용으로 데이터 세트의 문서를 사람에게 보내도록 합니다.
+ **Amazon Rekognition과 함께 Amazon A2I 사용** - Amazon Rekognition에서 신뢰도가 낮은 점수를 반환하는 경우, 사람이 안전하지 않은 이미지에 성인용 콘텐츠 또는 폭력적인 콘텐츠가 있는지 검토하도록 하거나 Amazon Rekognition에서 무작위로 이미지를 샘플링하여 검토용으로 데이터 세트의 이미지를 사람에게 보내도록 합니다.
+ **Amazon A2I를 사용하여 실시간 ML 추론 검토** - Amazon A2I를 사용하면 SageMaker AI 호스팅 엔드포인트에 배포된 모델에서 수행한 신뢰도가 낮은 실시간 추론을 검토하고 Amazon A2I 출력 데이터를 사용하여 모델을 점진적으로 훈련할 수 있습니다.
+ **Amazon Comprehend와 함께 Amazon A2I 사용** - 감정 분석, 텍스트 구문 및 개체 감지와 같은 텍스트 데이터에 대해 Amazon Comprehend의 추론을 사람이 검토하도록 하세요.
+ **Amazon Transcribe와 함께 Amazon A2I 사용** - 비디오 또는 오디오 파일의 Amazon Transcribe 트랜스크립션을 사람이 검토하도록 하세요. 트랜스크립션 인적 검토 루프의 결과를 사용하여 맞춤형 어휘를 만들고 유사한 비디오 또는 오디오 콘텐츠의 향후 트랜스크립션을 개선할 수 있습니다.
+ **Amazon Translate와 함께 Amazon A2I 사용** - Amazon Translate에서 반환된 신뢰도가 낮은 번역은 사람이 검토하도록 하세요.
+ **Amazon A2I를 사용하여 표 형식 데이터 검토** - Amazon A2I를 사용하면 인적 검토 루프를 표 형식 데이터를 사용하는 ML 애플리케이션에 통합할 수 있습니다.

![\[Amazon Augmented AI - 작동 방식\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/amazon-augmented-ai-how-it-works.png)


**Topics**
+ [Amazon Augmented AI 시작하기](a2i-getting-started.md)
+ [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)
+ [인적 검토 워크플로 생성](a2i-create-flow-definition.md)
+ [인적 검토 워크플로 삭제](a2i-delete-flow-definition.md)
+ [인적 루프 생성 및 시작](a2i-start-human-loop.md)
+ [인적 루프 삭제](a2i-delete-human-loop.md)
+ [작업자 태스크 템플릿 생성 및 관리](a2i-instructions-overview.md)
+ [인적 루프 모니터링 및 관리](a2i-monitor-humanloop-results.md)
+ [Amazon A2I 출력 데이터](a2i-output-data.md)
+ [Amazon Augmented AI의 권한 및 보안](a2i-permissions-security.md)
+ [Amazon Augmented AI Amazon CloudWatch Events 에서 사용](a2i-cloudwatch-events.md)
+ [Amazon Augmented AI에서 API 사용](a2i-api-references.md)

# Amazon Augmented AI 시작하기
<a name="a2i-getting-started"></a>

Amazon Augmented AI 사용을 시작하려면 [Amazon A2I의 핵심 구성 요소](a2i-getting-started-core-components.md) 및 [Augmented AI 사용을 위한 사전 조건](a2i-getting-started-prerequisites.md) 섹션을 검토하세요. 그런 다음, 다음 설명서를 사용하여 Amazon A2I 콘솔 및 API를 사용하는 방법을 알아보세요.
+ [자습서: Amazon A2I 콘솔에서 시작하기](a2i-get-started-console.md)
+ [자습서: Amazon A2I API를 사용하여 시작하기](a2i-get-started-api.md)

Jupyter Notebook 자습서를 따라 Amazon A2I API 사용을 시작할 수도 있습니다. 노트북 및 사용 사례 목록은 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md) 섹션을 참조하세요.

# Amazon A2I의 핵심 구성 요소
<a name="a2i-getting-started-core-components"></a>

다음 용어를 검토하여 Amazon A2I의 핵심 구성 요소를 숙지하세요.

## 태스크 유형
<a name="a2i-task-type-get-started"></a>

Amazon A2I를 통합하는 AI/ML 워크플로는 Amazon A2I 태스크 유형을 정의합니다.**

Amazon A2I 가 지원하는 사항:
+ 두 가지 기본 제공 태스크 유형이 있습니다. [Amazon Textract 키-값 쌍 추출](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-textract-task-type.html)과 [Amazon Rekognition 이미지 조절](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-rekognition-task-type.html)입니다.**
+ [사용자 지정 태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-task-types-custom.html): 사용자 지정 태스크 유형을 사용하여 사람의 검토 루프를 모든 기계 학습 워크플로에 통합할 수 있습니다.** 사용자 지정 작업 유형을 사용하여 Amazon A2I를 Amazon Comprehend, Amazon Transcribe 및 Amazon Translate와 같은 다른 AWS 서비스뿐만 아니라 자체 사용자 지정 기계 학습 워크플로와 통합할 수 있습니다. 자세한 내용은 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)를 참조하세요.

다음 표에서 탭을 선택하면 Amazon A2I가 각 태스크 유형에서 어떻게 작동하는지 보여주는 다이어그램을 볼 수 있습니다. 이전 목록의 링크를 사용하여 태스크 유형 페이지를 선택하여 해당 태스크 유형에 대해 자세히 알아보세요.

------
#### [ Amazon Textract – Key-value pair extraction ]

이 이미지는 Amazon Textract을 사용한 Amazon A2I 내장 워크플로를 보여줍니다. 왼쪽에는 Amazon Textract 인적 검토 워크플로를 생성하는 데 필요한 리소스(Amazon S3 버킷, 활성화 조건, 작업자 태스크 템플릿, 작업 팀)가 나와 있습니다. 이러한 리소스는 인적 검토 워크플로 또는 흐름 정의를 생성하는 데 사용됩니다. 화살표는 워크플로에서 다음 단계의 오른쪽을 가리킵니다. 이때 Amazon Textract을 사용하여 인적 검토 워크플로가 있는 인적 루프를 구성합니다. 두 번째 화살표는 이 단계 오른쪽에서 인적 검토 워크플로에 지정된 활성화 조건이 충족되는 단계까지 가리킵니다. 그러면 인적 루프 생성이 시작됩니다. 이미지 오른쪽에는 인적 루프가 세 단계로 묘사되어 있습니다. 1) 작업자 UI와 도구가 생성되어 작업자에게 태스크가 제공되고, 2) 작업자가 입력 데이터를 검토하고, 마지막으로, 3) 결과가 Amazon S3에 저장됩니다.

![\[Amazon Textract을 사용한 Amazon A2I 내장 워크플로\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A21-Components_Textract@2x.png)


------
#### [ Amazon Rekognition – Image moderation ]

이 이미지는 Amazon Rekognition을 사용한 Amazon A2I 내장 워크플로를 보여줍니다. 왼쪽에는 Amazon Rekognition 인적 검토 워크플로를 생성하는 데 필요한 리소스(Amazon S3 버킷, 활성화 조건, 작업자 태스크 템플릿, 작업 팀)가 나와 있습니다. 이러한 리소스는 인적 검토 워크플로 또는 흐름 정의를 생성하는 데 사용됩니다. 화살표는 워크플로에서 다음 단계의 오른쪽을 가리킵니다. 이때 Amazon Rekognition을 사용하여 인적 검토 워크플로가 있는 인적 루프를 구성합니다. 두 번째 화살표는 이 단계 오른쪽에서 인적 검토 워크플로에 지정된 활성화 조건이 충족되는 단계까지 가리킵니다. 그러면 인적 루프 생성이 시작됩니다. 이미지 오른쪽에는 인적 루프가 세 단계로 묘사되어 있습니다. 1) 작업자 UI와 도구가 생성되어 작업자에게 태스크가 제공되고, 2) 작업자가 입력 데이터를 검토하고, 마지막으로, 3) 결과가 Amazon S3에 저장됩니다.

![\[이 이미지는 Amazon Rekognition을 사용한 Amazon A2I 기본 제공 워크플로를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A2I-Components_Rekognition@2x.png)


------
#### [ Custom Task Type ]

다음 이미지는 Amazon A2I 사용자 지정 워크플로를 보여줍니다. 사용자 지정 ML 모델은 예측을 생성하는 데 사용됩니다. 클라이언트 애플리케이션은 사용자 정의 기준을 사용하여 이러한 예측을 필터링하고 사람의 검토가 필요한지를 결정합니다. 사람의 검토가 필요한 경우 이러한 예측은 인적 검토를 위해 Amazon A2I로 전송됩니다. Amazon A2I는 클라이언트 애플리케이션이 액세스할 수 있는 Amazon S3에서 사람이 검토한 결과를 수집합니다. 필터에서 인적 검토가 필요하지 않다고 판단되면 클라이언트 애플리케이션에 직접 예측을 제공할 수 있습니다.

![\[Amazon A2I 사용자 지정 워크플로\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A2I-Components_Custom@2x.png)


------

## 인적 검토 워크플로(흐름 정의)
<a name="a2i-getting-started-human-review-workflow"></a>

인적 검토 워크플로를 사용하여 사람으로 구성된 작업 팀을 지정하고, 작업자 태스크 템플릿을 사용하여 작업자 UI를 설정하고, 작업자가 검토 태스크를 완료하는 방법에 대한 정보를 제공합니다.****

기본 제공 태스크 유형의 경우 인적 검토 워크플로를 사용하여 인적 검토 루프가 시작되는 조건도 식별합니다. 예를 들어, Amazon Rekognition은 기계 학습을 사용하여 이미지 콘텐츠 조절을 수행할 수 있습니다. 인적 검토 워크플로를 사용하면 Amazon Rekognition의 신뢰도가 너무 낮을 경우 콘텐츠 조절 검토를 위해 사람에게 이미지를 전송하도록 지정할 수 있습니다.

인적 검토 워크플로를 사용하여 인적 루프를 여러 개 만들 수 있습니다.

SageMaker AI 콘솔 또는 SageMaker API를 사용하여 흐름 정의를 만들 수 있습니다. 이러한 두 옵션에 대한 추가 정보는 [인적 검토 워크플로 생성](a2i-create-flow-definition.md) 섹션을 참조하세요.

**작업 팀**  
작업 팀은 인적 검토 태스크를 받는 인간 작업자 그룹입니다.**

인적 검토 워크플로를 생성할 때는 단일 작업 팀을 지정합니다.

작업 팀은 [Amazon Mechanical Turk 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management-public.html), [공급업체 관리 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management-vendor.html) 또는 [프라이빗 작업 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private.html) 중에서 선택할 수 있습니다. 프라이빗 작업 인력을 사용하면 여러 작업 팀을 만들 수 있습니다. 각 작업 팀은 여러 인적 검토 워크플로에 사용될 수 있습니다. 인력 및 작업 팀을 생성하는 방법을 알아보려면 [인력](sms-workforce-management.md) 섹션을 참조하세요.

**작업자 태스크 템플릿 및 인적 태스크 UI**  
작업자 태스크 템플릿을 사용하여 인적 검토 태스크를 위한 작업자 UI(인적 태스크 UI)를 만들 수 있습니다.****

작업자 태스크 UI는 문서 또는 이미지와 같은 입력 데이터와 작업자에 대한 지침을 표시합니다. 또한 작업자가 작업을 완료하는 데 사용하는 대화형 도구를 제공합니다.

기본 제공 태스크 유형의 경우 해당 태스크 유형에 제공된 Amazon A2I 작업자 태스크 템플릿을 사용해야 합니다.

## 인적 루프
<a name="a2i-getting-started-human-loop"></a>

인적 루프는 단일 인적 검토 작업을 생성하는 데 사용됩니다.** 각 인적 검토 작업에 대해 단일 데이터 객체를 검토하도록 태스크를 보낼 작업자 수를 선택할 수 있습니다.** 예를 들어 이미지 분류 레이블 지정 작업의 객체당 작업자 수를 `3`으로 설정하면 작업자 3명이 각 입력 이미지를 분류합니다. 객체당 작업자 수를 늘리면 레이블 정확도를 높일 수 있습니다.

인적 루프는 다음과 같이 인적 검토 워크플로를 사용하여 생성됩니다.
+ 기본 제공 태스크 유형의 경우 인적 검토 워크플로에 지정된 조건에 따라 인적 루프 생성 시기가 결정됩니다.
+ 인적 검토 태스크는 인적 검토 워크플로에 지정된 작업 팀으로 전송됩니다.
+ 인적 검토 워크플로에 지정된 작업자 태스크 템플릿은 인적 태스크 UI를 렌더링하는 데 사용됩니다.

**인적 루프는 언제 생성되나요?**

*기본 제공 작업 유형* 중 하나를 사용하면 인적 검토 워크플로에 지정된 조건이 충족되면 해당 AWS 서비스가 사용자를 대신하여 인적 루프를 생성하고 시작합니다. 예를 들면 다음과 같습니다.
+ Amazon Textract와 함께 Augmented AI를 사용하는 경우, `AnalyzeDocument` API 작업을 사용하여 Amazon A2I를 문서 검토 태스크에 통합할 수 있습니다. 인적 루프는 Amazon Textract가 인적 검토 워크플로에서 지정한 조건을 충족하는 키-값 쌍에 대한 추론을 반환할 때마다 생성됩니다.
+ Amazon Rekognition과 함께 Augmented AI를 사용하는 경우, `DetectModerationLabels` API 작업을 사용하여 Amazon A2I를 이미지 조절 태스크에 통합할 수 있습니다. Amazon Rekognition에서 인적 검토 워크플로에 지정된 조건을 충족하는 이미지 콘텐츠에 대한 추론을 반환할 때마다 인적 루프가 생성됩니다.

사용자 지정 태스크 유형을 사용하면 [Amazon Augmented AI 런타임 API](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/Welcome.html)를 사용하여 인적 루프를 시작합니다.** 사용자 지정 애플리케이션에서 `StartHumanLoop`를 호출하면 인적 검토자에게 작업이 전송됩니다.

인적 루프를 생성하고 시작하는 방법은 [인적 루프 생성 및 시작](a2i-start-human-loop.md) 섹션을 참조하세요.

이러한 리소스를 생성하고 인적 검토 워크플로를 생성하기 위해 Amazon A2I에서는 Amazon Augmented AI 런타임 모델, SageMaker API 및 태스크 유형과 연결된 API를 비롯한 여러 API를 통합합니다. 자세한 내용은 [Amazon Augmented AI에서 API 사용](a2i-api-references.md)를 참조하세요.

**참고**  
AWS Amazon Textract와 같은 다른 AWS 서비스와 함께 Augmented AI를 사용하는 경우 리전 가용성이 다를 수 있습니다. 해당 AWS 서비스와 상호 작용하는 데 사용하는 것과 동일한 AWS 리전에 증강 AI 리소스를 생성합니다. 모든 서비스의 AWS 리전 가용성은 [리전 테이블](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)을 참조하세요.

# Augmented AI 사용을 위한 사전 조건
<a name="a2i-getting-started-prerequisites"></a>

Amazon A2I는 IAM, SageMaker AI 및 Amazon S3의 리소스를 사용하여 인적 검토 워크플로를 만들고 실행합니다. 인적 검토 워크플로를 생성할 때 Amazon A2I 콘솔에서 이러한 리소스 중 일부를 생성할 수 있습니다. 자세한 방법은 [자습서: Amazon A2I 콘솔에서 시작하기](a2i-get-started-console.md)을 참조하세요.

Amazon A2I를 사용하려면 다음 리소스가 필요합니다.
+ 입력 및 출력 데이터의 워크플로와 동일한 AWS 리전에 있는 하나 이상의 Amazon S3 버킷입니다. 버킷을 생성하려면 Amazon Simple Storage Service 콘솔 사용 설명서에서 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)의 지침을 따르세요.**
+ 인적 검토 워크플로를 생성하는 데 필요한 권한이 있는 IAM 역할과 Augmented AI에 대한 액세스 권한이 있는 IAM 사용자 또는 역할. 자세한 내용은 [Amazon Augmented AI의 권한 및 보안](a2i-permissions-security.md) 섹션을 참조하세요.
+ 인적 검토 워크플로에 사용할 퍼블릭, 프라이빗 또는 공급업체 작업 인력. 프라이빗 작업 인력을 사용하려는 경우 Amazon A2I 워크플로와 동일한 AWS 리전에서 미리 설정해야 합니다. 이러한 작업 인력 유형에 대한 추가 정보는 [인력](sms-workforce-management.md) 섹션을 참조하세요.
**중요**  
현재 Amazon Augmented AI에 적용되는 규정 준수 프로그램에 대한 자세한 내용은 [규정 준수 프로그램별 범위 내AWS 서비스](https://aws.amazon.com/compliance/services-in-scope/)를 참조하세요. Amazon Augmented AI를 다른 AWS 서비스(예: Amazon Rekognition 및 Amazon Textract)와 함께 사용하는 경우 Amazon Augmented AI는 다른 서비스와 동일한 규정 준수 프로그램의 범위에 속하지 않을 수 있습니다. 서비스에서 고객 데이터를 처리 또는 저장하는 방법과 데이터 환경의 규정 준수에 미치는 영향을 이해하는 것을 포함하여 Amazon Augmented AI를 사용하는 방법에 대한 책임은 사용자에게 있습니다. 워크로드 목표와 목표에 대해 AWS 계정 팀과 논의해야 합니다. 그러면 서비스가 제안된 사용 사례 및 아키텍처에 적합한지 평가하는 데 도움이 될 수 있습니다.

# 자습서: Amazon A2I 콘솔에서 시작하기
<a name="a2i-get-started-console"></a>

다음 자습서에서는 Amazon A2I 콘솔에서 Amazon A2I를 시작하는 방법을 보여줍니다.

이 자습서에서는 Amazon Textract와 함께 Augmented AI를 사용하여 문서를 검토하거나 Amazon Rekognition을 사용하여 이미지 콘텐츠를 검토하는 옵션을 제공합니다.

## 사전 조건
<a name="a2i-getting-started-console-prerequisites"></a>

Amazon A2I 사용을 시작하려면 다음 사전 조건을 완료하세요.
+ 입력 및 출력 데이터의 워크플로와 동일한 AWS 리전에 Amazon S3 버킷을 생성합니다. 예를 들어 us-east-1에 Amazon Textract와 함께 Amazon A2I를 사용하는 경우 us-east-1에 버킷을 생성합니다. 버킷을 생성하려면 Amazon Simple Storage Service 콘솔 사용 설명서에서 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)의 지침을 따르세요.**
+ 다음 중 하나를 수행하세요.
  + Amazon Textract를 사용하여 자습서를 완료하려면 이 이미지를 다운로드하여 Amazon S3 버킷에 저장하세요.  
![\[간단한 고용 지원서\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/getting-started/sample-document-final.png)
  + Amazon Rekognition을 사용하여 자습서를 완료하려면 이 이미지를 다운로드하여 Amazon S3 버킷에 저장하세요.  
![\[해변에서 요가를 하는 비키니의 여성\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/getting-started/yoga_swimwear_resized.jpg)

**참고**  
Amazon A2I 콘솔은 SageMaker AI 콘솔에 임베딩되어 있습니다.

## 1단계: 작업 팀 생성
<a name="a2i-get-started-console-step-1"></a>

먼저 Amazon A2I 콘솔에서 작업 팀을 만들고 자신을 작업자로 추가하여 작업자 검토 태스크를 미리 볼 수 있도록 합니다.

**중요**  
이 자습서에서는 프라이빗 작업 팀을 사용합니다. Amazon A2I 프라이빗 작업 인력은 SageMaker AI 콘솔의 Ground Truth 영역에 구성되어 있으며 Amazon A2I와 Ground Truth 간에 공유됩니다.

**작업자 이메일을 사용하여 프라이빗 작업 인력을 생성하려면**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔을 엽니다.

1. 탐색 창에서 **Ground Truth**에 있는 **레이블 지정 인력**을 선택합니다.

1. **프라이빗**을 선택한 다음 **Create private team(프라이빗 팀 생성)**을 선택합니다.

1. **Invite new workers by email(이메일로 새 작업자 초대)**을 선택합니다.

1. 이 자습서에서는 인적 태스크 UI를 미리 볼 수 있도록 이메일을 비롯한 기타 내용을 입력하세요. 최대 50개의 이메일 주소(쉼표로 구분)의 목록을 이메일 주소 상자에 붙여 넣거나 입력할 수 있습니다.

1. 조직 이름과 연락처 이메일을 입력합니다.

1. 선택에 따라 팀에서 구독할 Amazon SNS 주제를 선택하여 새 Ground Truth 레이블 지정 작업을 사용할 수 있을 때 작업자에게 이메일로 알립니다. Amazon SNS 알림은 Ground Truth에서 지원되지만 Augmented AI에서는 지원되지 않습니다. 작업자가 Amazon SNS 알림을 구독하는 경우 작업자는 Ground Truth 레이블 지정 작업에 대한 알림만 받습니다. Augmented AI 작업에 대한 알림은 받지 않습니다.

1.  **Create private team(프라이빗 팀 생성)**을 선택합니다.

프라이빗 작업 팀에 자신을 추가하면 `no-reply@verificationemail.com`으로부터 로그인 정보가 포함된 이메일을 받게 됩니다. 이 이메일에 있는 링크를 사용하여 암호를 재설정하고 작업자 포털에 로그인합니다. 인적 루프를 만들 때 인적 검토 작업이 표시되는 곳입니다.

## 2단계: 인적 검토 워크플로 생성
<a name="a2i-get-started-console-step-2"></a>

이 단계에서는 인적 검토 워크플로를 생성합니다. 각 인적 검토 워크플로는 특정 [태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-task-types-general.html)에 맞게 생성됩니다. 이 자습서에서는 기본 제공 태스크 유형인 Amazon Rekognition과 Amazon Textract를 선택할 수 있습니다.

**인적 검토 워크플로를 생성하는 방법**

1. [https://console.aws.amazon.com/a2i](https://console.aws.amazon.com/a2i/)에서 Augmented AI 콘솔을 열어 **인적 검토 워크플로** 페이지에 액세스합니다.

1. **인적 검토 워크플로 생성**을 선택합니다.

1. **워크플로 설정**에서 AWS 관리형 정책이 `AmazonAugmentedAIIntegratedAPIAccess` 연결된 상태로 워크플로 **이름**, **S3 버킷** 및이 자습서를 위해 생성한 **IAM 역할을** 입력합니다.

1. **태스크 유형**에서 **Textract - 키-값 쌍 추출** 또는 **Rekognition- 이미지 조절**을 선택합니다.

1. 다음 표에서 선택한 태스크 유형을 선택하여 해당 태스크 유형에 대한 지침을 확인합니다.

------
#### [ Amazon Textract – Key-value pair extraction ]

   1. **양식 키 신뢰도 점수를 기반으로 또는 특정 양식 키가 누락되었을 때 특정 양식 키에 대한 인적 검토 트리거**를 선택합니다.

   2. **키 이름**에 `Mail Address`를 입력합니다.

   3. 식별 신뢰도 임곗값을 `0`\$1`99`로 설정합니다.

   4. 검증 신뢰도 임곗값을 `0`\$1`99`로 설정합니다.

   5. **Amazon Textract에서 신뢰도 점수가 지정된 범위에 속하는 것으로 식별된 모든 양식 키에 대한 인적 검토 트리거**를 선택합니다.

   6. 식별 신뢰도 임곗값을 `0`\$1`90`로 설정합니다.

   7. 검증 신뢰도 임곗값을 `0`\$1`90`로 설정합니다.

   그러면 Amazon Textract가 `Mail Address` 및 키에 대해 `99` 미만의 신뢰도 점수를 반환하거나 문서에서 탐지된 키 값 쌍에 대해 `90` 미만의 신뢰도 점수를 반환하는 경우 인적 검토가 트리거됩니다.

   다음 이미지는 Amazon A2I 콘솔의 Amazon Textract 양식 추출 - 인적 검토를 호출하기 위한 조건 섹션을 보여줍니다. 이미지에서는 앞 단락에 설명된 두 가지 유형의 트리거 확인란이 선택되어 있으며 첫 번째 트리거의 **키 이름**으로 `Mail Address`가 사용됩니다. 식별 신뢰도 임곗값은 양식 내에서 탐지된 키-값 쌍에 대한 신뢰도 점수를 사용하여 정의되며 0에서 99 사이로 설정됩니다. 검증 신뢰도 임곗값은 양식 내의 키 및 값에 포함된 텍스트에 대한 신뢰도 점수를 사용하여 정의되며 0에서 99 사이로 설정됩니다.

![\[인적 검토 섹션 호출 조건을 보여주는 Amazon A2I 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/getting-started/Textract-conditions.png)


------
#### [ Amazon Rekognition – Image moderation ]

   1. **레이블 신뢰도 점수를 기반으로 Amazon Rekognition에서 식별된 레이블에 대한 인적 검토 트리거**를 선택합니다.

   2. **임곗값**을 `0`\$1`98`로 설정합니다.

   Amazon Rekognition에서 이미지 조절 작업에 `98` 미만의 신뢰도 점수를 반환하는 경우 인적 검토가 시작됩니다.

   다음 이미지는 Amazon A2I 콘솔에서 **레이블 신뢰도 점수를 기반으로 Amazon Rekognition에서 식별된 레이블에 대한 인적 검토 트리거** 옵션을 선택하고 0에서 98 사이의 **임곗값**을 입력하는 방법을 보여줍니다.

![\[인적 검토 섹션 호출 조건을 보여주는 Amazon A2I 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/getting-started/Rek-conditions.png)


------

1. **작업자 태스크 템플릿 생성**에서 **기본 템플릿에서 생성**을 선택합니다.

1. **템플릿 이름**을 입력합니다.

1. **작업 설명** 필드에 다음 텍스트를 입력합니다.

   `Read the instructions carefully and complete the task.`

1. **작업자**에서 **프라이빗**을 선택합니다.

1. 생성한 프라이빗 팀을 선택합니다.

1. **생성(Create)**을 선택합니다.

인적 검토 워크플로가 생성되면 **인적 검토 워크플로** 페이지의 테이블에 표시됩니다. **상태**가 `Active`이면 워크플로 ARN을 복사하여 저장합니다. 이 정보는 다음 단계에 필요합니다.

## 3단계: 인적 루프 시작
<a name="a2i-get-started-console-step-3"></a>

인적 루프를 시작하려면 API 작업을 사용해야 합니다. 이러한 API 작업과 상호 작용하는 데 사용할 수 있는 다양한 언어별 SDK가 있습니다. 각 SDK에 대한 설명서를 보려면 다음 이미지에 표시된 대로 API 설명서의 **참고 항목** 섹션을 참조하세요.

![\[Amazon Textract API 설명서의 참조 섹션 스크린샷\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/getting-started/see-also.png)


이 자습서에서는 다음 API 중 하나를 사용합니다.
+ Amazon Textract 태스크 유형을 선택한 경우 `[AnalyzeDocument](https://docs.aws.amazon.com/textract/latest/dg/API_AnalyzeDocument.html)` 작업을 사용합니다.
+ Amazon Rekognition 태스크 유형을 선택한 경우 `[DetectModerationLabels](https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectModerationLabels.html)` 작업을 사용합니다.

SageMaker 노트북 인스턴스(신규 사용자에게 권장) 또는 AWS Command Line Interface ()를 사용하여 이러한 APIs와 상호 작용할 수 있습니다AWS CLI. 다음 중 하나를 선택하여 옵션에 대해 자세히 알아보세요.
+ 노트북 인스턴스에 대해 자세히 알아보고 설정하려면 [Amazon SageMaker 노트북 인스턴스](nbi.md) 섹션을 참조하세요.
+ 에 대해 자세히 알아보고 사용을 시작하려면 *AWS Command Line Interface 사용 설명서*[의 AWS 명령줄 인터페이스란 무엇입니까?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)를 AWS CLI참조하세요.

다음 테이블에서 태스크 유형을 선택하면 AWS SDK for Python (Boto3)을 사용하는 Amazon Textract와 Amazon Rekognition에 대한 요청 예시를 볼 수 있습니다.

------
#### [ Amazon Textract – Key-value pair extraction ]

다음 예제에서는를 사용하여 us-west-2`analyze_document`에서 AWS SDK for Python (Boto3) 를 호출합니다. 기울임꼴로 표시된 빨간색 텍스트를 귀사의 리소스로 바꾸세요. Amazon Mechanical Turk 인력을 사용하는 경우 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html) 파라미터를 포함하세요. 추가 정보는AWS SDK for Python (Boto) API 참조의 `[analyze\$1document](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/textract.html#Textract.Client.analyze_document)` 설명서를 참조하세요.**

```
   response = client.analyze_document(
         Document={
                "S3Object": {
                    "Bucket": "amzn-s3-demo-bucket", 
                    "Name": "document-name.pdf"
                }
         },
         HumanLoopConfig={
            "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
            "HumanLoopName":"human-loop-name",
            "DataAttributes" : {
                "ContentClassifiers":["FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent"]
            }
         },
         FeatureTypes=["TABLES", "FORMS"])
```

------
#### [ Amazon Rekognition – Image moderation ]

다음 예제에서는를 사용하여 us-west-2`detect_moderation_labels`에서 AWS SDK for Python (Boto3) 를 호출합니다. 기울임꼴로 표시된 빨간색 텍스트를 귀사의 리소스로 바꾸세요. Amazon Mechanical Turk 인력을 사용하는 경우 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html) 파라미터를 포함하세요. 추가 정보는AWS SDK for Python (Boto) API 참조의 `[detect\$1moderation\$1labels](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_moderation_labels)` 설명서를 참조하세요.**

```
   response = client.detect_moderation_labels(
            Image={
                "S3Object":{
                    "Bucket": "amzn-s3-demo-bucket", 
                    "Name": "image-name.png"
                }
            },
            HumanLoopConfig={
               "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
               "HumanLoopName":"human-loop-name",
               "DataAttributes":{
                    ContentClassifiers:["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]
                }
             })
```

------

## 4단계: 콘솔에서 인적 루프 상태 보기
<a name="a2i-get-started-console-step-4"></a>

인적 루프를 시작하면 Amazon A2I 콘솔에서 상태를 볼 수 있습니다.

**인적 루프 상태를 보는 방법**

1. [https://console.aws.amazon.com/a2i](https://console.aws.amazon.com/a2i/)에서 Augmented AI 콘솔을 열어 **인적 검토 워크플로** 페이지에 액세스합니다.

1. 인적 루프를 시작하는 데 사용한 인적 검토 워크플로를 선택합니다.

1. **인적 루프** 섹션에서 인적 루프를 볼 수 있습니다. **상태** 열에서 상태를 확인합니다.

## 5단계: 출력 데이터 다운로드
<a name="a2i-get-started-console-step-5"></a>

출력 데이터는 인적 검토 워크플로를 생성할 때 지정한 Amazon S3 버킷에 저장됩니다.

**Amazon A2I 출력 데이터를 보는 방법**

1. [Amazon S3 콘솔](https://console.aws.amazon.com/s3/)을 엽니다.

1. 이 예제의 2단계에서 인적 검토 워크플로를 생성할 때 지정한 Amazon S3 버킷을 선택합니다.

1. 인적 검토 워크플로에 따라 이름이 지정된 폴더부터 시작하여 다음 명명 규칙에 따라 폴더를 선택하여 출력 데이터로 이동합니다.

   ```
   s3://output-bucket-specified-in-human-review-workflow/human-review-workflow-name/YYYY/MM/DD/hh/mm/ss/human-loop-name/output.json
   ```

1. `output.json`을 선택하고 **다운로드**를 선택합니다.

# 자습서: Amazon A2I API를 사용하여 시작하기
<a name="a2i-get-started-api"></a>

이 자습서에서는 Amazon A2I 사용을 시작하는 데 사용할 수 있는 API 작업에 대해 설명합니다.

Jupyter Notebook을 사용하여 이러한 작업을 실행하려면 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)에서 Jupyter Notebook을 선택하고 [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](a2i-task-types-general.md#a2i-task-types-notebook-demo)을 사용하여 SageMaker AI 노트북 인스턴스에서 사용하는 방법을 익히세요.

Amazon A2I에서 사용할 수 있는 API 작업에 대한 추가 정보는 [Amazon Augmented AI에서 API 사용](a2i-api-references.md) 섹션을 참조하세요.

## 프라이빗 작업 인력 생성
<a name="a2i-get-started-api-create-work-team"></a>

프라이빗 작업 팀을 만들고 자신을 작업자로 추가하여 Amazon A2I를 미리 볼 수 있습니다.

Amazon Cognito에 익숙하지 않은 경우 SageMaker AI 콘솔을 사용하여 프라이빗 작업 인력을 만들고 자신을 프라이빗 작업자로 추가하는 것이 좋습니다. 지침은 [1단계: 작업 팀 생성](a2i-get-started-console.md#a2i-get-started-console-step-1) 섹션을 참조하세요.

Amazon Cognito에 익숙하다면 다음 지침에 따라 SageMaker API를 사용하여 프라이빗 작업 팀을 만들 수 있습니다. 작업 팀을 만든 후 작업팀 ARN(`WorkteamArn`)을 기록해 둡니다.

프라이빗 작업 인력 및 기타 사용 가능한 구성에 대한 자세한 정보는 [프라이빗 작업 인력](sms-workforce-private.md) 섹션을 참조하세요.

**프라이빗 작업 인력 생성**  
프라이빗 작업 인력을 생성하지 않은 경우 [Amazon Cognito 사용자 풀](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)을 사용하여 생성할 수 있습니다. 이 사용자 풀에 자신을 추가해야 합니다. `[create\$1workforce](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_workforce)` 함수를 사용하여 프라이빗 작업 팀을 생성할 수 있습니다 AWS SDK for Python (Boto3) . 다른 언어별 SDK에 대해서는 [CreateWorkforce](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateWorkforce.html#API_CreateWorkforce_SeeAlso)의 목록을 참조하세요.

```
    
    response = client.create_workforce(
        CognitoConfig={
            "UserPool": "Pool_ID",
            "ClientId": "app-client-id"
        },
        WorkforceName="workforce-name"
    )
```

**프라이빗 작업 팀 생성**  
 AWS 리전에 프라이빗 작업 인력을 생성하여 인적 루프를 구성하고 시작한 후에는 AWS SDK for Python (Boto3) `[create\$1workteam](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_workteam)` 함수를 사용하여 프라이빗 작업 팀을 생성할 수 있습니다. 다른 언어별 SDK는 `[CreateWorkteam](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateWorkteam.html#API_CreateWorkteam_SeeAlso)`의 목록을 참조하세요.

```
    response = client.create_workteam(
        WorkteamName="work-team-name",
        WorkforceName= "workforce-name",
        MemberDefinitions=[
            {
                "CognitoMemberDefinition": {
                    "UserPool": "<aws-region>_ID",
                    "UserGroup": "user-group",
                    "ClientId": "app-client-id"
                },
            }
        ]
    )
```

다음과 같이 작업 팀 ARN에 액세스하세요.

```
    workteamArn = response["WorkteamArn"]
```

**계정의 프라이빗 작업 팀을 나열하세요.**  
프라이빗 작업 팀을 이미 생성한 경우 함수를 사용하여 계정의 지정된 AWS 리전에 있는 모든 작업 팀을 나열할 AWS SDK for Python (Boto3) `[list\$1workteams](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.list_workteams)` 수 있습니다. 다른 언어별 SDK는 `[ListWorkteams](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListWorkteams.html#API_ListWorkteams_SeeAlso)`의 목록을 참조하세요.

```
    response = client.list_workteams()
```

계정에 작업 팀이 많으면 `MaxResults`, `SortBy` 및 `NameContains`를 사용하여 결과를 필터링하는 것이 좋습니다.

## 인적 검토 워크플로 생성
<a name="a2i-get-started-api-create-human-review-workflow"></a>

Amazon A2I `[CreateFlowDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html)` 작업을 사용하여 인적 검토 워크플로를 생성할 수 있습니다. 인적 검토 워크플로를 생성하려면 먼저 인적 태스크 UI를 생성해야 합니다. `[CreateHumanTaskUi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html)` 작업을 사용하면 됩니다.

Amazon Textract 또는 Amazon Rekognition 통합과 함께 Amazon A2I를 사용하는 경우 JSON을 사용하여 활성화 조건을 지정할 수 있습니다.

### 인적 태스크 UI 생성
<a name="a2i-get-started-api-worker-task-template"></a>

Amazon Textract 또는 Amazon Rekognition 통합과 함께 사용할 인적 검토 워크플로를 생성하는 경우 미리 만들어진 작업자 태스크 템플릿을 사용하고 수정해야 합니다. 모든 사용자 지정 통합에는 자체 사용자 지정 작업자 태스크 템플릿을 사용할 수 있습니다. 다음 테이블을 참조하여 두 가지 내장된 통합을 위한 작업자 태스크 템플릿을 사용하여 인적 태스크 UI를 만드는 방법을 알아보세요. 템플릿을 자체 템플릿으로 교체하여 이 요청을 사용자 지정하세요.

------
#### [ Amazon Textract – Key-value pair extraction ]

이 템플릿에 대한 자세한 내용은 [Amazon Textract에 사용되는 사용자 지정 템플릿 예제](a2i-custom-templates.md#a2i-custom-templates-textract-sample) 섹션을 참조하세요.

```
template = r"""
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
{% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.document.s3Object.bucket }}/{{ task.input.aiServiceRequest.document.s3Object.name }}{% endcapture %}
<crowd-form>
  <crowd-textract-analyze-document 
      src="{{ s3_uri | grant_read_access }}" 
      initial-value="{{ task.input.selectedAiServiceResponse.blocks }}" 
      header="Review the key-value pairs listed on the right and correct them if they don"t match the following document." 
      no-key-edit="" 
      no-geometry-edit="" 
      keys="{{ task.input.humanLoopContext.importantFormKeys }}" 
      block-types='["KEY_VALUE_SET"]'>
    <short-instructions header="Instructions">
        <p>Click on a key-value block to highlight the corresponding key-value pair in the document.
        </p><p><br></p>
        <p>If it is a valid key-value pair, review the content for the value. If the content is incorrect, correct it.
        </p><p><br></p>
        <p>The text of the value is incorrect, correct it.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/correct-value-text.png">
        </p><p><br></p>
        <p>A wrong value is identified, correct it.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/correct-value.png">
        </p><p><br></p>
        <p>If it is not a valid key-value relationship, choose No.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/not-a-key-value-pair.png">
        </p><p><br></p>
        <p>If you can’t find the key in the document, choose Key not found.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/key-is-not-found.png">
        </p><p><br></p>
        <p>If the content of a field is empty, choose Value is blank.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/value-is-blank.png">
        </p><p><br></p>
        <p><strong>Examples</strong></p>
        <p>Key and value are often displayed next or below to each other.
        </p><p><br></p>
        <p>Key and value displayed in one line.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/sample-key-value-pair-1.png">
        </p><p><br></p>
        <p>Key and value displayed in two lines.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/sample-key-value-pair-2.png">
        </p><p><br></p>
        <p>If the content of the value has multiple lines, enter all the text without line break. 
        Include all value text even if it extends beyond the highlight box.</p>
        <p><img src="https://assets.crowd.aws/images/a2i-console/multiple-lines.png"></p>
    </short-instructions>
    <full-instructions header="Instructions"></full-instructions>
  </crowd-textract-analyze-document>
</crowd-form>
"""
```

------
#### [ Amazon Rekognition – Image moderation ]

이 템플릿에 대한 자세한 내용은 [Amazon Rekognition에 사용되는 사용자 지정 템플릿 예제](a2i-custom-templates.md#a2i-custom-templates-rekognition-sample) 섹션을 참조하세요.

```
template = r"""
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
{% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.image.s3Object.bucket }}/{{ task.input.aiServiceRequest.image.s3Object.name }}{% endcapture %}

<crowd-form>
  <crowd-rekognition-detect-moderation-labels
    categories='[
      {% for label in task.input.selectedAiServiceResponse.moderationLabels %}
        {
          name: "{{ label.name }}",
          parentName: "{{ label.parentName }}",
        },
      {% endfor %}
    ]'
    src="{{ s3_uri | grant_read_access }}"
    header="Review the image and choose all applicable categories."
  >
    <short-instructions header="Instructions">
      <style>
        .instructions {
          white-space: pre-wrap;
        }
      </style>
      <p class="instructions">Review the image and choose all applicable categories.
If no categories apply, choose None.

<b>Nudity</b>
Visuals depicting nude male or female person or persons

<b>Partial Nudity</b>
Visuals depicting covered up nudity, for example using hands or pose

<b>Revealing Clothes</b>
Visuals depicting revealing clothes and poses

<b>Physical Violence</b>
Visuals depicting violent physical assault, such as kicking or punching

<b>Weapon Violence</b>
Visuals depicting violence using weapons like firearms or blades, such as shooting

<b>Weapons</b>
Visuals depicting weapons like firearms and blades
    </short-instructions>

    <full-instructions header="Instructions"></full-instructions>
  </crowd-rekognition-detect-moderation-labels>
</crowd-form>"""
```

------
#### [ Custom Integration ]

다음은 사용자 지정 통합에 사용할 수 있는 예제 템플릿입니다. 이 템플릿은 이 [노트북](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Comprehend%20DetectSentiment.ipynb)에서 사용되며, Amazon Comprehend와의 사용자 지정 통합을 보여줍니다.

```
template = r"""
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>

<crowd-form>
    <crowd-classifier
      name="sentiment"
      categories='["Positive", "Negative", "Neutral", "Mixed"]'
      initial-value="{{ task.input.initialValue }}"
      header="What sentiment does this text convey?"
    >
      <classification-target>
        {{ task.input.taskObject }}
      </classification-target>
      
      <full-instructions header="Sentiment Analysis Instructions">
        <p><strong>Positive</strong> sentiment include: joy, excitement, delight</p>
        <p><strong>Negative</strong> sentiment include: anger, sarcasm, anxiety</p>
        <p><strong>Neutral</strong>: neither positive or negative, such as stating a fact</p>
        <p><strong>Mixed</strong>: when the sentiment is mixed</p>
      </full-instructions>

      <short-instructions>
       Choose the primary sentiment that is expressed by the text. 
      </short-instructions>
    </crowd-classifier>
</crowd-form>
"""
```

------

위에 지정된 템플릿을 사용하여 AWS SDK for Python (Boto3) `[create\$1human\$1task\$1ui](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_human_task_ui)` 함수를 사용하여 템플릿을 생성할 수 있습니다. 다른 언어별 SDK는 `[CreateHumanTaskUi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html#API_CreateHumanTaskUi_SeeAlso)`의 목록을 참조하세요.

```
    
    response = client.create_human_task_ui(
        HumanTaskUiName="human-task-ui-name",
        UiTemplate={
            "Content": template
        }
    )
```

이 응답 요소에는 인적 태스크 UI ARN이 포함되어 있습니다. 다음과 같이 저장합니다.

```
    humanTaskUiArn = response["HumanTaskUiArn"]
```

### JSON을 생성하여 활성화 조건 지정
<a name="a2i-get-started-api-activation-conditions"></a>

Amazon Textract와 Amazon Rekognition 내장 통합의 경우 활성화 조건을 JSON 객체에 저장하여 `CreateFlowDefinition` 요청에 사용할 수 있습니다.

그런 다음 탭을 선택하여 이러한 내장 통합에 사용할 수 있는 예제 활성화 조건을 확인하세요. 활성화 조건 옵션에 대한 추가 정보는 [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md) 섹션을 참조하세요.

------
#### [ Amazon Textract – Key-value pair extraction ]

이 예제에서는 문서의 특정 키(예: `Mail address`)에 대한 조건을 지정합니다. Amazon Textract의 신뢰도가 여기에 설정된 임곗값을 벗어나는 경우, 문서는 인적 검토를 위해 전송되고 인적 루프를 시작한 특정 키가 작업자에게 전달됩니다.

```
      import json  

      humanLoopActivationConditions = json.dumps(
        {
            "Conditions": [
                {
                  "Or": [
                    
                    {
                        "ConditionType": "ImportantFormKeyConfidenceCheck",
                        "ConditionParameters": {
                            "ImportantFormKey": "Mail address",
                            "ImportantFormKeyAliases": ["Mail Address:","Mail address:", "Mailing Add:","Mailing Addresses"],
                            "KeyValueBlockConfidenceLessThan": 100,
                            "WordBlockConfidenceLessThan": 100
                        }
                    },
                    {
                        "ConditionType": "MissingImportantFormKey",
                        "ConditionParameters": {
                            "ImportantFormKey": "Mail address",
                            "ImportantFormKeyAliases": ["Mail Address:","Mail address:","Mailing Add:","Mailing Addresses"]
                        }
                    },
                    {
                        "ConditionType": "ImportantFormKeyConfidenceCheck",
                        "ConditionParameters": {
                            "ImportantFormKey": "Phone Number",
                            "ImportantFormKeyAliases": ["Phone number:", "Phone No.:", "Number:"],
                            "KeyValueBlockConfidenceLessThan": 100,
                            "WordBlockConfidenceLessThan": 100
                        }
                    },
                    {
                      "ConditionType": "ImportantFormKeyConfidenceCheck",
                      "ConditionParameters": {
                        "ImportantFormKey": "*",
                        "KeyValueBlockConfidenceLessThan": 100,
                        "WordBlockConfidenceLessThan": 100
                      }
                    },
                    {
                      "ConditionType": "ImportantFormKeyConfidenceCheck",
                      "ConditionParameters": {
                        "ImportantFormKey": "*",
                        "KeyValueBlockConfidenceGreaterThan": 0,
                        "WordBlockConfidenceGreaterThan": 0
                      }
                    }
            ]
        }
            ]
        }
    )
```

------
#### [ Amazon Rekognition – Image moderation ]

여기에 사용되는 인적 루프 활성화 조건은 Amazon Rekognition 콘텐츠 조절에 맞게 조정되었습니다. 이 조건은 `Suggestive` 및 `Female Swimwear Or Underwear` 조절 레이블의 신뢰도 임곗값을 기반으로 합니다.

```
        import json  

        humanLoopActivationConditions = json.dumps(
        {
            "Conditions": [
                {
                  "Or": [
                    {
                        "ConditionType": "ModerationLabelConfidenceCheck",
                        "ConditionParameters": {
                            "ModerationLabelName": "Suggestive",
                            "ConfidenceLessThan": 98
                        }
                    },
                    {
                        "ConditionType": "ModerationLabelConfidenceCheck",
                        "ConditionParameters": {
                            "ModerationLabelName": "Female Swimwear Or Underwear",
                            "ConfidenceGreaterThan": 98
                        }
                    }
                  ]
               }
            ]
        }
    )
```

------

### 인적 검토 워크플로 생성
<a name="a2i-get-started-api-flow-definition"></a>

이 섹션에서는 이전 섹션에서 생성한 리소스를 사용한 `CreateFlowDefinition` AWS SDK for Python (Boto3) 요청의 예를 제공합니다. 다른 언어별 SDK에 대해서는 [CreateFlowDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html#API_CreateFlowDefinition_SeeAlso)의 목록을 참조하세요. 다음 표의 탭을 사용하여 Amazon Textract와 Amazon Rekognition의 내장 통합을 위한 인적 검토 워크플로를 생성하기 위한 요청을 확인하세요.

------
#### [ Amazon Textract – Key-value pair extraction ]

Amazon Textract와의 내장 통합을 사용하는 경우 `HumanLoopRequestSource`에서 `"AwsManagedHumanLoopRequestSource"`에 대해 `"AWS/Textract/AnalyzeDocument/Forms/V1"`을 지정해야 합니다.

```
    response = client.create_flow_definition(
        FlowDefinitionName="human-review-workflow-name",
        HumanLoopRequestSource={
            "AwsManagedHumanLoopRequestSource": "AWS/Textract/AnalyzeDocument/Forms/V1"
        }, 
        HumanLoopActivationConfig={
            "HumanLoopActivationConditionsConfig": {
                "HumanLoopActivationConditions": humanLoopActivationConditions
            }
        },
        HumanLoopConfig={
            "WorkteamArn": workteamArn,
            "HumanTaskUiArn": humanTaskUiArn,
            "TaskTitle": "Document entry review",
            "TaskDescription": "Review the document and instructions. Complete the task",
            "TaskCount": 1,
            "TaskAvailabilityLifetimeInSeconds": 43200,
            "TaskTimeLimitInSeconds": 3600,
            "TaskKeywords": [
                "document review",
            ],
        },
        OutputConfig={
            "S3OutputPath": "s3://amzn-s3-demo-bucket/prefix/",
        },
        RoleArn="arn:aws:iam::<account-number>:role/<role-name>",
        Tags=[
            {
                "Key": "string",
                "Value": "string"
            },
        ]
    )
```

------
#### [ Amazon Rekognition – Image moderation ]

Amazon Rekognition과의 내장 통합을 사용하는 경우 `HumanLoopRequestSource`에서 `"AwsManagedHumanLoopRequestSource"`에 대해 `"AWS/Rekognition/DetectModerationLabels/Image/V3"`를 지정해야 합니다.

```
    response = client.create_flow_definition(
        FlowDefinitionName="human-review-workflow-name",
        HumanLoopRequestSource={
            "AwsManagedHumanLoopRequestSource": "AWS/Rekognition/DetectModerationLabels/Image/V3"
        }, 
        HumanLoopActivationConfig={
            "HumanLoopActivationConditionsConfig": {
                "HumanLoopActivationConditions": humanLoopActivationConditions
            }
        },
        HumanLoopConfig={
            "WorkteamArn": workteamArn,
            "HumanTaskUiArn": humanTaskUiArn,
            "TaskTitle": "Image content moderation",
            "TaskDescription": "Review the image and instructions. Complete the task",
            "TaskCount": 1,
            "TaskAvailabilityLifetimeInSeconds": 43200,
            "TaskTimeLimitInSeconds": 3600,
            "TaskKeywords": [
                "content moderation",
            ],
        },
        OutputConfig={
            "S3OutputPath": "s3://amzn-s3-demo-bucket/prefix/",
        },
        RoleArn="arn:aws:iam::<account-number>:role/<role-name>",
        Tags=[
            {
                "Key": "string",
                "Value": "string"
            },
        ]
    )
```

------
#### [ Custom Integration ]

사용자 지정 통합을 사용하는 경우, `HumanLoopRequestSource`, `HumanLoopActivationConfig` 파라미터를 제외하세요.

```
    response = client.create_flow_definition(
        FlowDefinitionName="human-review-workflow-name",
        HumanLoopConfig={
            "WorkteamArn": workteamArn,
            "HumanTaskUiArn": humanTaskUiArn,
            "TaskTitle": "Image content moderation",
            "TaskDescription": "Review the image and instructions. Complete the task",
            "TaskCount": 1,
            "TaskAvailabilityLifetimeInSeconds": 43200,
            "TaskTimeLimitInSeconds": 3600,
            "TaskKeywords": [
                "content moderation",
            ],
        },
        OutputConfig={
            "S3OutputPath": "s3://amzn-s3-demo-bucket/prefix/",
        },
        RoleArn="arn:aws:iam::<account-number>:role/<role-name>",
        Tags=[
            {
                "Key": "string",
                "Value": "string"
            },
        ]
    )
```

------

인적 검토 워크플로를 만든 후 응답에서 플로우 정의 ARN을 검색할 수 있습니다.

```
    humanReviewWorkflowArn = response["FlowDefinitionArn"]    
```

## 인적 루프 생성
<a name="a2i-get-started-api-create-human-loop"></a>

인적 루프를 시작하는 데 사용하는 API 작업은 사용하는 Amazon A2I 통합에 따라 다릅니다.
+ Amazon Textract 내장 통합을 사용하는 경우 [AnalyzeDocument](https://docs.aws.amazon.com/textract/latest/dg/API_AnalyzeDocument.html) 작업을 사용합니다.
+ Amazon Rekognition 내장 통합을 사용하는 경우 [DetectModerationLabels](https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectModerationLabels.html) 작업을 사용합니다.
+ 사용자 지정 통합을 사용하는 경우 [StartHumanLoop](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StartHumanLoop.html) 작업을 사용합니다.

다음 테이블에서 태스크 유형을 선택하면 AWS SDK for Python (Boto3)을 사용하는 Amazon Textract와 Amazon Rekognition에 대한 요청 예시를 볼 수 있습니다.

------
#### [ Amazon Textract – Key-value pair extraction ]

다음 예제에서는를 사용하여 us-west-2`analyze_document`에서 AWS SDK for Python (Boto3) 를 호출합니다. 기울임꼴로 표시된 빨간색 텍스트를 귀사의 리소스로 바꾸세요. Amazon Mechanical Turk 인력을 사용하는 경우 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html) 파라미터를 포함하세요. 추가 정보는AWS SDK for Python (Boto) API 참조의 [analyze\$1document](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/textract.html#Textract.Client.analyze_document) 설명서를 참조하세요.**

```
   response = client.analyze_document(
         Document={"S3Object": {"Bucket": "amzn-s3-demo-bucket", "Name": "document-name.pdf"},
         HumanLoopConfig={
            "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
            "HumanLoopName":"human-loop-name",
            "DataAttributes" : {ContentClassifiers:["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]}
         }
         FeatureTypes=["FORMS"]
    )
```

인적 루프는 문서 분석 태스크에 대한 Amazon Textract의 신뢰도가 인적 검토 워크플로에 지정된 활성화 조건을 충족하는 경우에만 생성됩니다. `response` 요소를 검사하여 인적 루프가 생성되었는지 확인할 수 있습니다. 이 응답에 포함된 모든 내용을 보려면 [https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html](https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html) 섹션을 참조하세요.

```
    if "HumanLoopArn" in analyzeDocumentResponse["HumanLoopActivationOutput"]:
        # A human loop has been started!
        print(f"A human loop has been started with ARN: {analyzeDocumentResponse["HumanLoopActivationOutput"]["HumanLoopArn"]}"
```

------
#### [ Amazon Rekognition – Image moderation ]

다음 예제에서는를 사용하여 us-west-2`detect_moderation_labels`에서 AWS SDK for Python (Boto3) 를 호출합니다. 기울임꼴로 표시된 빨간색 텍스트를 귀사의 리소스로 바꾸세요. Amazon Mechanical Turk 인력을 사용하는 경우 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html) 파라미터를 포함하세요. 추가 정보는AWS SDK for Python (Boto) API 참조의 [detect\$1moderation\$1labels](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_moderation_labels) 설명서를 참조하세요.**

```
   response = client.detect_moderation_labels(
            Image={"S3Object":{"Bucket": "amzn-s3-demo-bucket", "Name": "image-name.png"}},
            HumanLoopConfig={
               "FlowDefinitionArn":"arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
               "HumanLoopName":"human-loop-name",
               "DataAttributes":{ContentClassifiers:["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]}
             }
    )
```

인적 루프는 이미지 조절 태스크에 대한 Amazon Rekognition의 신뢰도가 인적 검토 워크플로에 지정된 활성화 조건을 충족하는 경우에만 생성됩니다. `response` 요소를 검사하여 인적 루프가 생성되었는지 확인할 수 있습니다. 이 응답에 포함된 모든 내용을 보려면 [https://docs.aws.amazon.com/rekognition/latest/dg/API_HumanLoopActivationOutput.html](https://docs.aws.amazon.com/rekognition/latest/dg/API_HumanLoopActivationOutput.html) 섹션을 참조하세요.

```
    if "HumanLoopArn" in response["HumanLoopActivationOutput"]:
        # A human loop has been started!
        print(f"A human loop has been started with ARN: {response["HumanLoopActivationOutput"]["HumanLoopArn"]}")
```

------
#### [ Custom Integration ]

다음 예제에서는를 사용하여 us-west-2`start_human_loop`에서 AWS SDK for Python (Boto3) 를 호출합니다. 기울임꼴로 표시된 빨간색 텍스트를 귀사의 리소스로 바꾸세요. Amazon Mechanical Turk 인력을 사용하는 경우 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopDataAttributes.html) 파라미터를 포함하세요. 추가 정보는AWS SDK for Python (Boto) API 참조의 [start\$1human\$1loop](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.start_human_loop) 설명서를 참조하세요.**

```
   response = client.start_human_loop(
        HumanLoopName= "human-loop-name",
        FlowDefinitionArn= "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
        HumanLoopInput={"InputContent": inputContentJson},
        DataAttributes={"ContentClassifiers":["FreeOfPersonallyIdentifiableInformation"|"FreeOfAdultContent"]}
   )
```

이 예제에서는 입력 콘텐츠를 *`inputContentJson`* 변수에 저장합니다. 입력 콘텐츠에 텍스트 안내문과 감정(예: `Positive`, `Negative` 또는 `Neutral`)이라는 두 요소가 포함되어 있고 형식이 다음과 같다고 가정해 보겠습니다.

```
    inputContent = {
        "initialValue": sentiment,
         "taskObject": blurb
     }
```

`initialValue` 및 `taskObject` 키는 작업자 태스크 템플릿의 리퀴드 요소에 사용되는 키와 일치해야 합니다. 예를 보려면 [인적 태스크 UI 생성](#a2i-get-started-api-worker-task-template)의 사용자 지정 템플릿을 참조하세요.

`inputContentJson`을 생성하려면 다음을 수행합니다.

```
    import json
    
    inputContentJson = json.dumps(inputContent)
```

`start_human_loop`를 호출할 때마다 인적 루프가 시작됩니다. 인적 루프의 상태를 확인하려면 [describe\$1human\$1loop](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.describe_human_loop)를 사용하세요.

```
    human_loop_info = a2i.describe_human_loop(HumanLoopName="human_loop_name")
    print(f"HumanLoop Status: {resp["HumanLoopStatus"]}")
    print(f"HumanLoop Output Destination: {resp["HumanLoopOutput"]}")
```

------

# Amazon A2I를 사용한 사용 사례 및 예제
<a name="a2i-task-types-general"></a>

Amazon Augmented AI를 사용하면 기본 제공 태스크 유형, Amazon Textract와 Amazon Rekognition 또는 사용자 지정 태스크 유형을 사용하는 사용자만의 사용자 지정 태스크에 대해 인적 검토를 워크플로에 통합할 수 있습니다.****

기본 제공 태스크 유형 중 하나를 사용하여 인적 검토 워크플로를 생성할 때 인적 검토를 시작하는 신뢰도 임계값과 같은 조건을 지정할 수 있습니다. 서비스(Amazon Rekognition 또는 Amazon Textract)는 이러한 조건이 충족되면 사용자를 대신하여 인적 루프를 생성하고 입력 데이터를 Amazon A2I에 직접 제공하여 인적 검토자에게 전송합니다. 기본 제공 태스크 유형에 대한 자세한 내용은 다음을 활용하세요.
+ [Amazon Augmented AI를 Amazon Textract와 함께 사용](a2i-textract-task-type.md)
+ [Amazon Rekognition과 함께 Amazon Augmented AI 사용](a2i-rekognition-task-type.md)

사용자 지정 태스크 유형을 사용하는 경우 Amazon A2I 런타임 API를 사용해 인적 루프를 생성하고 시작합니다. 사용자 지정 태스크 유형을 사용하여 인적 검토 워크플로를 다른 AWS 서비스 또는 사용자 지정 ML 애플리케이션과 통합할 수 있습니다.
+ 자세한 내용은 [Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용](a2i-task-types-custom.md) 섹션을 참조하세요.

다음 표에는 SageMaker AI Jupyter Notebook을 사용하여 탐색할 수 있는 다양한 Amazon A2I 사용 사례가 나와 있습니다. Jupyter Notebook을 시작하려면 [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](#a2i-task-types-notebook-demo)의 지침을 사용하세요. 더 많은 예제는 이 [GitHub 리포지토리](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks) 섹션을 참조하세요.


****  

| **사용 사례** | **설명** | **태스크 유형** | 
| --- | --- | --- | 
|  [Amazon A2I를 Amazon Textract과 함께 사용](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Textract%20AnalyzeDocument.ipynb)  |  사람이 단일 페이지 문서를 검토하여 중요한 양식 키-값 쌍을 검토하도록 하거나 Amazon Textract가 데이터를 무작위로 샘플링하여 데이터세트의 문서를 검토용으로 작업자에게 보내도록 합니다.  | 기본 제공 | 
| [Amazon A2I를 Amazon Rekognition과 함께 사용](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Rekognition%20DetectModerationLabels.ipynb) |  Amazon Rekognition에서 낮은 신뢰도 점수를 반환하는 경우, 안전하지 않은 이미지가 성인용 콘텐츠 또는 폭력적인 콘텐츠인지 사람이 검토하도록 하거나, Amazon Rekognition이 데이터세트의 이미지를 무작위로 샘플링하여 사람에게 보내 검토하도록 합니다.  |  기본 제공  | 
| [Amazon A2I를 Amazon Comprehend와 함께 사용](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Comprehend%20DetectSentiment.ipynb) |  사람에게 감정 분석, 텍스트 구문, 엔티티 탐지와 같은 텍스트 데이터에 대해 Amazon Comprehend 추론을 검토하게 하세요.  |  사용자 지정  | 
| [Amazon A2I를 Amazon Transcribe와 함께 사용](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/A2I-Video-Transcription-with-Amazon-Transcribe.ipynb) |  동영상 또는 오디오 파일의 Amazon Transcribe 트랜스크립션을 사람이 검토하도록 하세요. 트랜스크립션 인적 검토 루프의 결과를 사용하여 사용자 지정 어휘를 만들고 유사한 동영상 또는 오디오 콘텐츠의 향후 트랜스크립션을 개선할 수 있습니다.  | 사용자 지정 | 
| [Amazon A2I를 Amazon Translate과 함께 사용](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Amazon%20Translate.ipynb) |  Amazon Translate에서 반환된 신뢰도가 낮은 번역은 사람이 검토하도록 하세요.  |  사용자 지정  | 
| [Amazon A2I를 사용하여 실시간 ML 추론을 검토](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20A2I%20with%20Amazon%20SageMaker%20for%20object%20detection%20and%20model%20retraining.ipynb)  |  Amazon A2I를 사용하면 SageMaker AI 호스팅 엔드포인트에 배포된 모델에서 수행한 저신뢰도 실시간 추론을 검토하고 Amazon A2I 출력 데이터를 사용하여 모델을 점진적으로 훈련시킬 수 있습니다.  |  사용자 지정  | 
| [Amazon A2I를 사용하여 테이블 형식의 데이터를 검토](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(Amazon%20A2I)%20Integration%20with%20tabular%20data.ipynb) |  Amazon A2I를 사용하여 인적 검토 루프를 테이블 형식 데이터를 사용하는 ML 애플리케이션에 통합할 수 있습니다.  |  사용자 지정  | 

**Topics**
+ [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](#a2i-task-types-notebook-demo)
+ [Amazon Augmented AI를 Amazon Textract와 함께 사용](a2i-textract-task-type.md)
+ [Amazon Rekognition과 함께 Amazon Augmented AI 사용](a2i-rekognition-task-type.md)
+ [Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용](a2i-task-types-custom.md)

## SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용
<a name="a2i-task-types-notebook-demo"></a>

Amazon A2I 인적 검토 루프를 기계 학습 워크플로에 통합하는 방법을 보여주는 엔드-투-엔드 예제는 SageMaker notebook 인스턴스의 이 [GitHub 리포지토리](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks)에 있는 Jupyter Notebook을 사용할 수 있습니다.

**Amazon SageMaker 노트북 인스턴스에서 Amazon A2I 사용자 지정 태스크 유형 샘플 노트북을 사용하려면**

1. 활성 SageMaker 노트북 인스턴스가 없는 경우 [자습서를 위해 Amazon SageMaker 노트북 인스턴스 만들기](gs-setup-working-env.md)의 지침에 따라 노트북 인스턴스를 하나 생성합니다.

1. 노트북 인스턴스가 활성 상태이면 노트북 인스턴스의 이름 오른쪽에 있는 **JupyterLab 열기**를 선택합니다. JupyterLab을 로드하는 데 몇 분 정도 걸릴 수 있습니다.

1. GitHub 리포지토리 아이콘(![\[Diagonal arrow icon with N and 1 symbols, representing a one-to-many relationship.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/icons/Git_squip_add_repo.png))을 선택하여 GitHub 리포지토리를 작업 영역에 복제합니다.

1. [amazon-a2i-sample-jupyter-notebooks](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks) 리포지토리 HTTPS URL을 입력합니다.

1. **복제**를 선택합니다.

1. 실행하려는 노트북을 엽니다.

1. 노트북의 지침에 따라 인적 검토 워크플로와 인적 루프를 구성하고 셀을 실행합니다.

1. 불필요한 비용이 발생하지 않도록 데모를 완료하면 노트북 인스턴스와 연습 중에 생성된 Amazon S3 버킷, IAM 역할 및 CloudWatch Events 리소스를 중지하고 삭제합니다.

# Amazon Augmented AI를 Amazon Textract와 함께 사용
<a name="a2i-textract-task-type"></a>

Amazon Textract를 통해 애플리케이션에 문서 텍스트 탐지 및 분석 기능을 추가할 수 있습니다. Amazon Augmented AI (Amazon A2I)는 Amazon Textract의 `AnalyzeDocument` API 오퍼레이션과 직접 통합됩니다. `AnalyzeDocument`를 사용하여 검색된 항목 간의 관계에 대한 문서를 분석할 수 있습니다. Amazon A2I 인적 검토 루프를 `AnalyzeDocument` 요청에 추가하면 Amazon A2I은 Amazon Textract 결과를 모니터링하고 흐름 정의에 지정된 조건이 충족될 경우 검토를 위해 한 명 이상의 인적 작업자에게 문서를 보냅니다. 예를 들어, 사람이 `Full name:`과 같은 특정 키 및 관련 입력-값을 검토하도록 하려면 `Full name:` 키가 감지될 때 또는 해당 키에 대한 추론 신뢰도가 지정한 범위에 속할 때 인적 검토를 시작하는 활성화 조건을 생성할 수 있습니다.

다음 이미지는 Amazon Textract을 사용한 Amazon A2I 내장 워크플로를 보여줍니다. 왼쪽에는 Amazon Textract 인적 검토 워크플로를 생성하는 데 필요한 리소스(Amazon S3 버킷, 활성화 조건, 작업자 태스크 템플릿, 작업 팀)가 나와 있습니다. 이러한 리소스는 인적 검토 워크플로 또는 흐름 정의를 생성하는 데 사용됩니다. 화살표는 워크플로에서 다음 단계의 오른쪽을 가리킵니다. 이때 Amazon Textract을 사용하여 인적 검토 워크플로가 있는 인적 루프를 구성합니다. 두 번째 화살표는 이 단계 오른쪽에서 인적 검토 워크플로에 지정된 활성화 조건이 충족되는 단계까지 가리킵니다. 그러면 인적 루프 생성이 시작됩니다. 이미지 오른쪽에는 인적 루프가 세 단계로 묘사되어 있습니다. 1) 작업자 UI와 도구가 생성되어 작업자에게 태스크가 제공되고, 2) 작업자가 입력 데이터를 검토하고, 마지막으로, 3) 결과가 Amazon S3에 저장됩니다.

![\[Amazon Augmented AI를 Amazon Textract와 함께 사용\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A21-Components_Textract@2x.png)


활성화 조건을 지정하여 인간 작업자 검토 워크플로 또는 흐름 정의를 생성할 때 검토를 위해 Amazon Textract에서 인간 작업자에게 작업을 보내는 시기를 지정할 수 있습니다.**

Amazon Textract 태스크 유형을 사용할 때 다음 활성화 조건을 설정할 수 있습니다.
+ 양식 키 신뢰도 점수를 기반으로 특정 양식 키에 대한 인적 검토를 시작합니다.
+ 특정 양식 키가 누락될 때 인적 검토를 시작합니다.
+ Amazon Textract에서 신뢰도 점수가 지정된 범위에 속하는 것으로 식별된 모든 양식 키에 대한 인적 검토를 시작합니다.
+ 검토를 위해 인적 작업자에게 무작위로 양식 샘플을 보냅니다.

활성화 조건이 양식 키 신뢰도 점수에 따라 결정되는 경우 다음과 같은 두 가지 유형의 예측-신뢰도를 사용하여 인적 루프를 시작할 수 있습니다.
+ **식별 신뢰도** - 양식 내에서 탐지된 키-값 페어에 대한 신뢰도 점수입니다.
+ **자격 신뢰도** – 양식에서 키와 값 내에 포함된 텍스트의 신뢰도 점수입니다.

다음 섹션의 이미지에서 **전체 이름: Jane Doe**는 키-값 페어이고, **전체 이름** 및 **Jane Doe**는 각각 키와 값입니다.

인적 검토 워크플로를 만들 때 Amazon SageMaker AI 콘솔을 사용하거나, 인적 루프 활성화 조건에 대한 JSON을 만들고 이를 `CreateFlowDefinition` API 작업의 `HumanLoopActivationConditions` 파라미터에 입력으로 지정하여 이러한 활성화 조건을 설정할 수 있습니다. JSON 형식으로 활성화 조건을 지정하는 방법에 대한 자세한 내용은 [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md) 및 [Amazon Textract의 인적 루프 활성화 조건 JSON 스키마 사용](a2i-json-humantaskactivationconditions-textract-example.md) 섹션을 참조하세요.

**참고**  
Amazon Textract에서 증강 AI를 사용하는 경우를 호출하는 데 사용하는 것과 동일한 AWS 리전에서 증강 AI 리소스를 생성합니다`AnalyzeDocument`.

## 시작하기: 인적 검토를 Amazon Textract 문서 분석 작업에 통합
<a name="a2i-create-textract-human-review"></a>

인적 검토를 Amazon Textract 텍스트 감지 및 분석 작업에 통합하려면 흐름 정의를 생성한 다음, Amazon Textract API를 사용하여 흐름 정의를 워크플로에 통합해야 합니다. SageMaker AI 콘솔 또는 Augmented AI API를 사용하여 흐름 정의를 만드는 방법을 알아보려면 다음 주제를 참조하세요.
+ [인적 검토 워크플로 생성(콘솔)](a2i-create-flow-definition.md#a2i-create-human-review-console)
+ [인적 검토 워크플로(API) 생성](a2i-create-flow-definition.md#a2i-create-human-review-api)

흐름 정의를 생성한 후 [Amazon Textract에서 Augmented AI 사용](https://docs.aws.amazon.com/textract/latest/dg/a2i-textract.html)을 참조하여 흐름 정의를 Amazon Textract 작업에 통합하는 방법을 알아봅니다.

## Amazon Textract와Amazon A2I를 사용한 엔드-투-엔드 예제
<a name="a2i-task-types-textract-notebook-demo"></a>

콘솔을 사용하여 Amazon A2I와 함께 Amazon Textract을 사용하는 방법을 보여주는 엔드-투-엔드 예제는 [자습서: Amazon A2I 콘솔에서 시작하기](a2i-get-started-console.md)을 참조하세요.

Amazon A2I API를 사용하여 인적 검토를 생성하고 시작하는 방법을 배우려면 SageMaker 노트북 인스턴스에서 [Amazon Textract 문서 분석[예제]를 Amazon Augmented AI (Amazon A2I)와 통합](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Textract%20AnalyzeDocument.ipynb)을 활용할 수 있습니다. 시작하려면 [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](a2i-task-types-general.md#a2i-task-types-notebook-demo) 섹션을 참조하세요.

## A2I Textract 작업자 콘솔 미리 보기
<a name="a2i-textract-console-preview"></a>

Amazon Textract 워크플로에서 검토 작업이 할당되면 작업자에게 다음과 유사한 UI가 표시될 수 있습니다.

![\[A2I Textract 작업자 콘솔의 검토 작업 예입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i-textract-example.png)


인적 검토 정의를 만들 때 SageMaker AI 콘솔에서 또는 사용자 지정 템플릿을 만들고 사용하여 이 인터페이스를 사용자 지정할 수 있습니다. 자세한 내용은 [작업자 태스크 템플릿 생성 및 관리](a2i-instructions-overview.md)를 참조하세요.

# Amazon Rekognition과 함께 Amazon Augmented AI 사용
<a name="a2i-rekognition-task-type"></a>

Amazon Rekognition을 사용하면 애플리케이션에 이미지 분석 기능을 쉽게 추가할 수 있습니다. Amazon Rekognition `DetectModerationLabels` API 작업은 Amazon A2I과 직접 통합되므로 인적 루프를 쉽게 생성하여 명시적인 성인 콘텐츠나 폭력적인 콘텐츠와 같이 안전하지 않은 이미지를 검토할 수 있습니다. `DetectModerationLabels`를 사용하여 흐름 정의 ARN을 사용하여 인적 루프를 구성할 수 있습니다. 이렇게 하면 Amazon A2I를 사용하여 Amazon Rekognition에서 생성된 예측을 분석하고 결과를 인적 작업자에게 전송하여 해당 결과가 흐름 정의에 설정된 조건을 충족하는지 검토할 수 있습니다.

다음 이미지는 Amazon Rekognition을 사용한 Amazon A2I 내장 워크플로를 보여줍니다. 왼쪽에는 Amazon Rekognition 인적 검토 워크플로를 생성하는 데 필요한 리소스(Amazon S3 버킷, 활성화 조건, 작업자 태스크 템플릿, 작업 팀)가 나와 있습니다. 이러한 리소스는 인적 검토 워크플로 또는 흐름 정의를 생성하는 데 사용됩니다. 화살표는 워크플로에서 다음 단계의 오른쪽을 가리킵니다. 이때 Amazon Rekognition을 사용하여 인적 검토 워크플로가 있는 인적 루프를 구성합니다. 두 번째 화살표는 이 단계 오른쪽에서 인적 검토 워크플로에 지정된 활성화 조건이 충족되는 단계까지 가리킵니다. 그러면 인적 루프 생성이 시작됩니다. 이미지 오른쪽에는 인적 루프가 세 단계로 묘사되어 있습니다. 1) 작업자 UI와 도구가 생성되어 작업자에게 태스크가 제공되고, 2) 작업자가 입력 데이터를 검토하고, 마지막으로, 3) 결과가 Amazon S3에 저장됩니다.

![\[Amazon Rekognition과 함께 Amazon Augmented AI 사용\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A2I-Components_Rekognition@2x.png)


Amazon Rekognition 태스크 유형을 사용할 때 다음 활성화 조건을 설정할 수 있습니다.
+ 레이블 신뢰도 점수를 기반으로 Amazon Rekognition에서 식별된 라벨에 대한 인적 검토를 시작합니다.
+ 검토를 위해 인적 작업자에게 이미지 샘플을 무작위로 보냅니다.

인적 검토 워크플로를 만들 때 Amazon SageMaker AI 콘솔을 사용하거나, 인적 루프 활성화 조건에 대한 JSON을 만들고 이를 `CreateFlowDefinition` API 작업의 `HumanLoopActivationConditions` 파라미터에 입력으로 지정하여 이러한 활성화 조건을 설정할 수 있습니다. JSON 형식으로 활성화 조건을 지정하는 방법에 대한 자세한 내용은 [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md) 및 [Amazon Rekognition의 인적 루프 활성화 조건 JSON 스키마 사용](a2i-json-humantaskactivationconditions-rekognition-example.md) 섹션을 참조하세요.

**참고**  
Amazon Rekognition에서 증강 AI를 사용하는 경우를 호출하는 데 사용하는 것과 동일한 AWS 리전에서 증강 AI 리소스를 생성합니다`DetectModerationLabels`.

## 시작하기: 인적 검토를 Amazon Rekognition Image 조정 작업에 통합
<a name="a2i-create-rekognition-human-review"></a>

인적 검토를 Amazon Rekognition에 통합하는 방법은 다음 주제를 참조하세요.
+ [인적 검토 워크플로 생성(콘솔)](a2i-create-flow-definition.md#a2i-create-human-review-console)
+ [인적 검토 워크플로(API) 생성](a2i-create-flow-definition.md#a2i-create-human-review-api)

흐름 정의를 생성한 후 [Amazon Rekognition에서 Augmented AI 사용](https://docs.aws.amazon.com/rekognition/latest/dg/a2i-rekognition.html)을 참조하여 흐름 정의를 Amazon Rekognition 태스크에 통합하는 방법을 알아봅니다.

## Amazon Rekognition과 Amazon A2I를 사용한 엔드-투-엔드 데모
<a name="a2i-task-types-rekognition-notebook-demo"></a>

콘솔을 사용하여 Amazon A2I와 함께 Amazon Rekognition을 사용하는 방법을 보여주는 엔드-투-엔드 예제는 [자습서: Amazon A2I 콘솔에서 시작하기](a2i-get-started-console.md)을 참조하세요.

Amazon A2I API를 사용하여 인적 검토를 생성하고 시작하는 방법을 배우려면 SageMaker 노트북 인스턴스에서 [Amazon Rekognition [예제]와 Amazon Augmented AI (Amazon A2I) 통합](https://github.com/aws-samples/amazon-a2i-sample-jupyter-notebooks/blob/master/Amazon%20Augmented%20AI%20(A2I)%20and%20Rekognition%20DetectModerationLabels.ipynb)을 사용할 수 있습니다. 시작하려면 [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](a2i-task-types-general.md#a2i-task-types-notebook-demo)을 참조하세요.

## A2I Rekognition 작업자 콘솔 미리 보기
<a name="a2i-rekognition-console-preview"></a>

Amazon Rekognition 워크플로에서 검토 작업이 할당되면 작업자에게 다음과 유사한 UI가 표시될 수 있습니다.

![\[A2I Rekognition 작업자 콘솔의 예제 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i-rekognition-example.png)


인적 검토 정의를 만들 때 SageMaker AI 콘솔에서 또는 사용자 지정 템플릿을 만들고 사용하여 이 인터페이스를 사용자 지정할 수 있습니다. 자세한 내용은 [작업자 태스크 템플릿 생성 및 관리](a2i-instructions-overview.md)를 참조하세요.

# Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용
<a name="a2i-task-types-custom"></a>

Amazon Augmented AI (Amazon A2I)를 사용하면 사용자 지정 작업 유형을 사용하여 모든 기계 학습 워크플로에 인적 검토(인적 루프)를 통합할 수 있습니다.**** 이 옵션을 사용하면 검토를 위해 데이터 객체를 사람에게 보내는 조건과 작업자 사용자 인터페이스의 모양과 느낌을 가장 유연하게 사용자 지정할 수 있습니다.

사용자 지정 작업 유형을 사용하는 경우, 사용자 지정 인적 검토 워크플로를 만들고 애플리케이션에서 직접 인적 검토할 수 있도록 데이터 객체를 보내는 조건을 지정합니다.

다음 이미지는 Amazon A2I 사용자 지정 워크플로를 보여줍니다. 사용자 지정 ML 모델은 예측을 생성하는 데 사용됩니다. 클라이언트 애플리케이션은 사용자 정의 기준을 사용하여 이러한 예측을 필터링하고 사람의 검토가 필요한지를 결정합니다. 사람의 검토가 필요한 경우 이러한 예측은 인적 검토를 위해 Amazon A2I로 전송됩니다. Amazon A2I는 클라이언트 애플리케이션이 액세스할 수 있는 Amazon S3에서 사람이 검토한 결과를 수집합니다. 필터에서 인적 검토가 필요하지 않다고 판단되면 클라이언트 애플리케이션에 직접 예측을 제공할 수 있습니다.

![\[Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/a2i/diagrams/product-page-diagram_A2I-Components_Custom@2x.png)


이 페이지의 절차를 사용하여 사용자 지정 작업 유형을 사용하여 Amazon A2I를 기계 학습 워크플로에 통합하는 방법을 알아보세요.

**흐름 정의를 사용하여 인적 루프를 생성하고 이를 애플리케이션에 통합하고 결과를 모니터링하려면**

1. Amazon A2I [Augmented AI 사용을 위한 사전 조건](a2i-getting-started-prerequisites.md)를 완료하세요. 다음 사항에 유의하세요.
   + Amazon Simple Storage Service(S3) 버킷 또는 입력 및 출력 데이터를 저장하는 버킷의 경로입니다.
   + 필요한 권한이 연결된 (IAM) 역할의 Amazon 리소스 이름 AWS Identity and Access Management (ARN)입니다.
   + (선택 사항) 하나를 사용하려는 경우, 프라이빗 인력의 ARN.

1. HTML 요소를 사용하면 Amazon A2I는 작업자 작업 UI 생성에 사용하는 사용자 지정 작업자 템플릿을 생성합니다. 사용자 지정 템플릿을 생성하는 방법은 [사용자 지정 작업자 태스크 템플릿 생성](a2i-custom-templates.md) 섹션을 참조하세요.

1. 2단계의 사용자 지정 작업자 템플릿을 사용하여 Amazon SageMaker AI 콘솔에서 작업자 태스크 템플릿을 생성합니다. 자세한 방법은 [작업자 태스크 템플릿 생성](a2i-worker-template-console.md#a2i-create-worker-template-console)을 참조하세요.

   다음 단계에서는 흐름 정의를 생성합니다.
   + SageMaker API를 사용하여 흐름 정의를 생성하려면 다음 단계를 위해 이 작업자 태스크 템플릿의 ARN을 기록해 둡니다.
   + 콘솔을 사용하여 흐름 정의를 생성하는 경우, **인적 검토 워크플로 생성**을 선택하면 템플릿이 **작업자 태스크 템플릿** 섹션에 자동으로 표시됩니다.

1. 흐름 정의를 생성할 때 S3 버킷, IAM 역할 ARN 및 작업자 템플릿에 대한 경로를 제공합니다.
   + SageMaker AI `CreateFlowDefinition` API를 사용하여 흐름 정의를 만드는 방법을 알아보려면 [인적 검토 워크플로(API) 생성](a2i-create-flow-definition.md#a2i-create-human-review-api) 섹션을 참조하세요.
   + SageMaker AI 콘솔을 사용하여 흐름 정의를 만드는 방법을 알아보려면 [인적 검토 워크플로 생성(콘솔)](a2i-create-flow-definition.md#a2i-create-human-review-console) 섹션을 참조하세요.

1. [Amazon A2I Runtime API](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/Welcome.html)를 사용하여 인적 루프를 구성합니다. 자세한 방법은 [인적 루프 생성 및 시작](a2i-start-human-loop.md)을 참조하세요.

1. 애플리케이션에서 인적 검토가 시작되는 시점을 제어하려면 애플리케이션에서 `StartHumanLoop`가 호출되는 조건을 지정합니다. 사용자 지정 작업 유형과 함께 Amazon A2I를 사용할 때는 인적 루프를 트리거하는 신뢰도 임계값 같은 인적 루프 활성화 조건을 사용할 수 없습니다. `StartHumanLoop`를 호출할 때마다 인적 검토가 수행됩니다.

인적 루프를 시작한 후에 사용자는 Amazon Augmented AI Runtime API 및 Amazon EventBridge(Amazon CloudWatch Events라고도 함)를 사용하여 루프를 관리하고 모니터링할 수 있습니다. 자세한 내용은 [인적 루프 모니터링 및 관리](a2i-monitor-humanloop-results.md)을 참조하세요.

## Amazon A2I 사용자 지정 작업 유형을 사용하는 종단 간 튜토리얼
<a name="a2i-task-types-custom-notebook-demo"></a>

Amazon A2I를 다양한 ML 워크플로에 통합하는 방법을 보여주는 종단 간 예제는 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)의 표를 참조하세요. 이러한 노트북 중 하나를 사용하여 시작하려면 [SageMaker Notebook 인스턴스를 Amazon A2I Jupyter Notebook과 함께 사용](a2i-task-types-general.md#a2i-task-types-notebook-demo)를 참조하세요.

# 인적 검토 워크플로 생성
<a name="a2i-create-flow-definition"></a>

Amazon Augmented AI(Amazon A2I) 인적 검토 워크플로 또는 흐름 정의를 사용하여 다음을 지정합니다.****
+ Amazon Textract 및 Amazon Rekognition 기본 제공 태스크 유형의 경우 인적 루프가 호출되는 조건
+ 작업이 전달되는 인력
+ 작업자가 수신하는 일련의 지침(작업자 태스크 템플릿이라고 함)**
+ 작업을 수신하는 작업자 수 및 작업 완료를 위한 시간 제한을 포함하여 작업자 작업의 구성 
+ 출력 데이터가 저장되는 위치 

사용자는 SageMaker AI 콘솔에서 또는 SageMaker AI [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html) 작업을 사용하여 인적 검토 워크플로를 만들 수 있습니다. 사용자는 흐름 정의를 생성하는 동안 Amazon Textract 및 Amazon Rekognition 태스크 유형에 대해 콘솔을 사용하여 작업자 태스크 템플릿을 생성할 수 있습니다.

**중요**  
인적 루프를 시작하는 인적 루프 활성화 조건(예: 신뢰도 임곗값)은 Amazon A2I 사용자 지정 태스크 유형에는 사용할 수 없습니다. 콘솔을 사용하여 사용자 지정 태스크 유형에 대한 흐름 정의를 생성하는 경우 활성화 조건을 지정할 수 없습니다. Amazon A2I API를 사용하여 사용자 지정 태스크 유형에 대한 흐름 정의를 생성하는 경우 `HumanLoopActivationConditionsConfig` 파라미터의 `HumanLoopActivationConditions` 속성을 설정할 수 없습니다. 인적 검토가 시작되는 시점을 제어하려면 사용자 지정 애플리케이션에서 `StartHumanLoop`가 호출되는 조건을 지정하세요. 이 경우 모든 `StartHumanLoop` 호출은 인적 검토를 초래합니다. 자세한 내용은 [Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용](a2i-task-types-custom.md) 섹션을 참조하세요.

**사전 조건**

인적 검토 흐름 정의를 생성하려면 먼저 [Augmented AI 사용을 위한 사전 조건](a2i-getting-started-prerequisites.md)에 설명된 사전 조건을 완료해야 합니다.

API를 사용하여 태스크 유형에 대한 흐름 정의를 생성하거나, 콘솔에서 흐름 정의를 생성할 때 사용자 지정 태스크 유형을 사용하는 경우 먼저 작업자 태스크 템플릿을 생성합니다. 자세한 내용은 [작업자 태스크 템플릿 생성 및 관리](a2i-instructions-overview.md) 섹션을 참조하세요.

콘솔에서 기본 제공 태스크 유형에 대한 흐름 정의를 생성하는 동안 작업자 태스크 템플릿을 미리 보려면 [작업자 작업 템플릿 미리 보기 사용](a2i-permissions-security.md#permissions-for-worker-task-templates-augmented-ai)에서 설명하는 것과 같은 정책을 사용하여 템플릿 아티팩트가 포함된 Amazon S3 버킷에 액세스할 수 있는 흐름 정의 권한을 생성하는 데 사용하는 역할을 부여합니다.



**Topics**
+ [인적 검토 워크플로 생성(콘솔)](#a2i-create-human-review-console)
+ [인적 검토 워크플로(API) 생성](#a2i-create-human-review-api)
+ [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md)

## 인적 검토 워크플로 생성(콘솔)
<a name="a2i-create-human-review-console"></a>

이 절차에 따라 SageMaker AI 콘솔을 사용하여 Amazon Augmented AI(Amazon A2I) 인적 검토 워크플로를 만듭니다. Amazon A2I를 처음 사용하는 경우 조직의 구성원을 사용하여 프라이빗 작업 팀을 생성하고 흐름 정의를 생성할 때 이 작업 팀의 ARN을 사용하는 것이 좋습니다. 프라이빗 작업 인력을 설정하고 작업 팀을 생성하는 방법은 [프라이빗 작업 인력 생성(Amazon SageMaker AI 콘솔)](sms-workforce-create-private-console.md) 섹션을 참조하세요. 프라이빗 작업 인력을 이미 설정한 경우 [SageMaker AI 콘솔을 사용하여 작업 팀 생성](sms-workforce-management-private-console.md#create-workteam-sm-console) 섹션을 참조하여 해당 작업 인력에 작업 팀을 추가하는 방법을 알아봅니다.

Amazon A2I에서 기본 제공 태스크 유형 중 하나를 사용하는 경우 콘솔에서 인적 검토 워크플로를 생성하는 동안 사용자는 Augmented AI에서 제공하는 기본 작업자 태스크 템플릿을 사용하여 작업자 지침을 생성할 수 있습니다. Augmented AI에서 제공하는 기본 템플릿의 샘플을 보려면 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)의 기본 제공 태스크 유형을 참조하세요.

**흐름 정의를 생성하려면(콘솔)**

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔을 엽니다.

1. 탐색 창의 **Augmented AI** 섹션에서 **Human review workflows(인적 검토 워크플로)**를 선택한 다음 **Create human review workflow(인적 검토 워크플로 생성)**를 선택합니다.

1. **개요**에서 다음을 수행합니다.

   1. **이름**에 고유한 워크플로 이름을 입력합니다. 이름은 소문자여야 하며 계정의 AWS 리전 내에서 고유해야 하며 최대 63자까지 가능합니다. 유효한 문자는 a-z, 0-9 및 -(하이픈)입니다.

   1. **S3 location for output(출력을 위한 S3 위치)**에 인적 검토 결과를 저장해야 하는 S3 버킷을 입력합니다. 버킷은 워크플로와 동일한 AWS 리전에 있어야 합니다.

   1. **IAM 역할**에서 필요한 권한이 있는 역할을 선택합니다. 기본 제공 태스크 유형을 선택하고 콘솔에서 작업자 템플릿을 미리 보려는 경우 연결된 [작업자 작업 템플릿 미리 보기 사용](a2i-permissions-security.md#permissions-for-worker-task-templates-augmented-ai)에서 설명하는 정책 유형과 함께 역할을 제공합니다.

1. **태스크 유형**에서 인적 작업자가 수행할 태스크 유형을 선택합니다.

1. Amazon Rekognition 또는 Amazon Textract 태스크 유형을 선택한 경우 인적 검토를 간접적으로 호출할 조건을 지정합니다.
   + Amazon Rekognition Image 조절 작업의 경우 인적 검토를 트리거하는 추론 신뢰도 점수 임곗값 간격을 선택합니다.
   + Amazon Textract 작업의 경우, 사용자는 특정 양식 키가 누락되었거나 양식 키 감지 신뢰도가 낮을 때 인적 검토를 시작할 수 있습니다. 또한 텍스트의 모든 양식 키를 평가한 후 신뢰도가 양식 키에 필요한 임곗값보다 낮은 경우에도 인적 검토를 시작할 수 있습니다. 두 가지 변수인 **Identification confidence(식별 신뢰도)** 및 **Qualification confidence(자격 신뢰도)**가 신뢰도 임곗값을 지정합니다. 이러한 변수에 대한 자세한 내용은 [Amazon Augmented AI를 Amazon Textract와 함께 사용](a2i-textract-task-type.md) 섹션을 참조하세요.
   + 두 태스크 유형 모두, 사용자는 검토를 위해 일정 비율의 데이터 개체(이미지 또는 양식)와 해당 레이블을 인적 작업자에게 무작위로 보낼 수 있습니다.

1. 작업자 태스크 템플릿을 구성하고 지정합니다.

   1. Amazon Rekognition 또는 Amazon Textract를 사용하는 경우 태스크 유형은 다음과 같습니다.

      1. **Create template(템플릿 생성)** 섹션에서 
        + Amazon Rekognition 및 Amazon Textract 태스크 유형에 대한 Amazon A2I 기본 템플릿을 사용하여 작업자에 대한 지침을 생성하려면 **Build from a default template(기본 템플릿에서 빌드)**을 선택합니다.
          + **Build from a default template(기본 템플릿에서 빌드)**을 선택하면 **Worker task design(작업자 작업 설계)**에서 지침을 생성합니다.
            + 현재 있는 AWS 리전에서 고유한 **템플릿 이름을** 제공합니다.
            + **Instructions(지침)** 섹션에서 작업 완료 방법에 대한 자세한 지침을 제공합니다. 작업자의 정확성을 높이기 위해 좋은 예제와 나쁜 예제를 제공합니다.
            + (선택 사항) **Additional instructions(추가 지침)**에서 작업자에게 추가 정보 및 지침을 제공합니다.

              효과적인 지침 생성에 대한 자세한 내용은 [정확한 작업자 지침 생성](a2i-creating-good-instructions-guide.md) 섹션을 참조하세요.
        + 생성한 사용자 지정 템플릿을 선택하려면 **템플릿** 메뉴에서 템플릿을 선택하고 **작업 설명**을 제공하여 작업자에게 작업을 간략하게 설명합니다. 사용자 지정 템플릿을 생성하는 방법은 [작업자 태스크 템플릿 생성](a2i-worker-template-console.md#a2i-create-worker-template-console) 섹션을 참조하세요.

   1. 사용자 지정 태스크 유형을 사용하는 경우

      1. **작업자 태스크 템플릿** 섹션 목록에서 템플릿을 선택합니다. SageMaker AI 콘솔에서 만든 모든 템플릿이 이 목록에 나타납니다. 사용자 지정 태스크 유형에 대한 템플릿을 생성하는 방법은 [작업자 태스크 템플릿 생성 및 관리](a2i-instructions-overview.md) 섹션을 참조하세요.

1. (선택 사항) 작업자 템플릿을 미리 봅니다.

   Amazon Rekognition 및 Amazon Textract 태스크 유형의 경우 **See a sample worker task(샘플 작업자 작업 보기)**를 선택하여 작업자 작업 UI를 미리 볼 수 있습니다.

   사용자 지정 태스크 유형에 대한 흐름 정의를 생성하는 경우 사용자는 `RenderUiTemplate` 작업을 사용하여 작업자 작업 UI를 미리 볼 수 있습니다. 자세한 내용은 [작업자 태스크 템플릿 미리 보기](a2i-custom-templates.md#a2i-preview-your-custom-template) 섹션을 참조하세요.

1. **작업자**에서 작업 인력 유형을 선택합니다.

1. **생성(Create)**을 선택합니다.

### 다음 단계
<a name="a2i-next-step-createflowdefinition-console"></a>

인적 검토 워크플로가 생성되면 콘솔의 **Human review workflows(인적 검토 워크플로)** 아래에 표시됩니다. 흐름 정의의 Amazon 리소스 이름(ARN) 및 구성 세부 정보를 보려면 해당 이름을 선택하여 워크플로를 선택합니다.

기본 제공 태스크 유형을 사용하는 경우 흐름 정의 ARN을 사용하여 해당 AWS 서비스의 API(예: Amazon Textract API)를 사용하여 인적 루프를 시작할 수 있습니다. 사용자 지정 태스크 유형의 경우 사용자는 ARN을 사용하여 Amazon Augmented AI 런타임 API를 사용하는 인적 루프를 시작할 수 있습니다. 두 옵션에 대한 자세한 내용은 [인적 루프 생성 및 시작](a2i-start-human-loop.md) 섹션을 참조하세요.

## 인적 검토 워크플로(API) 생성
<a name="a2i-create-human-review-api"></a>

SageMaker API를 사용하여 흐름 정의를 생성하려면 `CreateFlowDefinition` 작업을 사용합니다. [Augmented AI 사용을 위한 사전 조건](a2i-getting-started-prerequisites.md) 작업을 완료한 후 다음 절차를 사용하여 이 API 작업을 사용하는 방법을 알아보세요.

`CreateFlowDefinition` 작업에 대한 개요와 각 파라미터에 대한 자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html)을 참조하세요.

**흐름 정의(API)를 생성하려면**

1. `FlowDeﬁnitionName`에 고유한 이름을 입력합니다. 이름은 계정의 AWS 리전 내에서 고유해야 하며 최대 63자까지 가능합니다. 유효한 문자는 a-z, 0-9 및 -(하이픈)입니다.

1. `RoleArn`에 데이터 원본에 대한 액세스 권한을 부여하도록 구성한 역할의 ARN을 입력합니다.

1. `HumanLoopConfig`에서 작업자와 작업자가 확인해야 하는 내용에 대한 정보를 입력합니다. `HumanLoopConfig`의 각 파라미터에 대한 자세한 내용은 [HumanLoopConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html#sagemaker-CreateFlowDefinition-request-HumanLoopActivationConfig)를 참조하세요.

1. (선택 사항) 기본 제공 태스크 유형을 사용하면 `HumanLoopActivationConﬁg`에서 인적 루프를 시작하는 조건을 제공합니다. `HumanLoopActivationConﬁg` 파라미터에 필요한 입력을 생성하는 방법은 [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md) 섹션을 참조하세요. 여기에서 조건을 지정하지 않으면 기본 제공 작업 유형(예: Amazon Textract 또는 Amazon Rekognition)과 연결된 AWS 서비스에 흐름 정의를 제공할 때 해당 서비스는 검토를 위해 모든 작업을 인간 작업자에게 보냅니다.

   사용자 태스크 유형을 사용하면 `HumanLoopActivationConfig`는 비활성화됩니다. 사용자 지정 태스크 유형을 사용하여 인적 작업자에게 작업을 전송하는 시기를 제어하는 방법은 [Amazon Augmented AI를 사용자 지정 작업 유형과 함께 사용](a2i-task-types-custom.md) 섹션을 참조하세요.

1. (선택 사항) 기본 제공 태스크 유형을 사용하는 경우 [HumanLooprequestSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HumanLoopRequestSource.html) 파라미터에 통합 소스(예: Amazon Rekognition 또는 Amazon Textract)를 지정하세요.

1. `OutputConfig`의 경우 Amazon Simple Storage Service(S3)에서 인적 루프의 출력을 저장할 위치를 표시합니다.

1. (선택 사항) 흐름 정의를 분류하고 구성하는 데 도움이 되는 키 값 페어를 입력하려면 `Tags`을 사용합니다 각 태그는 사용자가 정의하는 키와 값으로 구성됩니다.

------
#### [ Amazon Textract – Key-value pair extraction ]

다음은 AWS SDK for Python (Boto3)을 사용하여 Amazon Textract의 인적 검토 워크플로(흐름 정의)를 생성해 달라는 요청의 예입니다. Amazon Textract 인적 루프를 생성하는 데 먼저 `'AWS/Textract/AnalyzeDocument/Forms/V1'`을 사용해야 합니다. Mechanical Turk 인력을 사용하는 경우에만 `PublicWorkforceTaskPrice`을 포함하세요.

```
sagemaker_client = boto3.client('sagemaker', aws_region)

response = sagemaker_client.create_flow_definition(
    FlowDefinitionName='ExampleFlowDefinition',
    HumanLoopRequestSource={
         'AwsManagedHumanLoopRequestSource': 'AWS/Textract/AnalyzeDocument/Forms/V1'
    }, 
    HumanLoopActivationConfig={
        'HumanLoopActivationConditionsConfig': {
            'HumanLoopActivationConditions': '{...}'
        }
    },
    HumanLoopConfig={
        'WorkteamArn': 'arn:aws:sagemaker:aws_region:aws_account_number:workteam/private-crowd/workteam_name',
        'HumanTaskUiArn': 'arn:aws:sagemaker:aws_region:aws_account_number:human-task-ui/template_name',
        'TaskTitle': 'Example task title',
        'TaskDescription': 'Example task description.',
        'TaskCount': 123,
        'TaskAvailabilityLifetimeInSeconds': 123,
        'TaskTimeLimitInSeconds': 123,
        'TaskKeywords': [
            'Keyword1','Keyword2'
        ],
        'PublicWorkforceTaskPrice': {
            'AmountInUsd': {
                'Dollars': 123,
                'Cents': 123,
                'TenthFractionsOfACent': 123
            }
        }
    },
    OutputConfig={
        'S3OutputPath': 's3://bucket/path/',
        'KmsKeyId': '1234abcd-12ab-34cd-56ef-1234567890ab'
    },
    RoleArn='arn:aws:iam::aws_account_number:role/role_name',
    Tags=[
        {
            'Key': 'KeyName',
            'Value': 'ValueName'
        },
    ]
)
```

------
#### [ Amazon Rekognition – Image moderation ]

다음은 AWS SDK for Python (Boto3)을 사용하여 Amazon Rekognition 인적 검토 워크플로(흐름 정의)를 생성해 달라는 요청의 예입니다. Amazon Rekognition 흐름 정의를 생성하려면 먼저 `'AWS/Rekognition/DetectModerationLabels/Image/V3'`을 사용해야 합니다. Mechanical Turk 인력을 사용하는 경우에만 `PublicWorkforceTaskPrice`을 포함하세요.

```
sagemaker_client = boto3.client('sagemaker', aws_region)

response = sagemaker_client.create_flow_definition(
    FlowDefinitionName='ExampleFlowDefinition',
    HumanLoopRequestSource={
         'AwsManagedHumanLoopRequestSource': 'AWS/Rekognition/DetectModerationLabels/Image/V3'
    }, 
    HumanLoopActivationConfig={
        'HumanLoopActivationConditionsConfig': {
            'HumanLoopActivationConditions': '{...}'
        }
    },
    HumanLoopConfig={
        'WorkteamArn': 'arn:aws:sagemaker:aws_region:aws_account_number:workteam/private-crowd/workteam_name',
        'HumanTaskUiArn': 'arn:aws:sagemaker:aws_region:aws_account_number:human-task-ui/template_name',
        'TaskTitle': 'Example task title',
        'TaskDescription': 'Example task description.',
        'TaskCount': 123,
        'TaskAvailabilityLifetimeInSeconds': 123,
        'TaskTimeLimitInSeconds': 123,
        'TaskKeywords': [
            'Keyword1','Keyword2'
        ],
        'PublicWorkforceTaskPrice': {
            'AmountInUsd': {
                'Dollars': 123,
                'Cents': 123,
                'TenthFractionsOfACent': 123
            }
        }
    },
    OutputConfig={
        'S3OutputPath': 's3://bucket/path/',
        'KmsKeyId': '1234abcd-12ab-34cd-56ef-1234567890ab'
    },
    RoleArn='arn:aws:iam::aws_account_number:role/role_name',
    Tags=[
        {
            'Key': 'KeyName',
            'Value': 'ValueName'
        },
    ]
)
```

------
#### [ Custom Workflow ]

다음은 사용자 지정 통합을 위해 인적 검토 워크플로(흐름 정의)를 생성해 달라는 요청의 예입니다. 이러한 유형의 인적 검토 워크플로를 생성하려면 흐름 정의 요청에서 `HumanLoopRequestSource`을 생략하세요. Mechanical Turk 인력을 사용하는 경우에만 `PublicWorkforceTaskPrice`을 포함하면 됩니다.

```
sagemaker_client = boto3.client('sagemaker', aws_region)

response = sagemaker_client.create_flow_definition(
    FlowDefinitionName='ExampleFlowDefinition',
    HumanLoopActivationConfig={
        'HumanLoopActivationConditionsConfig': {
            'HumanLoopActivationConditions': '{...}'
        }
    },
    HumanLoopConfig={
        'WorkteamArn': 'arn:aws:sagemaker:aws_region:aws_account_number:workteam/private-crowd/workteam_name',
        'HumanTaskUiArn': 'arn:aws:sagemaker:aws_region:aws_acount_number:human-task-ui/template_name',
        'TaskTitle': 'Example task title',
        'TaskDescription': 'Example task description.',
        'TaskCount': 123,
        'TaskAvailabilityLifetimeInSeconds': 123,
        'TaskTimeLimitInSeconds': 123,
        'TaskKeywords': [
            'Keyword1','Keyword2'
        ],
        'PublicWorkforceTaskPrice': {
            'AmountInUsd': {
                'Dollars': 123,
                'Cents': 123,
                'TenthFractionsOfACent': 123
            }
        }
    },
    OutputConfig={
        'S3OutputPath': 's3://bucket/path/',
        'KmsKeyId': '1234abcd-12ab-34cd-56ef-1234567890ab'
    },
    RoleArn='arn:aws:iam::account_number:role/role_name',
    Tags=[
        {
            'Key': 'KeyName',
            'Value': 'ValueName'
        },
    ]
)
```

------

### 다음 단계
<a name="a2i-next-step-createflowdefinition-api"></a>

`CreateFlowDefinition` API 작업이 성공적으로 호출된 경우 반환 값은 흐름 정의 Amazon 리소스 이름(ARN)입니다.

기본 제공 태스크 유형을 사용하는 경우 흐름 정의 ARN을 사용하여 해당 AWS 서비스의 API(예: Amazon Textract API)를 사용하여 인적 루프를 시작할 수 있습니다. 사용자 지정 태스크 유형의 경우 사용자는 ARN을 사용하여 Amazon Augmented AI 런타임 API를 사용하는 인적 루프를 시작할 수 있습니다. 이러한 두 옵션에 대한 자세한 내용은 [인적 루프 생성 및 시작](a2i-start-human-loop.md) 섹션을 참조하세요.

# Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마
<a name="a2i-human-fallback-conditions-json-schema"></a>

`HumanLoopActivationConditions`은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html) API의 입력 파라미터입니다. 이 파라미터는 JSON 형식의 문자열입니다. JSON은 통합 AI 서비스 API(예: `Rekognition.DetectModerationLabels` 또는 `Textract.AnalyzeDocument`)의 응답에 대해 이러한 조건을 평가할 때 인적 루프가 생성되는 조건을 모델링합니다. 이 응답을 추론이라고 합니다.** 예를 들어, Amazon Rekognition에서는 연결된 신뢰도 점수와 함께 조절 레이블의 추론을 전송합니다. 이 예제에서 추론은 이미지에 적합한 레이블에 대한 모델의 최적 추정치입니다. Amazon Textract의 경우 추론은 텍스트 블록(키-값 페어) 간의 연결(예: 텍스트 블록 내의 콘텐츠뿐만 아니라 양식에서 `Name:`과 `Sue` 간의 연결) 또는 단어 블록 간의 연결(예: 'Name')에 대해 수행됩니다.****

다음은 JSON에 대한 스키마입니다. 최상위 수준에서 `HumanLoopActivationConditions`에는 JSON 배열, `Conditions`가 있습니다. 이 배열의 각 멤버는 독립적인 조건이며, `true`로 평가되면 Amazon A2I에서 인적 루프가 생성됩니다. 이렇게 독립적인 각 조건은 단순한 조건 또는 복잡한 조건이 될 수 있습니다. 간단한 조건에는 다음과 같은 속성이 포함됩니다.
+ `ConditionType`: 이 속성은 조건의 유형을 식별합니다. Amazon A2I와 통합되는 각각의 AWS AI 서비스 API는 허용되는 자체 `ConditionTypes` 세트를 정의합니다.
  + Rekognition `DetectModerationLabels` - 이 API는 `ModerationLabelConfidenceCheck` 및 `Sampling` `ConditionType` 값을 지원합니다.
  + Textract `AnalyzeDocument` - 이 API는 `ImportantFormKeyConfidenceCheck`, `MissingImportantFormKey`, 및 `Sampling` `ConditionType` 값을 지원합니다.
+ `ConditionParameters` - 이는 조건을 파라미터화하는 JSON 객체입니다. 이 객체의 허용되는 속성 집합은 `ConditionType`의 값에 따라 달라집니다. 각 `ConditionType`은 자체 `ConditionParameters` 집합을 정의합니다.

`Conditions` 배열의 멤버는 복잡한 조건을 모델링할 수 있습니다. 이 작업은 `And` 및 `Or` 논리 연산자를 사용하여 단순 조건을 논리적으로 연결하고 토대가 되는 단순 조건을 중첩하여 수행됩니다. 최대 두 단계의 중첩이 지원됩니다.

```
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "Condition": {
            "type": "object",
            "properties": {
                "ConditionType": {
                    "type": "string"
                },
                "ConditionParameters": {
                    "type": "object"
                }
            },
            "required": [
                "ConditionType"
            ]
        },
        "OrConditionArray": {
            "type": "object",
            "properties": {
                "Or": {
                    "type": "array",
                    "minItems": 2,
                    "items": {
                        "$ref": "#/definitions/ComplexCondition"
                    }
                }
            }
        },
        "AndConditionArray": {
            "type": "object",
            "properties": {
                "And": {
                    "type": "array",
                    "minItems": 2,
                    "items": {
                        "$ref": "#/definitions/ComplexCondition"
                    }
                }
            }
        },
        "ComplexCondition": {
            "anyOf": [
                {
                    "$ref": "#/definitions/Condition"
                },
                {
                    "$ref": "#/definitions/OrConditionArray"
                },
                {
                    "$ref": "#/definitions/AndConditionArray"
                }
            ]
        }
    },
    "type": "object",
    "properties": {
        "Conditions": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ComplexCondition"
            }
        }
    }
}
```

**참고**  
사용자 지정 작업 유형에 통합된 인적 검토 워크플로에는 인적 루프 활성화 조건을 사용할 수 없습니다. `HumanLoopActivationConditions` 파라미터는 사용자 지정 작업 유형에 대해 비활성화됩니다.

**Topics**
+ [Amazon Textract의 인적 루프 활성화 조건 JSON 스키마 사용](a2i-json-humantaskactivationconditions-textract-example.md)
+ [Amazon Rekognition의 인적 루프 활성화 조건 JSON 스키마 사용](a2i-json-humantaskactivationconditions-rekognition-example.md)

# Amazon Textract의 인적 루프 활성화 조건 JSON 스키마 사용
<a name="a2i-json-humantaskactivationconditions-textract-example"></a>

Amazon A2I와 함께 사용하면 `AnalyzeDocument` 작업은 `ConditionType` 파라미터에서 다음과 같은 입력을 지원합니다.
+ `ImportantFormKeyConfidenceCheck` - 추론 신뢰도가 문서 양식 키 및 단어 블록에 대해 지정된 범위 내에 있는 경우 인적 루프를 생성하려면 이 조건을 사용합니다. 양식 키는 입력과 연결된 문서의 모든 단어입니다.** 입력을 값이라고 합니다.** 양식 키와 값을 함께 사용하는 것을 키-값 페어라고 합니다.** 단어 블록은 감지된 텍스트 블록 내부에서 Amazon Textract가 인식하는 단어를 말합니다.** Amazon Textract 문서 블록에 대해 자세히 알아보려면 Amazon Textract 개발자 안내서의 [문서 및 블록 객체를](https://docs.aws.amazon.com/textract/latest/dg/how-it-works-document-layout.html) 참조하세요.**
+ `MissingImportantFormKey` - Amazon Textract가 문서 내에서 키 또는 연결된 별칭을 식별하지 않은 경우 이 조건을 사용하여 인적 루프를 생성합니다.
+ `Sampling` - 추론 신뢰도 점수에 관계없이 인적 검토를 위해 전송할 양식 비율을 지정하려면 이 조건을 사용합니다. 이 조건을 사용하여 다음을 수행합니다.
  + 모델을 통해 분석된 모든 양식을 무작위로 샘플링하고 인적 검토를 위해 지정된 비율을 전송하여 ML 모델을 감사합니다.
  + `ImportantFormKeyConfidenceCheck` 조건을 사용하여 `ImportantFormKeyConfidenceCheck`에 지정된 조건을 충족하는 일정 비율의 추론을 무작위로 샘플링하여 인적 루프를 시작하고 지정된 비율만 검토를 위해 인적 작업자에게 전송합니다.

**참고**  
동일한 요청을 `AnalyzeDocument`로 여러 번 전송해도 해당 입력의 추론에 대한 `Sampling`의 결과는 변경되지 않습니다. 예를 들어, `AnalyzeDocument`를 한 번 요청했는데 `Sampling`이 인적 루프를 시작하지 않으면 이후 동일한 구성으로 `AnalyzeDocument`를 요청해도 인적 루프가 시작되지 않습니다.

## `ImportantFormKeyConfidenceCheck` 입력 및 결과
<a name="a2i-textract-importantformkeycofidencecheck"></a>

`ImportantFormKeyConfidenceCheck` `ConditionType`은 다음 `ConditionParameters`를 지원합니다.
+ `ImportantFormKey` - Amazon Textract에서 감지된 키-값 페어의 키를 나타내는 문자열이며, 인적 작업자의 검토가 필요합니다. 이 파라미터의 값이 특수 catch-all 값(\$1)이면 모든 키가 해당 조건과 일치하는 것으로 간주됩니다. 이 값은 특정 신뢰도 임계값을 충족하는 키-값 페어에서 인적 검토가 필요한 경우를 모델링하는 데 사용할 수 있습니다.
+ `ImportantFormKeyAliases` - 중요한 양식 키에 대한 대체 철자 또는 논리적 등가물을 나타내는 배열입니다.
+ `KeyValueBlockConfidenceEquals`
+ `KeyValueBlockConfidenceLessThan`
+ `KeyValueBlockConfidenceLessThanEquals`
+ `KeyValueBlockConfidenceGreaterThan`
+ `KeyValueBlockConfidenceGreaterThanEquals`
+ `WordBlockConfidenceEquals`
+ `WordBlockConfidenceLessThan`
+ `WordBlockConfidenceLessThanEquals`
+ `WordBlockConfidenceGreaterThan`
+ `WordBlockConfidenceGreaterThanEquals`

`ImportantFormKeyConfidenceCheck` `ConditionType`을 사용하면 Amazon A2I에서 인적 검토를 위해 `ImportantFormKey` 및 `ImportantFormKeyAliases`에서 지정한 키-값 블록 및 연결된 별칭에 대한 키-값 블록과 단어 블록 추론을 전송합니다.

흐름 정의를 만들 때 Amazon SageMaker AI 콘솔의 **인적 검토 워크플로** 섹션에서 제공되는 기본 작업자 태스크 템플릿을 사용하면 이 활성화 조건에 따라 사람이 검토하도록 전송된 키-값 및 블록 추론이 작업자 UI에 포함됩니다. 사용자 지정 작업자 태스크 템플릿을 사용하는 경우 Amazon Textract의 초기 값 입력 데이터(추론)를 포함하려면 `{{ task.input.selectedAiServiceResponse.blocks }}` 요소를 포함해야 합니다. 이 입력 요소를 사용하는 사용자 지정 템플릿의 예제는 [Amazon Textract에 사용되는 사용자 지정 템플릿 예제](a2i-custom-templates.md#a2i-custom-templates-textract-sample) 섹션을 참조하세요.

## `MissingImportantFormKey` 입력 및 결과
<a name="a2i-textract-missingimportantformkey"></a>

`MissingImportantFormKey` `ConditionType`은 다음 `ConditionParameters`를 지원합니다.
+ `ImportantFormKey` - Amazon Textract에서 감지된 키-값 페어의 키를 나타내는 문자열이며, 인적 작업자의 검토가 필요합니다.
+ `ImportantFormKeyAliases` - 중요한 양식 키에 대한 대체 철자 또는 논리적 등가물을 나타내는 배열입니다.

`MissingImportantFormKey` `ConditionType`을 사용할 때 `ImportantFormKey`의 키 또는 `ImportantFormKeyAliases`의 별칭이 Amazon Textract 추론에 포함되지 않은 경우 해당 양식이 검토를 위해 사람에게 전송되고 예측된 키-값 페어는 포함되지 않습니다. 예를 들어 Amazon Textract가 양식에서 `Address` 및 `Phone`을 식별하지만 `ImportantFormKey` `Name`(`MissingImportantFormKey` 조건 유형)이 누락된 경우 감지된 양식 키(`Address` 및 `Phone`) 없이 해당 양식이 검토를 위해 사람에게 전송됩니다.

SageMaker AI 콘솔에 제공되는 기본 작업자 태스크 템플릿을 사용하는 경우 작업자가 `ImportantFormKey`의 키 및 연결된 값을 식별하도록 요청하는 작업이 만들어집니다. 사용자 지정 작업자 작업 템플릿을 사용하는 경우 이 작업을 구성하려면 `<task.input.humanLoopContext>` 사용자 지정 HTML 요소를 포함해야 합니다.

## Sampling 입력 및 결과
<a name="a2i-textract-randomsamplingpercentage"></a>

`Sampling` `ConditionType`은 `RandomSamplingPercentage` `ConditionParameters`를 지원합니다. `RandomSamplingPercentage`에는 0.01\$1100 사이의 실수만 입력해야 합니다. 이 숫자는 인적 검토 조건을 충족하여 인적 검토를 위해 전송될 데이터의 비율을 나타냅니다. 다른 조건 없이 `Sampling` 조건을 사용하면 이 숫자는 단일 요청의 `AnalyzeDocument` 작업에 의한 모든 결과 추론 중 인적 검토를 위해 전송되는 비율을 나타냅니다.

다른 조건 유형 없이 `Sampling` 조건을 지정하면 모든 키-값 및 블록 추론이 작업자 검토를 위해 전송됩니다.

흐름 정의를 만들 때 SageMaker AI 콘솔의 **인적 검토 워크플로** 섹션에서 제공되는 기본 작업자 태스크 템플릿을 사용하면 이 활성화 조건에 따라 사람이 검토하도록 전송된 모든 키-값 및 블록 추론이 작업자 UI에 포함됩니다. 사용자 지정 작업자 태스크 템플릿을 사용하는 경우 Amazon Textract의 초기 값 입력 데이터(추론)를 포함하려면 `{{ task.input.selectedAiServiceResponse.blocks }}` 요소를 포함해야 합니다. 이 입력 요소를 사용하는 사용자 지정 템플릿의 예제는 [Amazon Textract에 사용되는 사용자 지정 템플릿 예제](a2i-custom-templates.md#a2i-custom-templates-textract-sample) 섹션을 참조하세요.

## 예제
<a name="a2i-json-activation-condition-examples"></a>

한 조건만 `true`로 평가되어도 인적 루프가 시작되지만, Amazon A2I에서는 Amazon Textract에서 분석된 각 객체에 대해 모든 조건을 평가합니다. 인적 검토자에게 `true`로 평가된 모든 조건에 대해 중요한 양식 키를 검토하도록 요청이 됩니다.

**예제 1: 신뢰도 점수가 인적 루프를 시작하는 지정된 범위 내에 있는 중요 양식 키 감지**

아래는 다음 세 가지 조건 중 하나가 충족되는 경우 인적 루프를 시작하는 `HumanLoopActivationConditions` JSON의 예제입니다.
+ Amazon Textract `AnalyzeDocument` API는 키-값 블록의 신뢰도가 60 미만이고 키와 값을 구성하는 각 단어 블록의 신뢰도가 85 미만이며 키가 `Name`, `Employee Name` 또는 `EmployeeName` 중 하나인 키-값 페어를 반환합니다.
+ Amazon Textract `AnalyzeDocument` API는 키-값 블록의 신뢰도가 65 미만이고 키와 값을 구성하는 각 단어 블록의 신뢰도가 85 미만이며 키가 `Pay Date`, `PayDate`, `DateOfPay`, 또는 `pay-date` 중 하나인 키-값 페어를 반환합니다.
+ Amazon Textract `AnalyzeDocument` API는 키-값 블록의 신뢰도가 60 미만이고 키와 값을 구성하는 각 단어 블록의 신뢰도가 85 미만이며 키가 `GrossPay`, `Gross Pay` 또는 `GrossAmount` 중 하나인 키-값 페어를 반환합니다.

```
{
    "Conditions": [
        {
            "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Employee Name",
                "ImportantFormKeyAliases": [
                    "Name",
                    "EmployeeName"
                ],
                "KeyValueBlockConfidenceLessThan": 60,
                "WordBlockConfidenceLessThan": 85
            }
        },
        {
            "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Pay Date",
                "ImportantFormKeyAliases": [
                    "PayDate",
                    "DateOfPay",
                    "pay-date"
                ],
                "KeyValueBlockConfidenceLessThan": 65,
                "WordBlockConfidenceLessThan": 85
            }
        },
        {
            "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Gross Pay",
                "ImportantFormKeyAliases": [
                    "GrossPay",
                    "GrossAmount"
                ],
                "KeyValueBlockConfidenceLessThan": 60,
                "WordBlockConfidenceLessThan": 85
            }
        }
    ]
}
```

**예제 2: `ImportantFormKeyConfidenceCheck` 사용**

다음 예제에서는 Amazon Textract에서 키-값 블록에 대한 신뢰도가 60 미만이고 기본 단어 블록에 대한 신뢰도가 90 미만인 키-값 페어를 감지하면 인적 루프가 생성됩니다. 사람인 검토자에게 신뢰도 값 비교와 일치한 모든 양식 키-값 페어를 검토하라는 메시지가 나타납니다.

```
{
    "Conditions": [
        {
            "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "*",
                "KeyValueBlockConfidenceLessThan": 60,
                "WordBlockConfidenceLessThan": 90
            }
        }
    ]
}
```

**예제 3: Sampling 사용**

다음 예제에서는 Amazon Textract `AnalyzeDocument` 요청으로 인한 추론 중 5%가 인적 작업자에게 검토를 위해 전송됩니다. Amazon Textract에서 반환된 모든 감지된 키-값 페어가 작업자 검토를 위해 전송됩니다.

```
{
  "Conditions": [
    {
      "ConditionType": "Sampling",
      "ConditionParameters": {
        "RandomSamplingPercentage": 5
      }
    }
  ]
}
```

**예제 4: `MissingImportantFormKey` 사용**

다음 예제에서는 Amazon Textract에서 감지된 키에 `Mailing Address` 또는 그 별칭 `Mailing Address:`가 누락될 경우 인적 검토가 시작됩니다. 기본 작업자 작업 템플릿을 사용하는 경우 작업자 UI에서 작업자에게 `Mailing Address` 또는 `Mailing Address:` 키 및 연결된 값을 식별하도록 요청합니다.

```
{
    "ConditionType": "MissingImportantFormKey",
    "ConditionParameters": {
        "ImportantFormKey": "Mailing Address",
        "ImportantFormKeyAliases": ["Mailing Address:"]
    }
}
```

**예 5: 샘플링 및 `And` 연산자가 있는 `ImportantFormKeyConfidenceCheck` 사용**

이 예제에서는 키가 `Pay Date`, `PayDate`, `DateOfPay`, 또는 `pay-date` 중 하나이고 키 값 블록의 신뢰도가 65 미만이며 키와 값을 구성하는 각 단어 블록의 신뢰도가 85 미만이면 Amazon Textract에서 감지된 키-값 페어 중 5%가 검토를 위해 작업자에게 전송됩니다.

```
{
  "Conditions": [
    {
      "And": [
        {
          "ConditionType": "Sampling",
          "ConditionParameters": {
            "RandomSamplingPercentage": 5
          }
        },
        {
          "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Pay Date",
                "ImportantFormKeyAliases": [
                    "PayDate",
                    "DateOfPay",
                    "pay-date"
                ],
                "KeyValueBlockConfidenceLessThan": 65,
                "WordBlockConfidenceLessThan": 85
            }
        }
      ]
    }
  ]
}
```

**예 6: 샘플링 및 `And` 연산자가 있는 `ImportantFormKeyConfidenceCheck` 사용**

이 예제를 사용하여 지정된 키-값 페어 중 낮은 신뢰도 추론을 항상 인적 검토를 위해 전송하고, 키-값 페어 중 높은 신뢰도 추론을 지정된 비율만큼 샘플링하도록 인적 검토 워크플로를 구성합니다.

다음 예제에서는 인적 검토가 다음 방법 중 하나로 시작됩니다.
+ 키-값 페어에서 키가 `Pay Date`, `PayDate`, `DateOfPay` 또는 `pay-date` 중 하나이고, 키-값 및 단어 블록 신뢰도가 60 미만으로 감지되면 인적 검토를 위해 전송됩니다. `Pay Date` 양식 키(및 해당 별칭) 및 연결된 값만 검토를 위해 작업자에게 전송됩니다.
+ 키가 `Pay Date`, `PayDate`, `DateOfPay` 또는 `pay-date` 중 하나이고, 키-값 및 단어 블록 신뢰도가 90을 초과하면 감지된 키-값 페어 중 5%가 인적 검토를 위해 전송됩니다. `Pay Date` 양식 키(및 해당 별칭) 및 연결된 값만 검토를 위해 작업자에게 전송됩니다.

```
{
  "Conditions": [
    {
      "Or": [
       {
          "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Pay Date",
                "ImportantFormKeyAliases": [
                    "PayDate",
                    "DateOfPay",
                    "pay-date"
                ],
                "KeyValueBlockConfidenceLessThan": 60,
                "WordBlockConfidenceLessThan": 60
            }
        },
        {
            "And": [
                {
                    "ConditionType": "Sampling",
                    "ConditionParameters": {
                        "RandomSamplingPercentage": 5
                    }
                },
                {
                    "ConditionType": "ImportantFormKeyConfidenceCheck",
                        "ConditionParameters": {
                            "ImportantFormKey": "Pay Date",
                            "ImportantFormKeyAliases": [
                                "PayDate",
                                "DateOfPay",
                                "pay-date"
                        ],
                        "KeyValueBlockConfidenceLessThan": 90
                        "WordBlockConfidenceGreaterThan": 90
                    }
                }
            ]
        }
      ]
    }
  ]
}
```

**예 7: 샘플링 및 `Or` 연산자가 있는 `ImportantFormKeyConfidenceCheck` 사용**

다음 예제에서 Amazon Textract `AnalyzeDocument` 작업은 키가 `Pay Date`, `PayDate`, `DateOfPay` 또는 `pay-date` 중 하나이고, 키-값 블록의 신뢰도가 65 미만이고, 키와 값을 구성하는 각 단어 블록의 신뢰도가 85 미만인 키-값 페어를 반환합니다. 또한 다른 모든 양식 중 5%가 인적 루프를 시작합니다. 무작위로 선택한 각 양식에 대해 해당 양식에 대해 감지된 모든 키-값 페어가 검토를 위해 사람에게 전송됩니다.

```
{
  "Conditions": [
    {
      "Or": [
        {
          "ConditionType": "Sampling",
          "ConditionParameters": {
            "RandomSamplingPercentage": 5
          }
        },
        {
           "ConditionType": "ImportantFormKeyConfidenceCheck",
            "ConditionParameters": {
                "ImportantFormKey": "Pay Date",
                "ImportantFormKeyAliases": [
                    "PayDate",
                    "DateOfPay",
                    "pay-date"
                ],
                "KeyValueBlockConfidenceLessThan": 65,
                "WordBlockConfidenceLessThan": 85
            }
          }
        }
      ]
    }
  ]
}
```

# Amazon Rekognition의 인적 루프 활성화 조건 JSON 스키마 사용
<a name="a2i-json-humantaskactivationconditions-rekognition-example"></a>

Amazon A2I와 함께 사용하면 Amazon Rekognition `DetectModerationLabels` 작업은 `ConditionType` 파라미터에서 다음과 같은 입력을 지원합니다.
+ `ModerationLabelConfidenceCheck` – 하나 이상의 지정된 레이블에 대해 추론 신뢰도가 낮을 때 인적 루프를 생성하려면 이 조건 유형을 사용합니다.
+ `Sampling` – 모든 추론 중 인적 검토를 위해 전송할 비율을 지정하려면 이 조건을 사용합니다. 이 조건을 사용하여 다음을 수행합니다.
  + 모델의 모든 추론을 무작위로 샘플링하고 인적 검토를 위해 지정된 비율을 전송하여 ML 모델을 감사합니다.
  + `ModerationLabelConfidenceCheck` 조건을 사용하여 `ModerationLabelConfidenceCheck`에 지정된 조건을 충족하는 일정 비율의 추론을 무작위로 샘플링하여 인적 루프를 시작하고 지정된 비율만 검토를 위해 인적 작업자에게 전송합니다.

**참고**  
동일한 요청을 `DetectModerationLabels`로 여러 번 전송해도 해당 입력의 추론에 대한 `Sampling`의 결과는 변경되지 않습니다. 예를 들어, `DetectModerationLabels`를 한 번 요청했는데 `Sampling`이 인적 루프를 시작하지 않으면 이후 동일한 구성으로 `DetectModerationLabels`를 요청해도 인적 루프가 시작되지 않습니다.

흐름 정의를 만들 때 Amazon SageMaker AI 콘솔의 **인적 검토 워크플로** 섹션에서 제공되는 기본 작업자 태스크 템플릿을 사용하면, 작업자가 해당 작업을 열 때 이 활성화 조건에 따라 사람이 검토하도록 전송된 추론이 작업자 UI에 포함됩니다. 사용자 지정 작업자 작업 템플릿을 사용하는 경우 이러한 추론에 액세스하려면 `<task.input.selectedAiServiceResponse.blocks>` 사용자 지정 HTML 요소를 포함해야 합니다. 이 HTML 요소를 사용하는 사용자 지정 템플릿의 예제는 [Amazon Rekognition에 사용되는 사용자 지정 템플릿 예제](a2i-custom-templates.md#a2i-custom-templates-rekognition-sample) 섹션을 참조하세요.

## `ModerationLabelConfidenceCheck` 입력
<a name="a2i-rek-moderationlabelconfidencecheck"></a>

`ModerationLabelConfidenceCheck` `ConditionType`에 대해 다음 `ConditionParameters`가 지원됩니다.
+ `ModerationLabelName` – Amazon Rekognition `DetectModerationLabels` 작업에서 탐지된 [중재라벨의](https://docs.aws.amazon.com/rekognition/latest/dg/API_ModerationLabel.html) 정확한 이름(대소문자 구분). 중재 레이블을 나타내는 특수 catch-all 값(\$1)을 지정할 수 있습니다.
+ `ConfidenceEquals`
+ `ConfidenceLessThan`
+ `ConfidenceLessThanEquals`
+ `ConfidenceGreaterThan`
+ `ConfidenceGreaterThanEquals`

`ModerationLabelConfidenceCheck` `ConditionType`을 사용하면 Amazon A2I는 `ModerationLabelName`에서 지정한 레이블에 대한 레이블 추론을 인적 검토를 위해 전송합니다.

## Sampling 입력
<a name="a2i-rek-randomsamplingpercentage"></a>

`Sampling` `ConditionType`은 `RandomSamplingPercentage` `ConditionParameters`를 지원합니다. `RandomSamplingPercentage` 파라미터에는 0.01\$1100 사이의 실수만 입력해야 합니다. 이 숫자는 인적 검토 조건을 충족하여 인적 검토를 위해 전송할 추론의 비율을 나타냅니다. 다른 조건 없이 `Sampling` 조건을 사용하면 이 숫자는 단일 `DetectModerationLabel` 요청에 의한 모든 결과 추론 중 인적 검토를 위해 전송할 비율을 나타냅니다.

## 예제
<a name="a2i-json-rek-activation-condition-examples"></a>

**예 1: `And` 연산자가 있는 `ModerationLabelConfidenceCheck` 사용**

다음 `HumanLoopActivationConditions` 조건의 예제는 다음 조건 중 하나 이상을 충족하면 인적 루프를 시작합니다.
+ Amazon Rekognition은 신뢰도가 90에서 99 사이인 `Graphic Male Nudity` 조절 레이블을 감지합니다.
+ Amazon Rekognition은 신뢰도가 80에서 99 사이인 `Graphic Female Nudity` 조절 레이블을 감지합니다.

`Or` 및 `And` 논리 연산자의 용도는 이 논리를 모델링하는 것입니다.

`Or` 연산자 아래의 두 조건 중 하나만 `true`로 평가해도 인적 루프를 생성할 수 있지만 Amazon Augmented AI는 모든 조건을 평가합니다. 인적 검토자에게 `true`로 평가된 모든 조건에 대한 조절 레이블을 검토하도록 요청이 됩니다.

```
{
     "Conditions": [{
         "Or": [{
                 "And": [{
                         "ConditionType": "ModerationLabelConfidenceCheck",
                         "ConditionParameters": {
                             "ModerationLabelName": "Graphic Male Nudity",
                             "ConfidenceLessThanEquals": 99
                         }
                     },
                     {
                         "ConditionType": "ModerationLabelConfidenceCheck",
                         "ConditionParameters": {
                             "ModerationLabelName": "Graphic Male Nudity",
                             "ConfidenceGreaterThanEquals": 90
                         }
                     }
                 ]
             },
             {
                 "And": [{
                         "ConditionType": "ModerationLabelConfidenceCheck",
                         "ConditionParameters": {
                             "ModerationLabelName": "Graphic Female Nudity",
                             "ConfidenceLessThanEquals": 99
                         }
                     },
                     {
                         "ConditionType": "ModerationLabelConfidenceCheck",
                         "ConditionParameters": {
                             "ModerationLabelName": "Graphic Female Nudity",
                             "ConfidenceGreaterThanEquals": 80
                         }
                     }
                 ]
             }
         ]
     }]
}
```

**예 2: 포괄 값(\$1)과 함께 `ModerationLabelConfidenceCheck` 사용**

다음 예제에서는 신뢰도가 75 이상인 조절 레이블이 감지되면 인적 루프가 시작됩니다. 인적 검토자는 신뢰도 점수가 75 이상인 모든 중재 레이블을 검토해야 합니다.

```
{
    "Conditions": [
        {
            "ConditionType": "ModerationLabelConfidenceCheck",
            "ConditionParameters": {
                "ModerationLabelName": "*",
                "ConfidenceGreaterThanEquals": 75
            }
        }
    ]
}
```

**예제 3: Sampling 사용**

다음 예에서는 `DetectModerationLabels` 요청으로 인한 Amazon Rekognition 추론 중 5%가 인적 작업자에게 전송됩니다. SageMaker AI 콘솔에 제공된 기본 작업자 태스크 템플릿을 사용하는 경우 Amazon Rekognition에서 반환한 모든 조절 레이블이 작업자 검토를 위해 전송됩니다.

```
{
  "Conditions": [
    {
      "ConditionType": "Sampling",
      "ConditionParameters": {
        "RandomSamplingPercentage": 5
      }
    }
  ]
}
```

**예 4: 샘플링 및 `And` 연산자가 있는 `ModerationLabelConfidenceCheck` 사용**

이 예에서는 `Graphic Male Nudity` 조절 레이블이 신뢰도가 50을 초과하면 Amazon Rekognition 추론 중 5%가 작업자 검토를 위해 전송됩니다. SageMaker AI 콘솔에 제공된 기본 작업자 태스크 템플릿을 사용하는 경우 `Graphic Male Nudity` 레이블의 추론만 작업자 검토를 위해 전송됩니다.

```
{
  "Conditions": [
    {
      "And": [
        {
          "ConditionType": "Sampling",
          "ConditionParameters": {
            "RandomSamplingPercentage": 5
          }
        },
        {
          "ConditionType": "ModerationLabelConfidenceCheck",
          "ConditionParameters": {
            "ModerationLabelName": "Graphic Male Nudity",
            "ConfidenceGreaterThan": 50
          }
        }
      ]
    }
  ]
}
```

**예 5: 샘플링 및 `And` 연산자가 있는 `ModerationLabelConfidenceCheck` 사용**

이 예제를 사용하여 지정된 레이블 중 낮은 신뢰도 추론을 항상 인적 검토를 위해 전송하고, 레이블 중 높은 신뢰도 추론을 지정된 비율만큼 샘플링하도록 인적 검토 워크플로를 구성합니다.

다음 예제에서는 인적 검토가 다음 방법 중 하나로 시작됩니다.
+ `Graphic Male Nudity` 중재 레이블에 대한 추론 중 신뢰도 점수가 60 미만인 경우 항상 인적 검토를 위해 전송됩니다. `Graphic Male Nudity` 레이블만 검토를 위해 작업자에게 전송됩니다.
+ 신뢰도 점수가 90을 초과하면 `Graphic Male Nudity` 조절 레이블에 대한 모든 추론 중 5%가 항상 인적 검토를 위해 전송됩니다. `Graphic Male Nudity` 레이블만 검토를 위해 작업자에게 전송됩니다.

```
{
  "Conditions": [
    {
      "Or": [
        {
          "ConditionType": "ModerationLabelConfidenceCheck",
          "ConditionParameters": {
            "ModerationLabelName": "Graphic Male Nudity",
            "ConfidenceLessThan": 60
          }
        },
        {
            "And": [
                {
                    "ConditionType": "Sampling",
                    "ConditionParameters": {
                        "RandomSamplingPercentage": 5
                    }
                },
                {
                    "ConditionType": "ModerationLabelConfidenceCheck",
                    "ConditionParameters": {
                        "ModerationLabelName": "Graphic Male Nudity",
                        "ConfidenceGreaterThan": 90
                    }
                }
            ]
        }
      ]
    }
  ]
}
```

**예 6: 샘플링 및 `Or` 연산자가 있는 `ModerationLabelConfidenceCheck` 사용**

다음 예제에서는 Amazon Rekognition 추론 응답에 추론 신뢰도가 50을 초과하는 'Graphic Male Nudity' 레이블이 포함되면 인적 루프가 생성됩니다. 또한 다른 모든 추론 중 5%가 인적 루프를 시작합니다.

```
{
  "Conditions": [
    {
      "Or": [
        {
          "ConditionType": "Sampling",
          "ConditionParameters": {
            "RandomSamplingPercentage": 5
          }
        },
        {
          "ConditionType": "ModerationLabelConfidenceCheck",
          "ConditionParameters": {
            "ModerationLabelName": "Graphic Male Nudity",
            "ConfidenceGreaterThan": 50
          }
        }
      ]
    }
  ]
}
```

# 인적 검토 워크플로 삭제
<a name="a2i-delete-flow-definition"></a>

인적 검토 워크플로를 삭제하거나 인적 루프가 진행되는 동안 AWS 계정을 삭제하면 인적 검토 워크플로 상태가 로 변경됩니다`Deleting`. 작업자가 이러한 인적 루프에서 생성한 태스크를 시작하지 않은 경우 Amazon A2I는 모든 관련된 인적 루프를 자동으로 중지하고 삭제합니다. 인적 작업자가 이미 태스크를 수행하고 있는 경우 완료되거나 만료될 때까지 해당 작업은 계속 사용 가능합니다. 작업자가 태스크를 계속 수행하는 한 인적 검토 워크플로의 상태는 `Deleting`입니다. 이러한 태스크가 완료되면 결과는 흐름 정의에서 지정한 Amazon S3 버킷에 저장됩니다.

흐름 정의를 삭제해도 S3 버킷에서 작업자 응답이 제거되지 않습니다. 작업이 완료되었지만 AWS 계정을 삭제한 경우 결과는 Augmented AI 서비스 버킷에 30일 동안 저장된 다음 영구적으로 삭제됩니다.

인적 루프가 모두 삭제되면 인적 검토 워크플로는 영구적으로 삭제됩니다. 인적 검토 워크플로가 삭제되면 해당 이름을 다시 사용하여 새 인적 검토 워크플로를 생성할 수 있습니다.

다음과 같은 이유로 인적 검토 워크플로를 삭제할 수 있습니다.
+ 인적 검토자 집합으로 데이터를 전송했으며 이러한 작업자가 더 이상 해당 작업에 대해 작업하지 않도록 하기 위해 시작되지 않은 모든 인적 루프를 삭제하려고 합니다.
+ 작업자 UI를 생성하는 데 사용되는 작업자 작업 템플릿이 올바르게 렌더링되지 않거나 예상대로 작동하지 않습니다.

인적 검토 워크플로를 삭제하면 다음과 같은 변경 사항이 발생합니다.
+ Amazon SageMaker AI 콘솔의 Augmented AI 영역에 있는 **인적 검토 워크플로** 페이지에 인적 검토 워크플로가 더 이상 표시되지 않습니다.
+ 인적 검토 워크플로 이름을 API 작업 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFlowDefinition.html) 또는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFlowDefinition.html)에 입력으로 사용하는 경우 Augmented AI는 `ResourceNotFound` 오류를 반환합니다.
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListFlowDefinitions.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListFlowDefinitions.html)을 사용하면 삭제된 인적 검토 워크플로는 결과에 포함되지 않습니다.
+ 인적 검토 워크플로 ARN을 Augmented AI 런타임 API 작업 `[ListHumanLoops](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_ListHumanLoops.html)`에 입력으로 사용하는 경우 Augmented AI는 `ResourceNotFoundException`을 반환합니다.

## 콘솔 또는 SageMaker API를 사용하여 흐름 정의 삭제
<a name="a2i-delete-flow-definition-how-to"></a>

SageMaker AI 콘솔의 Augmented AI 영역에 있는 **인적 검토 워크플로** 페이지에서 또는 SageMaker AI API를 사용하여 인적 검토 워크플로를 삭제할 수 있습니다.

상태가 `Active`인 경우에만 흐름 정의를 삭제할 수 있습니다.

**인적 검토 워크플로 삭제(콘솔)**

1. [https://console.aws.amazon.com/a2i/](https://console.aws.amazon.com/a2i)에서 Augmented AI 콘솔로 이동합니다.

1. 탐색 창의 **Augmented AI** 섹션 아래에서 **인적 검토 워크플로**를 선택합니다.

1. 삭제하려는 인적 검토 워크플로의 하이퍼링크된 이름을 선택합니다.

1. 인적 검토 워크플로의 **요약** 페이지에서 **삭제**를 선택합니다.

1. 인적 검토 워크플로를 삭제할지 확인하는 대화 상자에서 **삭제**를 선택합니다.

**인적 검토 워크플로** 페이지로 자동으로 리디렉션됩니다. 인적 검토 워크플로가 삭제되는 동안에는 해당 워크플로의 상태 열에 **삭제 중** 상태가 나타납니다. 삭제한 후에는 이 페이지의 워크플로 목록에 해당 워크플로가 나타나지 않습니다.

**인적 검토 워크플로 삭제(API)**  
SageMaker AI [DeleteFlowDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFlowDefinition.html) API 작업을 사용하여 인적 검토 워크플로(흐름 정의)를 삭제할 수 있습니다. 이 API 작업은 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-flow-definition.html) 및 [다양한 언어별 SDK](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFlowDefinition.html#API_DeleteFlowDefinition_SeeAlso)를 통해 지원됩니다. 다음 표에는 SDK for Python(Boto3) 및를 사용하여 인적 검토 워크플로를 삭제 AWS CLI 하는 요청의 예가 나와 있습니다*`example-flow-definition`*.

------
#### [ AWS SDK for Python (Boto3) ]

다음 요청 예제는 Python용 SDK(Boto3)를 사용하여 인적 검토 워크플로를 삭제합니다. 추가 정보는AWS Python용 SDK(Boto) API 참조의 [흐름\$1정의\$1삭제](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.delete_flow_definition)를 참조하세요.**

```
import boto3

sagemaker_client = boto3.client('sagemaker')
response = sagemaker_client.delete_flow_definition(FlowDefinitionName='example-flow-definition')
```

------
#### [ AWS CLI ]

다음 요청 예제에서는 AWS CLI를 사용하여 인적 검토 워크플로를 삭제합니다. 추가 정보는 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)의 [흐름-정의-삭제](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-flow-definition.html)를 참조하세요.**

```
$ aws sagemaker delete-flow-definition --flow-definition-name 'example-flow-definition'
```

------

작업이 성공하면 Augmented AI에서 비어있는 HTTP 본문과 함께 HTTP 200 응답을 다시 전송합니다.

# 인적 루프 생성 및 시작
<a name="a2i-start-human-loop"></a>

인적 루프는 인적 검토 워크플로를 시작하고 인적 작업자에게 데이터 검토 작업을 전송합니다.** Amazon A2I 기본 제공 태스크 유형 중 하나를 사용하면 흐름 정의에 지정된 조건이 충족되면 해당 AWS 서비스가 사용자를 대신하여 인적 루프를 생성하고 시작합니다. 흐름 정의에 지정된 조건이 없으면 각 객체에 대해 인적 루프가 생성됩니다. 사용자 지정 작업에 Amazon A2I를 사용하면 애플리케이션에서 `StartHumanLoop`가 호출될 때 인적 루프가 시작됩니다.

다음 지침에 따라 Amazon Rekognition 또는 Amazon Textract 기본 제공 태스크 유형 및 사용자 지정 태스크 유형을 사용하여 인적 루프를 구성할 수 있습니다.

**사전 조건**

인적 루프를 생성하고 시작하려면 인적 루프를 구성하거나 시작하는 AWS Identity and Access Management (IAM) 사용자 또는 역할에 `AmazonAugmentedAIFullAccess` 정책을 연결해야 합니다. 이는 기본 제공 태스크 유형에 대해 `HumanLoopConfig`을 사용하여 인적 루프를 구성하는 데 사용하는 ID가 됩니다. 사용자 지정 태스크 유형의 경우에는 이것이 `StartHumanLoop` 호출에 사용하는 ID가 됩니다.

또한 기본 제공 태스크 유형을 사용하는 경우 사용자 또는 역할에 태스크 유형과 연결된 AWS 서비스의 API 작업을 호출할 수 있는 권한이 있어야 합니다. 예를 들어 Amazon Rekognition 및 Augmented AI를 사용하는 경우, 먼저 `DetectModerationLabels`을 호출하는 데 필요한 사용 권한을 연결해야 합니다. 사용자가 이러한 개별 서비스 사용 권한을 부여하는 데 사용할 수 있는 자격 증명 기반 정책에 대한 내용은 [Amazon Rekognition 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/rekognition/latest/dg/security_iam_id-based-policy-examples.html) 및 [Amazon Textract 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/textract/latest/dg/security_iam_id-based-policy-examples.html) 섹션을 참조하세요. 사용자는 보다 일반적인 정책인 `AmazonAugmentedAIIntegratedAPIAccess`를 사용하여 이러한 권한을 부여할 수도 있습니다. 자세한 내용은 [Amazon A2I, Amazon Textract 및 Amazon Rekognition API 작업을 간접 호출할 수 있는 권한을 가진 사용자 생성](a2i-permissions-security.md#a2i-grant-general-permission) 섹션을 참조하세요.

인적 루프를 생성하고 시작하기 위해서는 흐름 정의 ARN이 필요합니다. 흐름 정의(또는 사용자 검토 워크플로)를 생성하는 방법은 [인적 검토 워크플로 생성](a2i-create-flow-definition.md) 섹션을 참조하세요.

**중요**  
Amazon A2I에는 인적 루프 입력 이미지 데이터가 포함된 모든 S3 버킷에 CORS 정책이 첨부되어 있어야 합니다. 이 변경에 대해 자세히 알아보려면 [CORS 권한 요구 사항](a2i-permissions-security.md#a2i-cors-update) 섹션을 참조하세요.

## 기본 제공 태스크 유형에 대한 인적 루프 생성 및 시작
<a name="a2i-human-loop-built-in-task-type"></a>

기본 제공 태스크 유형 작업을 사용하여 인적 루프를 시작하려면 해당 서비스의 API를 사용하여 입력 데이터를 제공하고 인적 루프를 구성합니다. Amazon Textract의 경우 `AnalyzeDocument` API 작업을 사용합니다. Amazon Rekognition의 경우 `DetectModerationLabels` API 작업을 사용합니다. AWS CLI 또는 언어별 SDK를 사용하여 이러한 API 작업을 사용하여 요청을 생성할 수 있습니다.

**중요**  
내장된 태스크 유형을 사용하여 인적 루프를 생성하는 경우 사용자는 `StartHumanLoop` 작업에 제공되는 입력과 관련된 일련의 `ContentClassifiers`를 지정하는 데 `DataAttributes`를 사용할 수 있습니다. 콘텐츠 분류자를 사용하여 콘텐츠에 개인 식별 정보 또는 성인 콘텐츠가 없다는 것을 선언합니다.  
Amazon Mechanical Turk를 사용하려면 데이터에 HIPAA에 따른 보호 대상 건강 정보를 비롯한 개인 식별 정보가 없어야 합니다. `FreeOfPersonallyIdentifiableInformation` 콘텐츠 분류자를 포함하세요. 이 콘텐츠 분류자를 사용하지 않는 경우 SageMaker AI는 사용자의 작업을 Mechanical Turk로 전송하지 않습니다. 데이터에 성인 콘텐츠가 없으면 `'FreeOfAdultContent'` 분류자도 포함합니다. 이러한 콘텐츠 분류자를 사용하지 않으면 SageMaker AI에서 작업을 볼 수 있는 Mechanical Turk 작업자를 제한할 수 있습니다.

기본 제공 작업 유형의 AWS 서비스 API를 사용하여 ML 작업을 시작한 후 Amazon A2I는 해당 서비스의 추론 결과를 모니터링합니다. 예를 들어, Amazon Rekognition을 사용하여 작업을 실행할 때 Amazon A2I에서는 각 이미지의 추론 신뢰도 점수를 확인하고 이를 흐름 정의에 지정된 신뢰도 임곗값과 비교합니다. 인적 검토 작업을 시작하는 조건이 충족되거나 흐름 정의에 조건을 지정하지 않은 경우 인적 검토 작업이 작업자에게 전송됩니다.

### Amazon Textract 인적 루프 생성
<a name="a2i-human-loop-textract"></a>

Amazon A2I는 Amazon Textract와 통합되어 사용자는 Amazon Textract API를 사용하여 인적 루프를 구성하고 시작할 수 있습니다. 문서 분석을 위해 문서 파일을 Amazon Textract로 전송하려면 Amazon Textract [`AnalyzeDocument` API 작업](https://docs.aws.amazon.com/textract/latest/dg/API_AnalyzeDocument.html)을 사용합니다. 이 문서 분석 작업에 인적 루프를 추가하려면 먼저 파라미터 `HumanLoopConfig`를 구성해야 합니다.

인적 루프를 구성할 때 `HumanLoopConfig`의 `FlowDefinitionArn`에 지정하는 흐름 정의는 `Document` 파라미터의 `Bucket`에서 식별된 버킷과 동일한 AWS 리전에 있어야 합니다.

다음 표에는 AWS CLI 및에서이 작업을 사용하는 방법의 예가 나와 있습니다 AWS SDK for Python (Boto3).

------
#### [ AWS SDK for Python (Boto3) ]

다음 요청 예제에서는 SDK for Python(Boto3)을 사용합니다. 자세한 내용은AWS SDK for Python(Boto) API 참조의 [analyze\$1document](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/textract.html#Textract.Client.analyze_document) 섹션을 참조하세요.**

```
import boto3

textract = boto3.client('textract', aws_region)

response = textract.analyze_document(
            Document={'S3Object': {'Bucket': bucket_name, 'Name': document_name}},
            FeatureTypes=["TABLES", "FORMS"],
            HumanLoopConfig={
                'FlowDefinitionArn': 'arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name',
                'HumanLoopName': 'human_loop_name',
                'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']}
            }
          )
```

------
#### [ AWS CLI ]

다음 요청 예제에서는 AWS CLI를 사용합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)에서 [analyze-document](https://docs.aws.amazon.com/cli/latest/reference/textract/analyze-document.html)를 참조하세요.**

```
$ aws textract analyze-document \
     --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \
     --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws-region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}' \
     --feature-types '["TABLES", "FORMS"]'
```

```
$ aws textract analyze-document \
     --document '{"S3Object":{"Bucket":"bucket_name","Name":"document_name"}}' \
     --human-loop-config \
          '{"HumanLoopName":"human_loop_name","FlowDefinitionArn":"arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name","DataAttributes": {"ContentClassifiers":["FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent"]}}' \
     --feature-types '["TABLES", "FORMS"]'
```

------

인적 루프가 구성된 상태에서 `AnalyzeDocument`를 실행하면 Amazon A2I에서 `AnalyzeDocument`의 결과를 모니터링하고 흐름 정의의 활성화 조건에 대해 이를 확인합니다. 하나 이상의 키-값 페어에 대한 Amazon Textract의 추론 신뢰도 점수가 검토 조건을 충족하는 경우 Amazon A2I는 인적 검토 루프를 시작하고 `AnalyzeDocument` 응답에 [https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html](https://docs.aws.amazon.com/textract/latest/dg/API_HumanLoopActivationOutput.html) 객체를 포함합니다.

### Amazon Rekognition 인적 루프 생성하기
<a name="a2i-human-loop-rekognition"></a>

Amazon A2I는 Amazon Rekognition과 통합되어 사용자는 Amazon Rekognition API를 사용하여 인적 루프를 구성하고 시작할 수 있습니다. 콘텐츠 조절을 위해 Amazon Rekognition에 이미지를 전송하려면 Amazon Rekognition [`DetectModerationLabels` API 작업](https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectModerationLabels.html)을 사용합니다. 인적 루프를 구성하려면 `DetectModerationLabels`를 구성할 때 `HumanLoopConfig` 파라미터를 설정합니다.

인적 루프를 구성할 때 `HumanLoopConfig`의 `FlowDefinitionArn`에서 지정하는 흐름 정의는 `Image` 파라미터의 `Bucket`에서 식별된 S3 버킷과 동일한 AWS 리전에 있어야 합니다.

다음 표에는 AWS CLI 및에서이 작업을 사용하는 방법의 예가 나와 있습니다 AWS SDK for Python (Boto3).

------
#### [ AWS SDK for Python (Boto3) ]

다음 요청 예제에서는 SDK for Python(Boto3)을 사용합니다. 자세한 내용은 *AWS SDK for Python(Boto) API 참조*의 [detect\$1moderation\$1labels](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_moderation_labels)를 참조하세요.

```
import boto3

rekognition = boto3.client("rekognition", aws_region)

response = rekognition.detect_moderation_labels( \
        Image={'S3Object': {'Bucket': bucket_name, 'Name': image_name}}, \
        HumanLoopConfig={ \
            'HumanLoopName': 'human_loop_name', \
            'FlowDefinitionArn': , "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name" \
            'DataAttributes': {'ContentClassifiers': ['FreeOfPersonallyIdentifiableInformation','FreeOfAdultContent']}
         })
```

------
#### [ AWS CLI ]

다음 요청 예제에서는 AWS CLI를 사용합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)의 [detect-moderation-labels](https://docs.aws.amazon.com/cli/latest/reference/rekognition/detect-moderation-labels.html) 섹션을 참조하세요.**

```
$ aws rekognition detect-moderation-labels \
    --image "S3Object={Bucket='bucket_name',Name='image_name'}" \
    --human-loop-config HumanLoopName="human_loop_name",FlowDefinitionArn="arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name",DataAttributes='{ContentClassifiers=["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}'
```

```
$ aws rekognition detect-moderation-labels \
    --image "S3Object={Bucket='bucket_name',Name='image_name'}" \
    --human-loop-config \
        '{"HumanLoopName": "human_loop_name", "FlowDefinitionArn": "arn:aws:sagemaker:aws_region:aws_account_number:flow-definition/flow_def_name", "DataAttributes": {"ContentClassifiers": ["FreeOfPersonallyIdentifiableInformation", "FreeOfAdultContent"]}}'
```

------

인적 루프가 구성된 상태에서 `DetectModerationLabels`를 실행하면 Amazon A2I에서 `DetectModerationLabels`의 결과를 모니터링하고 흐름 정의의 활성화 조건에 대해 이를 확인합니다. 이미지에 대한 Amazon Rekognition 추론 신뢰도 점수가 검토 조건을 충족하면 Amazon A2I에서 인적 검토 루프를 시작하고 응답 요소 `HumanLoopActivationOutput`을 `DetectModerationLabels` 응답에 포함합니다.

## 사용자 지정 태스크 유형에 대한 인적 루프 생성 및 시작
<a name="a2i-instructions-starthumanloop"></a>

사용자 지정 인적 검토 작업에 대한 인적 루프를 구성하려면 애플리케이션 내에서 `StartHumanLoop` 작업을 사용합니다. 이 섹션에서는 AWS SDK for Python (Boto3) 및 AWS Command Line Interface ()를 사용한 인적 루프 요청의 예를 제공합니다AWS CLI. `StartHumanLoop`을 지원하는 다른 언어별 SDK에 대한 설명서를 보려면 Amazon Augmented AI 런타임 API 설명서에서 [StartHumanLoop의](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StartHumanLoop.html) **관련 섹션**을 사용하세요. 사용자 지정 태스크 유형과 함께 Amazon A2I를 사용하는 방법을 보여주는 예제를 확인하려면 [Amazon A2I를 사용한 사용 사례 및 예제](a2i-task-types-general.md)을 참조하세요.

**사전 조건**

이 절차를 완료하려면 다음이 필요합니다.
+ JSON 형식 파일의 문자열 표현으로 형식이 지정된 입력 데이터
+ 흐름 정의의 Amazon 리소스 이름(ARN)

**인적 루프를 구성하려면**

1. `DataAttributes`에는 `StartHumanLoop` 작업에 제공된 입력과 관련된 `ContentClassifiers` 세트를 지정합니다. 콘텐츠 분류자를 사용하여 콘텐츠에 개인 식별 정보 또는 성인 콘텐츠가 없다는 것을 선언합니다.

   Amazon Mechanical Turk를 사용하려면 데이터에 HIPAA에 따라 보호 대상 건강 정보를 비롯한 개인 식별 정보가 없고 `FreeOfPersonallyIdentifiableInformation` 콘텐츠 분류자를 포함해야 합니다. 이 콘텐츠 분류자를 사용하지 않는 경우 SageMaker AI는 사용자의 작업을 Mechanical Turk로 전송하지 않습니다. 데이터에 성인 콘텐츠가 없으면 `'FreeOfAdultContent'` 분류자도 포함합니다. 이러한 콘텐츠 분류자를 사용하지 않으면 SageMaker AI에서 작업을 볼 수 있는 Mechanical Turk 작업자를 제한할 수 있습니다.

1. `FlowDefinitionArn`에 흐름 정의의 Amazon 리소스 이름(ARN)을 입력합니다.

1. `HumanLoopInput`에 입력 데이터를 JSON 형식 파일의 문자열 표현으로 입력합니다. 인적 루프를 시작할 때 입력 데이터가 인적 작업자에게 올바르게 표시되도록 입력 데이터 및 사용자 지정 작업자 태스크 템플릿을 구조화합니다. 사용자 지정 작업자 태스크 템플릿을 미리 보는 방법을 알아보려면 [작업자 태스크 템플릿 미리 보기](a2i-custom-templates.md#a2i-preview-your-custom-template)을 확인하세요.

1. `HumanLoopName`에 인적 루프의 이름을 입력합니다. 이름은 해당 계정의 리전 내에서 고유해야 하며 최대 63자까지 지정할 수 있습니다. 유효한 문자는 a-z, 0-9 및 -(하이픈)입니다.

**인적 루프를 시작하려면**
+ 인적 루프를 시작하려면 기본 설정 언어별 SDK를 사용하여 다음 예제와 유사한 요청을 제출하세요.

------
#### [ AWS SDK for Python (Boto3) ]

다음 요청 예제에서는 SDK for Python(Boto3)을 사용합니다. 자세한 내용은AWS SDK for Python(Boto) API 참조의 [Boto 3 Augmented AI 런타임](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.start_human_loop) 섹션을 참조하세요.**

```
import boto3

a2i_runtime_client = boto3.client('sagemaker-a2i-runtime')

response = a2i_runtime_client.start_human_loop(
    HumanLoopName='human_loop_name',
    FlowDefinitionArn='arn:aws:sagemaker:aws-region:xyz:flow-definition/flow_def_name',
    HumanLoopInput={
        'InputContent': '{"InputContent": {\"prompt\":\"What is the answer?\"}}'    
    },
    DataAttributes={
        'ContentClassifiers': [
            'FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent',
        ]
    }
)
```

------
#### [ AWS CLI ]

다음 요청 예제에서는 AWS CLI를 사용합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)에서 [start-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-a2i-runtime/start-human-loop.html)를 참조하세요.**

```
$ aws sagemaker-a2i-runtime start-human-loop
        --flow-definition-arn 'arn:aws:sagemaker:aws_region:xyz:flow-definition/flow_def_name' \
        --human-loop-name 'human_loop_name' \
        --human-loop-input '{"InputContent": "{\"prompt\":\"What is the answer?\"}"}' \
        --data-attributes ContentClassifiers="FreeOfPersonallyIdentifiableInformation","FreeOfAdultContent" \
```

------

`StartHumanLoop`을 직접 호출하여 인적 루프를 성공적으로 시작하면 `NULL`로 설정되는 `HumanLoopARN` 및 `HumanLoopActivationResults` 객체가 응답에 포함됩니다. 사용자는 인적 루프 이름을 사용하여 인적 루프를 모니터링하고 관리할 수 있습니다.

## 다음 단계:
<a name="a2i-next-step-starthumanloop"></a>

인적 루프를 시작한 후에 사용자는 Amazon Augmented AI 런타임 API 및 Amazon CloudWatch Events를 사용하여 이를 관리하고 모니터링할 수 있습니다. 자세한 내용은 [인적 루프 모니터링 및 관리](a2i-monitor-humanloop-results.md) 섹션을 참조하세요.

# 인적 루프 삭제
<a name="a2i-delete-human-loop"></a>

인적 루프를 삭제하면 상태가 `Deleting`으로 바뀝니다. 인적 루프가 삭제되면 작업자는 관련 인적 검토 작업을 더 이상 사용할 수 없습니다. 다음 상황 중 하나에서 인적 루프를 삭제하고 싶을 수 있습니다.
+ 작업자 사용자 인터페이스를 생성하는 데 사용되는 작업자 태스크 템플릿이 올바르게 렌더링되지 않거나 예상대로 작동하지 않습니다.
+ 단일 데이터 객체가 실수로 작업자에게 여러 번 전송되었습니다.
+ 더 이상 사람이 검토한 데이터 객체가 필요하지 않습니다.

인적 루프의 상태가 `InProgress`인 경우 먼저 인적 루프를 삭제하기 전에 인적 루프를 중지해야 합니다. 인적 루프를 중지하면 상태는 중지되는 동안 `Stopping`으로 변경됩니다. 상태가 `Stopped`로 변경되면 사용자는 인적 루프를 삭제할 수 있습니다.

관련된 인적 루프를 중지할 때 인적 작업자가 이미 작업을 수행하고 있는 경우 해당 작업이 완료되거나 만료될 때까지 계속 사용 가능합니다. 작업자가 작업을 계속 수행하는 한 인적 루프의 상태는 `Stopping`과 같습니다. 이러한 작업이 완료되면 결과는 인적 검토 워크플로에서 지정한 Amazon S3 버킷에 저장됩니다. 작업자가 작업을 제출하지 않고 작업을 떠나면 작업이 중지되고 작업자는 작업에 복귀할 수 없습니다. 작업을 시작한 작업자가 없는 경우 작업이 즉시 중지됩니다.

인적 루프를 생성하는 데 사용된 AWS 계정을 삭제하면 자동으로 중지되고 삭제됩니다.

## 인적 루프 데이터 보존 및 삭제
<a name="a2i-delete-human-loop-data-retention"></a>

작업자가 인적 검토 작업을 완료하면 인적 루프를 생성하는 데 사용되는 인적 검토 워크플로에서 지정한 Amazon S3 출력 버킷에 결과가 저장됩니다. 인적 루프를 삭제하거나 중지해도 S3 버킷에서 작업자 답변이 제거되지는 않습니다.

또한 Amazon A2I는 다음과 같은 이유로 인적 루프 입력 및 출력 데이터를 내부적으로 임시 저장합니다.
+ 검토를 위해 단일 데이터 객체를 여러 작업자에게 보내도록 인적 루프를 구성하는 경우 Amazon A2I는 모든 작업자가 검토 작업을 완료할 때까지 S3 버킷에 출력 데이터를 기록하지 않습니다. Amazon A2I는 전체 결과를 S3 버킷에 기록할 수 있도록 부분적인 답변(개별 작업자의 답변)들을 내부에 저장합니다.
+ 품질이 낮은 인적 검토 결과를 보고하면 Amazon A2I에서 문제를 조사하고 이에 대응할 수 있습니다.
+ 인적 루프를 생성하는 데 사용되는 인적 검토 워크플로에 지정된 출력 S3 버킷에 대해 액세스 권한을 잃었거나 이를 삭제하였고, 이미 작업이 한 명 이상의 작업자에게 전송된 경우, Amazon A2I에는 인적 검토 결과를 임시로 저장할 장소가 필요합니다.

인적 루프의 상태가 `Deleted`, `Stopped`, 또는 `Completed` 중 하나로 변경된 지 30일이 지나면 Amazon A2I는 내부적으로 이 데이터를 삭제합니다. 즉, 인적 루프가 완료, 중지 또는 삭제된 지 30일이 지나면 데이터가 삭제됩니다. 또한 연결된 인적 루프를 생성하는 데 사용된 AWS 계정을 닫으면 30일 후에이 데이터가 삭제됩니다.

## 콘솔 또는 Amazon A2I API를 사용하여 흐름 정의 중지 및 삭제
<a name="a2i-delete-human-loop-how-to"></a>

사용자는 Augmented AI 콘솔에서 또는 SageMaker API를 사용하여 인적 루프를 중지하고 삭제할 수 있습니다. 인적 루프가 삭제되면 상태가 `Deleted`로 바뀝니다.

**인적 루프 (콘솔) 삭제**

1. [https://console.aws.amazon.com/a2i/](https://console.aws.amazon.com/a2i)에서 Augmented AI 콘솔로 이동합니다.

1. 탐색 창의 **Augmented AI** 섹션 아래에서 **인적 검토 워크플로**를 선택합니다.

1. 삭제할 인적 루프를 생성하려면 사용한 인적 검토 워크플로의 하이퍼링크된 이름을 선택합니다.

1. 페이지 하단의 **인적 루프** 섹션에서 중지하고 삭제하려는 인적 루프를 선택합니다.

1. 인적 루프 상태가 `Completed`, `Stopped`, 또는 `Failed`인 경우 **삭제**를 선택합니다.

   인적 루프 **상태**가 `InProgress`인 경우 **중지**를 선택합니다. 상태가 **중지됨**으로 변경되면 **삭제**를 선택합니다.

**인적 루프 (API) 삭제**

1. Augmented AI 런타임 API 작업 `[DescribeHumanLoop](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DescribeHumanLoop.html)`을 사용하여 인적 루프의 상태를 확인합니다. 다음 표에서 이 작업을 사용하는 예를 참조하세요.

------
#### [ AWS SDK for Python (Boto3) ]

   다음 예제에서는 SDK for Python(Boto3)을 사용해 *example-human-loop*라는 이름의 인적 루프를 설명합니다. 자세한 내용은AWS SDK for Python(Boto) API 참조의 [describe\$1human\$1loop](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.describe_human_loop) 섹션을 참조하세요.**

   ```
   import boto3
   
   a2i_runtime_client = boto3.client('sagemaker-a2i-runtime')
   response = a2i_runtime_client.describe_human_loop(HumanLoopName='example-human-loop')
   human_loop_status = response['HumanLoopStatus']
   print(f'example-human-loop status is: {human_loop_status}')
   ```

------
#### [ AWS CLI ]

   다음 예제에서는 AWS CLI를 사용하여 *example-human-loop*라는 인적 루프를 설명합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)에서 [describe-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-a2i-runtime/describe-human-loop.html)를 참조하세요.**

   ```
   $ aws sagemaker-a2i-runtime describe-human-loop --human-loop-name 'example-human-loop'
   ```

------

1. 흐름 정의 상태가 `Completed`, `Stopped`, 또는 `Failed`인 경우 Augmented AI Runtime API 작업 `[DeleteHumanLoop](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DeleteHumanLoop.html)`를 사용하여 흐름 정의를 삭제하세요.

------
#### [ AWS SDK for Python (Boto3) ]

   다음 예제에서는 SDK for Python(Boto3)을 사용해 *example-human-loop*라는 이름의 인적 루프를 삭제합니다. 자세한 내용은AWS SDK for Python(Boto) API 참조의 [delete\$1human\$1loop](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.delete_human_loop) 섹션을 참조하세요.**

   ```
   import boto3
   
   a2i_runtime_client = boto3.client('sagemaker-a2i-runtime')
   response = a2i_runtime_client.delete_human_loop(HumanLoopName='example-human-loop')
   ```

------
#### [ AWS CLI ]

   다음 예제에서는 AWS CLI를 사용하여 *example-human-loop*라는 인적 루프를 삭제합니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)의 [delete-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-a2i-runtime/delete-human-loop.html)을 참조하세요.**

   ```
   $ aws sagemaker-a2i-runtime delete-human-loop --human-loop-name 'example-human-loop'
   ```

------

   인적 루프 상태가 `InProgress`인 경우 `[StopHumanLoop](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StopHumanLoop.html)`를 사용하여 인적 루프 사용을 중지한 다음 `DeleteHumanLoop`를 사용하여 이를 삭제하세요.

------
#### [ AWS SDK for Python (Boto3) ]

   다음 예제에서는 SDK for Python(Boto3)을 사용해 *example-human-loop*라는 이름의 인적 루프를 설명합니다. 자세한 내용은AWS SDK for Python(Boto) API 참조의 [stop\$1human\$1loop](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-a2i-runtime.html#AugmentedAIRuntime.Client.stop_human_loop) 섹션을 참조하세요.**

   ```
   import boto3
   
   a2i_runtime_client = boto3.client('sagemaker-a2i-runtime')
   response = a2i_runtime_client.stop_human_loop(HumanLoopName='example-human-loop')
   ```

------
#### [ AWS CLI ]

   다음 예제에서는 AWS CLI를 사용하여 *example-human-loop*라는 인적 루프를 설명합니다. 자세한 내용은 [AWS CLI 명령 레퍼런스](https://docs.aws.amazon.com/cli/latest/reference/)에서 [stop-human-loop](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-a2i-runtime/stop-human-loop.html)를 참조하세요.**

   ```
   $ aws sagemaker-a2i-runtime stop-human-loop --human-loop-name 'example-human-loop'
   ```

------

# 작업자 태스크 템플릿 생성 및 관리
<a name="a2i-instructions-overview"></a>

작업자 태스크 템플릿을 생성하여 작업자를 위한 태스크 사용자 인터페이스를 만들 수 있습니다.** 작업자 태스크 템플릿은 작업자가 작업을 완료하는 데 도움이 되는 입력 데이터와 지침을 표시하는 데 사용되는 HTML 파일입니다.

Amazon Rekognition 또는 Amazon Textract 태스크 유형의 경우 그래픽 사용자 인터페이스(GUI) 를 사용하여 미리 만들어진 작업자 태스크 템플릿을 사용자 지정하고 HTML 코드와의 상호 작용을 피할 수 있습니다. 이 옵션의 경우 [인적 검토 워크플로 생성(콘솔)](a2i-create-flow-definition.md#a2i-create-human-review-console)의 설명을 사용하여 Amazon SageMaker AI 콘솔에서 인적 검토 워크플로를 만들고 작업자 작업 템플릿을 사용자 지정합니다. 이 지침에 따라 템플릿을 생성하면 [Augmented AI 콘솔](https://console.aws.amazon.com/a2i)의 작업자 태스크 템플릿 페이지에 해당 템플릿이 표시됩니다.

사용자 지정 태스크 유형에 대한 인적 검토 워크플로를 만들려면 HTML 코드를 사용하여 사용자 지정 작업자 태스크 템플릿을 생성해야 합니다.** 자세한 내용은 [사용자 지정 작업자 태스크 템플릿 생성](a2i-custom-templates.md) 섹션을 참조하세요.

HTML을 사용하여 템플릿을 생성하는 경우, 이 템플릿을 사용하여 Amazon A2I 인적 태스크 UI Amazon 리소스 이름 (ARN)을 Amazon A2I 콘솔에 생성해야 합니다.** 이 ARN의 형식은 다음 `arn:aws:sagemaker:<aws-region>:<aws-account-number>:human-task-ui/<template-name>`과 같습니다. 이 ARN은 하나 이상의 인적 검토 워크플로(흐름 정의)에서 사용할 수 있는 작업자 태스크 템플릿 리소스와 연결되어 있습니다.

[작업자 태스크 템플릿 생성](a2i-worker-template-console.md#a2i-create-worker-template-console)에서 찾은 지침을 따르거나 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html) API 작업을 사용함으로써 작업자 태스크 템플릿을 사용하여 인적 검토 UI ARN을 생성합니다.

**Topics**
+ [작업자 태스크 템플릿 생성 및 삭제](a2i-worker-template-console.md)
+ [사용자 지정 작업자 태스크 템플릿 생성](a2i-custom-templates.md)
+ [정확한 작업자 지침 생성](a2i-creating-good-instructions-guide.md)

# 작업자 태스크 템플릿 생성 및 삭제
<a name="a2i-worker-template-console"></a>

사용자는 작업자 템플릿을 사용하여 작업 시 작업자에게 표시되는 인터페이스와 지침을 사용자 지정할 수 있습니다. 이 페이지의 설명을 사용하여 Amazon SageMaker AI 콘솔의 Augmented AI 영역에서 작업자 태스크 템플릿을 만듭니다. Amazon Textract 및 Amazon Rekognition 작업을 위한 스타터 템플릿이 제공됩니다. HTML 크라우드 요소를 사용하여 템플릿을 사용자 정의하는 방법에 대한 자세한 내용은 [사용자 지정 작업자 태스크 템플릿 생성](a2i-custom-templates.md) 섹션을 참조하세요.

SageMaker AI 콘솔의 Augmented AI 영역에 있는 작업자 태스크 템플릿 페이지에서 작업자 템플릿을 만들면 작업자 태스크 템플릿 ARN이 생성됩니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html) 작업을 사용하여 흐름 정의를 생성할 때는 이 API를 `HumanTaskUiArn`에 대한 입력으로서 사용합니다. 사용자는 콘솔의 인적 검토 워크플로 페이지에서 인적 검토 흐름을 생성할 때 이 템플릿을 선택할 수 있습니다.

Amazon Textract 또는 Amazon Rekognition 태스크 유형에 대한 작업자 태스크 템플릿 리소스를 생성하는 경우 사용자는 작업자 태스크 템플릿 콘솔 페이지의 템플릿에서 생성된 작업자 UI를 미리 볼 수 있습니다. 먼저 [작업자 작업 템플릿 미리 보기 사용](a2i-permissions-security.md#permissions-for-worker-task-templates-augmented-ai)에 설명된 정책을 템플릿을 미리 보는 데 사용하는 IAM 역할에 연결해야 합니다.

## 작업자 태스크 템플릿 생성
<a name="a2i-create-worker-template-console"></a>

사용자는 SageMaker AI 콘솔과 SageMaker API 작업 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html)를 사용하여 작업자 태스크 템플릿을 만들 수 있습니다.

**작업자 태스크 템플릿(콘솔)을 생성합니다**

1. [https://console.aws.amazon.com/a2i/](https://console.aws.amazon.com/a2i)에서 Amazon A2I 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **Amazon Augmented AI**에서 **작업자 태스크 템플릿**을 선택합니다.

1. **템플릿 생성**을 선택합니다.

1. **템플릿 이름**에 고유한 이름을 입력합니다.

1. (선택 사항) 사용자를 대신하여 서비스를 호출하는 데 필요한 권한을 Amazon A2I에게 부여하는 **IAM 역할**을 입력합니다.

1. **Template type(템플릿 유형)**의 드롭다운 메뉴에서 템플릿 유형을 선택합니다. **Textract-form extraction(Textract-form 추출)** 또는 **Rekognition-image moderation(Rekognition-image 조절)** 작업을 위한 템플릿을 생성하는 경우 적절한 옵션을 선택합니다.

1. 다음과 같이 사용자 지정 템플릿 요소를 입력합니다.
   + Amazon Textract 또는 Amazon Rekognition 작업 템플릿을 선택한 경우, **Template editor(템플릿 편집기)**가 사용자 지정이 가능한 기본 템플릿으로 자동으로 채워집니다.
   + 사용자 지정 템플릿을 사용하는 경우에는 편집기에 미리 정의된 템플릿을 입력합니다.

1. (선택 사항) 이 단계를 완료하려면 먼저 **5단계**에서 사용자 인터페이스에 렌더링되는 Amazon S3 객체를 읽을 수 있는 권한을 IAM 역할 ARN에 제공해야 합니다.

   사용자는 Amazon Textract 또는 Amazon Rekognition에 대한 템플릿을 생성하는 경우에만 템플릿을 미리 볼 수 있습니다.

   **See preview(미리 보기 보기)**를 선택하여 작업자에게 표시되는 인터페이스와 지침을 미리 봅니다. 이것은 대화식 미리 보기입니다. 샘플 작업을 완료하고 **제출**을 선택하면 방금 수행한 작업의 결과로 생성된 출력이 표시됩니다.

   사용자 지정 태스크 유형에 대한 작업자 태스크 템플릿을 생성하면 사용자는 `RenderUiTemplate`을 사용하여 작업자 작업 UI를 미리 볼 수 있습니다. 자세한 내용은 [작업자 태스크 템플릿 미리 보기](a2i-custom-templates.md#a2i-preview-your-custom-template) 섹션을 참조하세요.

1. 템플릿이 마음에 들면 **생성**을 선택합니다.

템플릿을 생성한 후 콘솔에서 인적 검토 워크플로를 생성할 때 사용자는 해당 템플릿을 선택할 수 있습니다. 템플릿은 **작업자 태스크 템플릿**에서 SageMaker AI 콘솔의 **Amazon Augmented AI** 섹션에도 표시됩니다. 해당 ARN을 보려면 템플릿을 선택합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html) API 작업을 사용할 때 이 ARN을 사용합니다.

**작업자 태스크 템플릿(API)을 사용하여 작업자 태스크 템플릿을 생성합니다.**  
SageMaker API 작업 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html)을 사용하여 작업자 태스크 템플릿을 생성하려면 `HumanTaskUiName`에서 UI의 이름을 지정하고 `UiTemplate` 아래의 `Content`에 HTML 템플릿을 입력합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html)의 **관련 항목** 섹션에서 이 API 작업을 지원하는 언어별 SDK에 대한 설명서를 찾아보세요.

## 작업자 태스크 템플릿 삭제
<a name="sms-delete-worker-task-template"></a>

작업자 태스크 템플릿을 만든 후에 사용자는 SageMaker AI 콘솔 또는 SageMaker API 작업 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteHumanTaskUi.html)를 사용하여 삭제할 수 있습니다.

작업자 태스크 템플릿을 삭제하면 해당 템플릿을 사용하여 만든 인적 검토 워크플로(흐름 정의)를 사용하여 인적 루프를 시작할 수 없습니다. 삭제한 작업자 태스크 템플릿을 사용하여 이미 만든 인적 루프는 완료될 때까지 계속 처리되며 영향을 받지 않습니다.

**작업자 태스크 템플릿(콘솔)을 삭제하세요**

1. [https://console.aws.amazon.com/a2i/](https://console.aws.amazon.com/a2i)에서 Amazon A2I 콘솔을 엽니다.

1. 왼쪽 탐색 창의 Amazon Augmented AI에서 **작업자 태스크 템플릿**를 선택합니다.

1. 삭제할 템플릿을 선택합니다.

1. **삭제(Delete)**를 선택합니다.

1. 선택을 확인하는 모달이 나타납니다. **삭제**를 선택합니다.

**작업자 태스크 템플릿(API) 삭제**  
SageMaker API 작업 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteHumanTaskUi.html)을 사용하여 작업자 태스크 템플릿을 삭제하려면 `HumanTaskUiName`에서 UI 이름을 지정합니다.

# 사용자 지정 작업자 태스크 템플릿 생성
<a name="a2i-custom-templates"></a>

군중 HTML 요소는 사용자가 원하는 질문에 맞게 조정할 수 있는 다양한 작업 위젯과 디자인 요소를 제공하는 웹 구성 요소입니다.** 사용자는 이러한 군중 요소를 사용하여 사용자 지정 작업자 템플릿을 생성하고 이 템플릿을 Amazon Augmented AI(Amazon A2I) 인적 검토 워크플로에 통합하여 작업자 콘솔 및 지침을 사용자 지정할 수 있습니다.

Amazon A2 사용자가 사용할 수 있는 모든 HTML 군중 요소의 목록은 [군중 HTML 요소 참조](sms-ui-template-reference.md) 섹션을 참조하세요. 템플릿의 예제를 보려면 60개 이상의 샘플 사용자 지정 작업 템플릿이 포함된 [AWS GitHub 리포지토리](https://github.com/aws-samples/amazon-a2i-sample-task-uis)를 참조하세요.

## 로컬에서 템플릿 개발
<a name="developing-templates-locally"></a>

콘솔에서 템플릿이 수신 데이터를 처리하는 방법을 테스트하려면 다음 코드를 HTML 파일의 맨 위에 추가해 사용자는 브라우저에서 템플릿의 HTML 및 사용자 지정 요소의 모양과 느낌을 테스트할 수 있습니다.

```
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
```

이렇게 하면 필수 코드가 로드되어 사용자 지정 HTML 요소가 렌더링됩니다. 콘솔 대신 원하는 편집기에서 템플릿의 모양 및 느낌을 개발하려면 이 코드를 사용하세요.

이 코드는 변수를 구문 분석하지 않습니다. 로컬에서 개발하는 동안 이러한 변수를 샘플 콘텐츠로 바꿀 수 있습니다.

## 외부 자산 사용
<a name="a2i-custom-template-using-external-assets"></a>

Amazon Augmented AI 사용자 지정 템플릿을 사용하면 외부 스크립트 및 스타일 시트를 임베딩할 수 있습니다. 예를 들어, 다음 헤더는 `https://www.example.com/my-enhancement-styles.css`에 있는 `text/css` 스타일시트 이름 `stylesheet`를 사용자 지정 템플릿에 포함합니다.

**Example**  

```
<script src="https://www.example.com/my-enhancment-script.js"></script>
<link rel="stylesheet" type="text/css" href="https://www.example.com/my-enhancement-styles.css">
```

오류가 발생하면 원본 서버가 자산과 함께 올바른 MIME 유형 및 인코딩 헤더를 보내고 있는지 확인하세요.

예를 들어 원격 스크립트의 MIME 및 인코딩 유형은 `application/javascript;CHARSET=UTF-8`입니다.

원격 스타일 시트의 MIME 및 인코딩 유형은 `text/css;CHARSET=UTF-8`입니다.

## 변수 추적
<a name="a2i-custom-template-step2-UI-vars"></a>

사용자 지정 템플릿 작성 시 먼저 작업마다 또는 작업자마다 변경될 수 있는 데이터를 나타내기 위한 변수를 추가해야 합니다. 샘플 템플릿 중 하나로 시작하려는 경우 해당 템플릿에서 이미 사용하고 있는 변수에 대해 알고 있어야 합니다.

예를 들어, Augmented AI 인적 검토 루프와 Amazon Textract 텍스트 검토 작업을 통합하는 사용자 지정 템플릿의 경우 초기 값 입력 데이터에는 `{{ task.input.selectedAiServiceResponse.blocks }}`가 사용됩니다. Amazon Augmented AI(Amazon A2I)의 경우 Amazon Rekognition과의 통합, `{{ task.input.selectedAiServiceResponse.moderationLabels }}`가 사용됩니다. 사용자 지정 태스크 유형의 경우 태스크 유형에 대한 입력 파라미터를 결정해야 합니다. `{{ task.input.customInputValuesForStartHumanLoop}}` 사용 시 `customInputValuesForStartHumanLoop`를 지정합니다.

## Amazon Textract에 사용되는 사용자 지정 템플릿 예제
<a name="a2i-custom-templates-textract-sample"></a>

모든 사용자 지정 템플릿은 `<crowd-form> </crowd-form>` 요소로 시작하고 끝납니다. 표준 HTML `<form>` 요소처럼 모든 양식 코드는 이러한 요소 사이에 있어야 합니다.

Amazon Textract의 문서 분석 작업에는 `<crowd-textract-analyze-document>` 요소를 사용하세요. 다음과 같은 속성을 사용합니다.
+ `src` - 주석을 달 이미지 파일의 URL을 지정합니다.
+ `initialValue` - 작업자 UI에서 확인된 속성의 초기 값을 설정합니다.
+ `blockTypes` (필수 사항) - 작업자가 수행할 수 있는 분석의 종류를 결정합니다. 현재 `KEY_VALUE_SET`만 지원됩니다.
+ `keys` (필수 사항) - 작업자가 추가할 수 있는 새 키와 관련 텍스트 값을 지정합니다.
+ `no-key-edit` (필수 사항) - 작업자가 `initialValue`을 통해 전달된 주석 키를 편집할 수 없게 합니다.
+ `no-geometry-edit` - 작업자가 `initialValue`을 통해 전달된 주석 다각형을 편집할 수 없게 합니다.

`<crowd-textract-analyze-document>` 요소의 하위 요소에는 먼저 두 개의 리전이 있어야 합니다. 사용자는 이러한 리전에서 임의의 HTML 및 CSS 요소를 사용할 수 있습니다.
+ `<full-instructions>` - 도구의 **View full instructions(전체 지침 보기)** 링크에서 확인할 수 있는 지침입니다. 사용자는 이 값을 비워 둘 수 있지만 더 나은 결과를 얻으려면 전체 지침을 제공하는 것이 좋습니다.
+ `<short-instructions>` - 도구의 사이드바에 나타나는 작업에 대한 간략한 설명입니다. 사용자는 이 값을 비워 둘 수 있지만 더 나은 결과를 얻으려면 전체 지침을 제공하는 것이 좋습니다.

 Amazon Textract 템플릿의 형식은 다음과 유사합니다.

**Example**  

```
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
{% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.document.s3Object.bucket }}/{{ task.input.aiServiceRequest.document.s3Object.name }}{% endcapture %}

<crowd-form>
  <crowd-textract-analyze-document
    src="{{ s3_uri | grant_read_access }}"
    initial-value="{{ task.input.selectedAiServiceResponse.blocks }}"
    header="Review the key-value pairs listed on the right and correct them if they don't match the following document."
    no-key-edit
    no-geometry-edit
    keys="{{ task.input.humanLoopContext.importantFormKeys }}"
    block-types="['KEY_VALUE_SET']"
  >
    <short-instructions header="Instructions">
      <style>
        .instructions {
          white-space: pre-wrap;
        }
        .instructionsImage {
          display: inline-block;
          max-width: 100%;
        }
      </style>
      <p class='instructions'>Choose a key-value block to highlight the corresponding key-value pair in the document.

If it is a valid key-value pair, review the content for the value. If the content is incorrect, correct it.

The text of the value is incorrect, correct it.
<img class='instructionsImage' src="https://example-site/correct-value-text.png" />

A wrong value is identified, correct it.
<img class='instructionsImage' src="https://example-site/correct-value.png" />

If it is not a valid key-value relationship, choose No.
<img class='instructionsImage' src="https://example-site/not-a-key-value-pair.png" />

If you can’t find the key in the document, choose Key not found.
<img class='instructionsImage' src="https://example-site/key-is-not-found.png" />

If the content of a field is empty, choose Value is blank.
<img class='instructionsImage' src="https://example-site/value-is-blank.png" />

<b>Examples</b>
Key and value are often displayed next to or below to each other.

Key and value displayed in one line.
<img class='instructionsImage' src="https://example-site/sample-key-value-pair-1.png" />

Key and value displayed in two lines.
<img class='instructionsImage' src="https://example-site/sample-key-value-pair-2.png" />

If the content of the value has multiple lines, enter all the text without a line break. Include all value text even if it extends beyond the highlight box.
<img class='instructionsImage' src="https://assets.crowd.aws/images/a2i-console/multiple-lines.png" /></p>
    </short-instructions>

    <full-instructions header="Instructions"></full-instructions>
  </crowd-textract-analyze-document>
</crowd-form>
```

## Amazon Rekognition에 사용되는 사용자 지정 템플릿 예제
<a name="a2i-custom-templates-rekognition-sample"></a>

모든 사용자 지정 템플릿은 `<crowd-form> </crowd-form>` 요소로 시작하고 끝납니다. 표준 HTML `<form>` 요소처럼 모든 양식 코드는 이러한 요소 사이에 있어야 합니다. Amazon Rekognition 사용자 지정 작업 템플릿의 경우 `<crowd-rekognition-detect-moderation-labels>` 요소를 사용합니다. 이 요소는 다음 속성을 지원합니다.
+ `categories` - 문자열 배열 또는 각 객체에 `name` 필드가 있는 객체 배열입니다.**
  + 범주가 객체로 들어오는 경우 다음이 적용됩니다.
    + 표시된 범주는 `name` 필드의 값입니다.
    + 반환된 답변에는 선택한 범주의 전체 객체가 포함됩니다.**
  + 범주가 문자열로 들어오는 경우 다음이 적용됩니다.
    + 반환된 대답은 선택된 모든 문자열의 배열입니다.
+ `exclusion-category` - 이 속성을 설정하여 UI의 범주 아래에 버튼을 생성합니다. 사용자가 이 버튼을 선택하면 모든 범주가 선택 취소되고 비활성화됩니다. 작업자가 버튼을 다시 선택하면 사용자가 범주를 선택할 수 있도록 다시 활성화합니다. 작업자가 버튼을 선택한 후 **제출**을 선택하여 작업을 제출하면 해당 작업은 빈 배열을 반환합니다.

`<crowd-rekognition-detect-moderation-labels>` 요소의 하위 요소에는 먼저 두 개의 리전이 있어야 합니다.
+ `<full-instructions>` - 도구의 **View full instructions(전체 지침 보기)** 링크에서 확인할 수 있는 지침입니다. 사용자는 이 값을 비워 둘 수 있지만 더 나은 결과를 얻으려면 전체 지침을 제공하는 것이 좋습니다.
+ `<short-instructions>` - 도구의 사이드바에 나타나는 작업에 대한 간략한 설명입니다. 사용자는 이 값을 비워 둘 수 있지만 더 나은 결과를 얻으려면 전체 지침을 제공하는 것이 좋습니다.

이러한 요소를 사용하는 템플릿의 형식은 다음과 유사합니다.

```
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
{% capture s3_uri %}http://s3.amazonaws.com/{{ task.input.aiServiceRequest.image.s3Object.bucket }}/{{ task.input.aiServiceRequest.image.s3Object.name }}{% endcapture %}

<crowd-form>
  <crowd-rekognition-detect-moderation-labels
    categories='[
      {% for label in task.input.selectedAiServiceResponse.moderationLabels %}
        {
          name: "{{ label.name }}",
          parentName: "{{ label.parentName }}",
        },
      {% endfor %}
    ]'
    src="{{ s3_uri | grant_read_access }}"
    header="Review the image and choose all applicable categories."
  >
    <short-instructions header="Instructions">
      <style>
        .instructions {
          white-space: pre-wrap;
        }
      </style>
      <p class='instructions'>Review the image and choose all applicable categories.
If no categories apply, choose None.

<b>Nudity</b>
Visuals depicting nude male or female person or persons

<b>Graphic Male Nudity</b>
Visuals depicting full frontal male nudity, often close ups

<b>Graphic Female Nudity</b>
Visuals depicting full frontal female nudity, often close ups

<b>Sexual Activity</b>
Visuals depicting various types of explicit sexual activities and pornography

<b>Illustrated Nudity or Sexual Activity</b>
Visuals depicting animated or drawn sexual activity, nudity, or pornography

<b>Adult Toys</b>
Visuals depicting adult toys, often in a marketing context

<b>Female Swimwear or Underwear</b>
Visuals depicting female person wearing only swimwear or underwear

<b>Male Swimwear Or Underwear</b>
Visuals depicting male person wearing only swimwear or underwear

<b>Partial Nudity</b>
Visuals depicting covered up nudity, for example using hands or pose

<b>Revealing Clothes</b>
Visuals depicting revealing clothes and poses, such as deep cut dresses

<b>Graphic Violence or Gore</b>
Visuals depicting prominent blood or bloody injuries

<b>Physical Violence</b>
Visuals depicting violent physical assault, such as kicking or punching

<b>Weapon Violence</b>
Visuals depicting violence using weapons like firearms or blades, such as shooting

<b>Weapons</b>
Visuals depicting weapons like firearms and blades

<b>Self Injury</b>
Visuals depicting self-inflicted cutting on the body, typically in distinctive patterns using sharp objects

<b>Emaciated Bodies</b>
Visuals depicting extremely malnourished human bodies

<b>Corpses</b>
Visuals depicting human dead bodies

<b>Hanging</b>
Visuals depicting death by hanging</p>
    </short-instructions>

    <full-instructions header="Instructions"></full-instructions>
  </crowd-rekognition-detect-moderation-labels>
</crowd-form>
```

## Liquid를 사용하여 자동화 추가
<a name="a2i-custom-templates-step2-automate"></a>

사용자 지정 템플릿 시스템은 자동화를 위해 [Liquid](https://shopify.github.io/liquid/)를 사용합니다. Liquid는 오픈 소스 인라인 마크업 언어입니다.** 자세한 내용 및 설명서는 [Liquid 홈페이지](https://shopify.github.io/liquid/)를 참조하세요.

Liquid에서 단일 중괄호와 퍼센트 기호 사이에 있는 텍스트는 제어 흐름 또는 반복과 같은 작업을 수행하는 지침 또는 태그입니다.** 이중 중괄호 사이에 있는 텍스트는 변수 또는 변수의 값을 출력하는 객체입니다.** 다음 목록에는 템플릿 입력 데이터 처리를 자동화하는 데 유용할 수 있는 두 가지 유형의 Liquid 태그가 포함되어 있습니다. 다음 태그 유형 중 하나를 선택하면 Liquid 설명서로 리디렉션됩니다.
+ [제어 흐름](https://shopify.github.io/liquid/tags/control-flow/): `if/else`, `unless` 및 `case/when`과 같은 프로그래밍 로직 연산자를 포함합니다.
+ [반복](https://shopify.github.io/liquid/tags/iteration/): 루프와 같은 명령문을 사용하여 코드 블록을 반복적으로 실행할 수 있습니다.

  예를 들어, 다음 코드 예제는 Liquid `for` 태그를 사용하여 사용자는 `for` 루프를 만드는 방법을 보여줍니다. 이 예제는 Amazon Rekognition에서 반환된 [https://docs.aws.amazon.com/rekognition/latest/dg/API_ModerationLabel.html](https://docs.aws.amazon.com/rekognition/latest/dg/API_ModerationLabel.html)을 반복하여 작업자가 검토할 `moderationLabels` 속성 `name`과 `parentName`을 표시합니다.

  ```
   {% for label in task.input.selectedAiServiceResponse.moderationLabels %}
      {
        name: &quot;{{ label.name }}&quot;,
        parentName: &quot;{{ label.parentName }}&quot;,
      },
   {% endfor %}
  ```

### 변수 필터 사용
<a name="a2i-custom-templates-step2-automate-filters"></a>

Amazon Augmented AI(Amazon A2I)는 표준 [Liquid 필터](https://shopify.github.io/liquid/filters/abs/) 및 작업 이외에 몇 가지 추가 필터를 제공합니다. 필터는 변수 이름 뒤에 파이프(`|`) 문자를 삽입한 후 필터 이름을 지정하여 적용됩니다. 필터를 체인화하려면 다음 형식을 사용하세요.

**Example**  

```
{{ <content> | <filter> | <filter> }}
```

#### 자동 이스케이프 및 명시적 이스케이프
<a name="a2i-custom-templates-step2-automate-filters-autoescape"></a>

기본적으로 입력은 변수 텍스트와 HTML 간에 혼동을 피하기 위해 이스케이프된 HTML입니다. 사용자는 이스케이프가 완료된 템플릿의 소스를 보다 분명하게 읽을 수 있도록 `escape` 필터를 명시적으로 추가할 수 있습니다.

#### escape\$1once
<a name="a2i-custom-templates-step2-automate-escapeonce"></a>

`escape_once`는 코드를 이미 이스케이프한 경우 이후에 해당 코드가 다시 이스케이프되지 않도록 합니다. 예를 들어, `&amp;`를 `&amp;amp;`가 되지 않도록 합니다.

#### skip\$1autoescape
<a name="a2i-custom-templates-step2-automate-skipautoescape"></a>

`skip_autoescape`는 콘텐츠가 HTML로 사용되는 경우 유용합니다. 예를 들어, 경계 상자에 대한 전체 지침에 텍스트 단락 몇 개와 이미지 몇 개가 있을 수 있습니다.

**참고**  
드물게 `skip_autoescape`가 사용되기도 합니다. 템플릿 사용 시 전달 항목에 대해 엄격한 제어 권한이 없는 한 `skip_autoescape`로 함수 코드나 마크업을 전달하지 않는 것이 좋습니다. 사용자 입력을 전달하는 경우 작업자를 교차 사이트 스크립팅 공격에 노출시킬 수 있습니다.

#### to\$1json
<a name="a2i-custom-templates-step2-automate-tojson"></a>

`to_json`은 JSON(JavaScript Object Notation)에 제공하는 데이터를 인코딩합니다. 객체를 제공하면 직렬화됩니다.

#### grant\$1read\$1access
<a name="a2i-custom-templates-step2-automate-grantreadaccess"></a>

`grant_read_access`는 Amazon Simple Storage Service(Amazon S3) URI를 가져와 해당 리소스에 대해 수명이 짧은 액세스 토큰을 사용하여 HTTPS URL로 인코딩합니다. 이를 통해 작업자가 공개적으로 액세스할 수 없는 S3 버킷에 저장된 사진, 오디오 또는 비디오 객체를 표시할 수 있습니다.

#### s3\$1presign
<a name="a2i-custom-templates-step2-automate-s3"></a>

 `s3_presign` 필터는 `grant_read_access` 필터와 동일한 방식으로 작동합니다. `s3_presign`는 Amazon S3 URI를 가져와 해당 리소스에 대한 수명이 짧은 액세스 토큰을 사용하여 HTTPS URL로 인코딩합니다. 이를 통해 작업자가 공개적으로 액세스할 수 없는 S3 버킷에 저장된 사진, 오디오 또는 비디오 객체를 표시할 수 있습니다.

**Example 변수 필터의 예**  
입력  

```
auto-escape: {{ "Have you read 'James & the Giant Peach'?" }}
explicit escape: {{ "Have you read 'James & the Giant Peach'?" | escape }}
explicit escape_once: {{ "Have you read 'James &amp; the Giant Peach'?" | escape_once }}
skip_autoescape: {{ "Have you read 'James & the Giant Peach'?" | skip_autoescape }}
to_json: {{ jsObject | to_json }}                
grant_read_access: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | grant_read_access }}
s3_presign: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | s3_presign }}
```

**Example**  
출력  

```
auto-escape: Have you read &#39;James &amp; the Giant Peach&#39;?
explicit escape: Have you read &#39;James &amp; the Giant Peach&#39;?
explicit escape_once: Have you read &#39;James &amp; the Giant Peach&#39;?
skip_autoescape: Have you read 'James & the Giant Peach'?
to_json: { "point_number": 8, "coords": [ 59, 76 ] }
grant_read_access: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
s3_presign: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?<access token and other params>
```

**Example 자동화된 분류 템플릿의 예제**  
이 간단한 텍스트 분류 샘플을 자동화하려면 Liquid 태그 `{{ task.input.source }}`를 포함합니다. 이 예제에서는 [crowd-classifier](sms-ui-template-crowd-classifier.md) 요소를 사용합니다.  

```
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
<crowd-form>
  <crowd-classifier 
    name="tweetFeeling"
    categories="['positive', 'negative', 'neutral', 'cannot determine']"
    header="Which term best describes this tweet?" 
  >
    <classification-target>
       {{ task.input.source }}
    </classification-target>

    <full-instructions header="Analyzing a sentiment">
      Try to determine the feeling the author 
      of the tweet is trying to express. 
      If none seems to match, choose "other."
    </full-instructions>

    <short-instructions>
      Pick the term that best describes the sentiment 
      of the tweet. 
    </short-instructions>

  </crowd-classifier>
</crowd-form>
```

## 작업자 태스크 템플릿 미리 보기
<a name="a2i-preview-your-custom-template"></a>

사용자 지정 작업자 태스크 템플릿을 미리 보려면 SageMaker AI `RenderUiTemplate` 작업을 사용합니다. AWS CLI 또는 선호하는 AWS SDK와 함께 `RenderUiTemplate` 작업을 사용할 수 있습니다. 이 API 작업에 지원되는 언어별 SDK에 대한 설명서는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html#API_RenderUiTemplate_SeeAlso](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html#API_RenderUiTemplate_SeeAlso)의 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html) 섹션을 참조하세요.

**사전 조건**

작업자 작업 템플릿, `RoleArn`( AWS Identity and Access Management IAM) 역할 Amazon 리소스 이름(ARN) 또는를 미리 보려면 템플릿에서 사용하는 S3 객체에 액세스할 수 있는 권한이 있어야 합니다. 역할 또는 사용자를 구성하는 방법에 대한 자세한 내용은 [작업자 작업 템플릿 미리 보기 사용](a2i-permissions-security.md#permissions-for-worker-task-templates-augmented-ai) 섹션을 참조하세요.

**`RenderUiTemplate` 작업을 사용하여 작업자 태스크 템플릿을 미리 보려면**

1. 사용자 지정 템플릿을 미리 볼 수 있도록 연결된 필수 정책을 역할의 **`RoleArn`**에 제공합니다.

1. **`Task`**의 **`Input`** 파라미터에는 템플릿에 정의된 변수 값이 포함된 JSON 객체를 제공하세요. 이러한 객체는 `task.input.source` 변수를 대체하는 변수입니다. 예를 들어, 템플릿에 task.input.text 변수를 정의한 경우 사용자는 JSON 객체의 변수를 `text`: `sample text`로 제공할 수 있습니다.

1. **`UiTemplate`**의 **`Content`** 파라미터에 템플릿을 삽입합니다.

`RenderUiTemplate`을 구성한 후 선호하는 SDK 또는 AWS CLI 를 사용하여 템플릿 렌더링 요청을 제출합니다. 요청이 성공하면 응답에 작업자 UI에 대한 HTML을 렌더링하는 Liquid 템플릿인 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html#API_RenderUiTemplate_ResponseSyntax](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html#API_RenderUiTemplate_ResponseSyntax)가 포함됩니다.

**중요**  
템플릿을 미리 보려면 사용자 인터페이스에서 렌더링되는 Amazon S3 객체에 대한 읽기 권한이 있는 IAM 역할이 필요합니다. 이러한 권한을 부여하기 위해 IAM 역할에 연결할 수 있는 샘플 정책은 [작업자 작업 템플릿 미리 보기 사용](a2i-permissions-security.md#permissions-for-worker-task-templates-augmented-ai) 섹션을 참조하세요.

# 정확한 작업자 지침 생성
<a name="a2i-creating-good-instructions-guide"></a>

인적 검토 작업에 대한 정확한 지침을 생성하면 작업자의 작업 완료 정확도가 향상됩니다. 인적 검토 워크플로를 생성할 때 사용자는 콘솔에 제공되는 기본 지침을 수정하거나, 콘솔을 사용하여 사용자 지정 작업자 템플릿을 생성하고 지침을 이 템플릿에 포함시킬 수 있습니다. 이러한 지침은 레이블 지정 작업을 완료하는 UI 페이지의 작업자에게 표시됩니다.

## 정확한 작업자 지침 생성
<a name="a2i-good-instructions-console"></a>

Amazon Augmented AI 콘솔에는 다음과 같은 세 가지 종류의 지침이 있습니다.
+ **작업 설명** - 설명은 작업에 대한 간략한 설명을 제공해야 합니다.
+ **Instructions(지침)** - 이러한 지침은 작업자가 작업을 완료하는 동일한 웹페이지에 표시됩니다. 이러한 지침은 작업자에게 작업을 완료하는 올바른 방법을 보여주기 위한 간단한 참조를 제공합니다.
+ **Additional Instructions(추가 지침)** - 이러한 지침은 작업자가 **View full instructions(전체 지침 보기)**를 선택할 때 나타나는 대화 상자에 표시됩니다. 작업 완료를 위한 자세한 지침을 제공하고 엣지 사용 사례와 객체 레이블 지정을 위한 기타 어려운 상황을 보여주는 몇 가지 예제를 포함시키는 것이 좋습니다.

## 지침에 예제 이미지 추가
<a name="sms-using-s3-images"></a>

이미지는 작업자에게 유용한 예제를 제공합니다. 지침에 공개적으로 액세스할 수 있는 이미지를 추가하려면 다음을 수행합니다.

1. 지침 편집기에서 이미지를 배치할 위치에 커서를 가져갑니다.

1. 편집기 도구 모음에서 이미지 아이콘을 선택합니다.

1. 이미지의 URL을 입력합니다.

명령 이미지가 공개적으로 액세스할 수 없는 S3 버킷에 있는 경우 다음을 수행합니다.
+ 이미지 URL에 `{{ 'https://s3.amazonaws.com/your-bucket-name/image-file-name' | grant_read_access }}`를 입력합니다.

이렇게 하면 이미지 URL에 일회성 단기 액세스 코드가 추가되어 작업자의 브라우저가 해당 이미지를 표시할 수 있습니다. 지침 편집기에 깨진 이미지 아이콘이 표시되지만, 도구를 미리 보기면 렌더링된 미리 보기에 이미지가 표시됩니다. `grand_read_access` 요소에 대한 자세한 내용은 [s3\$1presigngrant\$1read\$1accesss3\$1presign](a2i-custom-templates.md#a2i-custom-templates-step2-automate-grantreadaccess) 섹션을 참조하세요.

# 인적 루프 모니터링 및 관리
<a name="a2i-monitor-humanloop-results"></a>

인적 검토 루프를 시작한 후에는 [Amazon Augmented AI 런타임 API](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/Welcome.html)를 사용하여 루프에 전송된 태스크 결과를 확인하고 관리할 수 있습니다. 또한, Amazon A2I는 Amazon EventBridge(Amazon CloudWatch Events라고도 함)와 통합되어 인적 검토 루프 상태가, `Completed` `Failed` 또는 `Stopped`로 변경될 때 알려줍니다. 이 이벤트 전달은 최소 한 번 보장되므로 인적 루프가 종료될 때 생성되는 모든 이벤트가 EventBridge로 성공적으로 전달됩니다.

아래 절차를 사용하여 Amazon A2I 런타임 API를 통해 인적 루프를 모니터링하고 관리하는 방법을 알아봅니다. Amazon A2I가 Amazon EventBridge와 통합되는 방식은 [Amazon Augmented AI Amazon CloudWatch Events 에서 사용](a2i-cloudwatch-events.md)를 참조하세요.

**출력 데이터를 확인하려면**

1. [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DescribeHumanLoop.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DescribeHumanLoop.html) 작업을 호출하여 인적 루프의 결과를 확인합니다. 이 API 작업의 결과에는 루프 활성화의 이유와 결과에 대한 정보가 포함됩니다.

1. Amazon Simple Storage Service(S3)에서 인적 루프의 출력 데이터를 확인합니다. 데이터 경로에서 `YYYY/MM/DD/hh/mm/ss`는 인적 루프 생성 날짜(년(`YYYY`), 월(`MM`), 일(`DD`)) 및 생성 시간(시(`hh`), 분(`mm`), 초(`ss`))을 나타냅니다.

   ```
   s3://customer-output-bucket-specified-in-flow-definition/flow-definition-name/YYYY/MM/DD/hh/mm/ss/human-loop-name/output.json
   ```

이 구조를 AWS Glue 또는 Amazon Athena와 통합하여 출력 데이터를 파티션으로 나누고 분석할 수 있습니다. 자세한 내용은 [AWS Glue에서 ETL 출력을 위한 파티션 관리](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html)를 참조하세요.

Amazon A2I 출력 데이터 형식에 대한 자세한 내용은 [Amazon A2I 출력 데이터](a2i-output-data.md)를 참조하세요.

**인적 루프를 중지하고 삭제하려면**

1. 인적 루프가 시작되면 를 사용하여 `HumanLoopName`을 사용해서 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StopHumanLoop.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StopHumanLoop.html)작업을 호출하여 인적 루프를 중지할 수 있습니다. 인적 루프가 성공적으로 중지되면 서버는 HTTP 200 응답을 다시 보냅니다.

1. 상태가 `Failed`, `Completed` 또는 `Stopped`인 인적 루프를 삭제하려면 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DeleteHumanLoop.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_DeleteHumanLoop.html) 작업을 사용합니다.

**인적 루프를 나열하려면**

1. [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_ListHumanLoops.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_ListHumanLoops.html) 작업을 호출하여 모든 활성 인적 루프를 나열할 수 있습니다. `CreationTimeAfter` 및 `CreateTimeBefore` 파라미터를 사용하여 루프의 생성 날짜별로 인적 루프를 필터링할 수 있습니다.

1. 성공한 경우 `ListHumanLoops`는 응답 요소에 [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopSummary.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_HumanLoopSummary.html) 및 `NextToken` 객체를 반환합니다. `HumanLoopSummaries`에는 단일 인적 루프에 대한 정보가 포함되어 있습니다. 예를 들어, 루프의 상태가 나열되고 해당되는 경우 실패 사유도 나열됩니다.

   `NextToken`에서 반환된 문자열을 `ListHumanLoops`에 대한 후속 호출의 입력으로 사용하여 인적 루프의 다음 페이지를 표시합니다.

# Amazon A2I 출력 데이터
<a name="a2i-output-data"></a>

기계 학습 워크플로에서 Amazon A2I에 데이터 객체를 보내면 인적 루프가 생성되고 인적 검토자가 해당 데이터 객체를 검토하는 작업을 받게 됩니다.**** 각 인적 검토 작업의 출력 데이터는 인적 검토 워크플로에서 지정하는 Amazon Simple Storage Service(S3)의 결과 버킷에 저장됩니다. 데이터 경로에서 `YYYY/MM/DD/hh/mm/ss`는 인적 루프 생성 날짜(년(`YYYY`), 월(`MM`), 일(`DD`)) 및 생성 시간(시(`hh`), 분(`mm`), 초(`ss`))을 나타냅니다.

```
s3://customer-output-bucket-specified-in-flow-definition/flow-definition-name/YYYY/MM/DD/hh/mm/ss/human-loop-name/output.json
```

출력 데이터의 내용은 [태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-task-types-general.html)(내장 또는 사용자 지정)과 사용하는 [인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management.html) 유형에 따라 달라집니다. 출력 데이터에는 항상 인적 작업자의 응답이 포함됩니다. 또한 출력 데이터에는 인적 루프, 인적 검토자(작업자) 및 데이터 객체에 대한 메타데이터가 포함될 수 있습니다.

다음 섹션을 사용해 다양한 태스크 유형 및 인력을 위한 Amazon A2I 출력 데이터 형식에 대해 자세히 알아보세요.

## 기본 제공 태스크 유형의 출력 데이터
<a name="sms-output-data-textract"></a>

Amazon A2I 기본 제공 태스크 유형에는 Amazon Textract 및 Amazon Rekognition이 포함됩니다. 인적 응답 외에도 이러한 태스크 중 하나의 출력 데이터에는 인적 루프가 생성된 이유에 대한 세부 정보와 인적 루프를 생성하는 데 사용된 통합 서비스에 대한 정보가 포함됩니다. 다음 테이블을 사용하여 모든 기본 제공 태스크 유형의 출력 데이터 스키마에 대해 자세히 알아보세요. 각 파라미터의 값은 Amazon A2I에서 사용하는 서비스에 따라 달라집니다.** 이러한 서비스별 값에 대한 자세한 내용은 이 섹션의 두 번째 테이블을 참조하세요.


****  

| 파라미터 | 값 유형 | 예제 값 | 설명 | 
| --- | --- | --- | --- | 
| awsManagedHumanLoopRequestSource |  문자열  | AWS/Rekognition/DetectModerationLabels/Image/V3 또는 AWS/Textract/AnalyzeDocument/Forms/V1 | Amazon A2I가 인적 루프를 생성하도록 요청한 API 작업 및 관련 AWS 서비스입니다. Amazon A2I 인적 루프를 구성하는 데 사용하는 API 작업입니다. | 
| flowDefinitionArn |  문자열  | arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name |  인적 루프를 생성하는 데 사용된 인적 검토 워크플로(플로우 정의)의 Amazon 리소스 수(ARN)입니다.  | 
| humanAnswers |  JSON 객체 목록  | <pre>{<br />"answerContent": {<br />    "AWS/Rekognition/DetectModerationLabels/Image/V3": {<br />        "moderationLabels": [...]<br />    }<br />},</pre> 또는<pre>{<br />    "answerContent": {<br />        "AWS/Textract/AnalyzeDocument/Forms/V1": {<br />            "blocks": [...]<br />    }<br />},</pre> | 작업자 응답이 포함된 answerContent의 JSON 객체 목록.이 객체에는 제출 세부 정보와, “프라이빗 작업 인력을 사용한 경우”, 작업자 메타데이터도 포함됩니다. 자세한 내용은 [작업자 활동 추적](#a2i-worker-id-private)을 참조하세요.Amazon Rekognition `DetectModerationLabel` 검토 태스크에서 생성된 인적 루프 출력 데이터의 경우 이 파라미터에는 긍정적인 응답만 포함됩니다. 예를 들어 작업자가 콘텐츠 없음을 선택하면 이 응답은 포함되지 않습니다.** | 
| humanLoopName |  문자열  |  `'human-loop-name'`  | 인적 루프의 이름입니다. | 
| inputContent |  JSON 객체  |  <pre>{<br />    "aiServiceRequest": {...},<br />    "aiServiceResponse": {...},<br />    "humanTaskActivationConditionResults": {...},<br />    "selectedAiServiceResponse": {...}<br />}</pre>  |  인적 루프 생성을 요청할 때 AWS 서비스가 Amazon A2I로 전송한 입력 콘텐츠입니다.  | 
| aiServiceRequest |  JSON 객체  | <pre>{<br />    "document": {...},<br />    "featureTypes": [...],<br />    "humanLoopConfig": {...}<br />}</pre>또는 <pre>{<br />    "image": {...},<br />    "humanLoopConfig": {...}<br />}</pre> |  Amazon A2I와 통합된 AWS 서비스로 전송된 원래 요청입니다. 예를 들어 Amazon A2I와 함께 Amazon Rekognition을 사용하는 경우 여기에는 API 작업 `DetectModerationLabels`를 통해 이루어진 요청이 포함됩니다. Amazon Textract 통합의 경우 여기에는 `AnalyzeDocument`를 통해 이루어진 요청이 포함됩니다.  | 
| aiServiceResponse |  JSON 객체  |  <pre>{<br />    "moderationLabels": [...],<br />    "moderationModelVersion": "3.0"<br />}</pre> 또는 <pre>{<br />    "blocks": [...],<br />    "documentMetadata": {}<br />}</pre>  |   AWS 서비스의 전체 응답입니다. 이는 사람의 검토가 필요한지 여부를 결정하는 데 사용되는 데이터입니다. 이 객체에는 인적 검토자와 공유되지 않은 데이터 객체에 대한 메타데이터가 포함될 수 있습니다.  | 
| selectedAiServiceResponse |  JSON 객체  |  <pre>{<br />    "moderationLabels": [...],<br />    "moderationModelVersion": "3.0"<br />}</pre> 또는 <pre>{<br />    "blocks": [...],<br />    "documentMetadata": {}<br />}</pre>  |  `ActivationConditions`의 활성화 조건과 일치하는 `aiServiceResponse`의 서브셋. `aiServiceResponse`에 나열된 모든 데이터 객체는 추론을 무작위로 샘플링하거나 모든 추론이 활성화 조건을 시작한 경우에 `selectedAiServiceResponse`에 나열됩니다.  | 
| humanTaskActivationConditionResults |  JSON 객체  |  <pre>{<br />     "Conditions": [...]<br />}</pre>  |  인적 루프가 생성된 이유를 포함하는 `inputContent`의 JSON 객체입니다. 여기에는 인적 검토 워크플로(흐름 정의)에 포함된 활성화 조건 목록(`Conditions`)과 각 조건에 대한 평가 결과, 즉 이 결과는 `true` 또는 `false`입니다. 활성화 조건에 대한 자세한 내용은 [Amazon Augmented AI의 인적 루프 활성화 조건에 대한 JSON 스키마](a2i-human-fallback-conditions-json-schema.md) 섹션을 참조하세요.  | 

다음 테이블의 탭을 선택하여 태스크 유형별 파라미터에 대해 알아보고 각 기본 제공 태스크 유형에 대한 예제 출력 데이터 코드 블록을 확인하세요.

------
#### [ Amazon Textract Task Type Output Data ]

Amazon Textract 내장 통합을 사용하면 출력 데이터에 `awsManagedHumanLoopRequestSource`의 값으로 `'AWS/Textract/AnalyzeDocument/Forms/V1'`이 표시됩니다.

`answerContent` 파라미터는 Amazon A2I로 전송된 모든 블록에 대한 사람의 응답을 포함하는 `Block` 객체를 포함합니다.

`aiServiceResponse` 파라미터에는 를 사용하여 `AnalyzeDocument`로 전송된 원본 요청에 대한 Amazon Textract의 응답이 들어 있는 `Block` 객체도 포함되어 있습니다.

블록 객체에 표시되는 파라미터에 대해 자세히 알아보려면 Amazon Textract 개발자 안내서의 [블록](https://docs.aws.amazon.com/textract/latest/dg/API_Block.html)을 참조하세요.**

다음은 Amazon Textract 문서 분석 추론의 Amazon A2I 인간 검토의 출력 데이터 예제입니다.

```
{
    "awsManagedHumanLoopRequestSource": "AWS/Textract/AnalyzeDocument/Forms/V1",
    "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
    "humanAnswers": [
        {
            "answerContent": {
                "AWS/Textract/AnalyzeDocument/Forms/V1": {
                    "blocks": [...]
                }
            },
            "submissionTime": "2020-09-28T19:17:59.880Z",
            "workerId": "111122223333",
            "workerMetadata": {
                "identityData": {
                    "identityProviderType": "Cognito",
                    "issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_111111",
                    "sub": "c6aa8eb7-9944-42e9-a6b9-111122223333"
                }
            }
        }
    ],
    "humanLoopName": "humnan-loop-name",
    "inputContent": {
        "aiServiceRequest": {
            "document": {
                "s3Object": {
                    "bucket": "amzn-s3-demo-bucket1",
                    "name": "document-demo.jpg"
                }
            },
            "featureTypes": [
                "TABLES",
                "FORMS"
            ],
            "humanLoopConfig": {
                "dataAttributes": {
                    "contentClassifiers": [
                        "FreeOfPersonallyIdentifiableInformation"
                    ]
                },
                "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
                "humanLoopName": "humnan-loop-name"
            }
        },
        "aiServiceResponse": {
            "blocks": [...],
            "documentMetadata": {
                "pages": 1
            }
        },
        "humanTaskActivationConditionResults": {
            "Conditions": [
                {
                    "EvaluationResult": true,
                    "Or": [
                        {
                            "ConditionParameters": {
                                "ImportantFormKey": "Mail address",
                                "ImportantFormKeyAliases": [
                                    "Mail Address:",
                                    "Mail address:",
                                    "Mailing Add:",
                                    "Mailing Addresses"
                                ],
                                "KeyValueBlockConfidenceLessThan": 100,
                                "WordBlockConfidenceLessThan": 100
                            },
                            "ConditionType": "ImportantFormKeyConfidenceCheck",
                            "EvaluationResult": true
                        },
                        {
                            "ConditionParameters": {
                                "ImportantFormKey": "Mail address",
                                "ImportantFormKeyAliases": [
                                    "Mail Address:",
                                    "Mail address:",
                                    "Mailing Add:",
                                    "Mailing Addresses"
                                ]
                            },
                            "ConditionType": "MissingImportantFormKey",
                            "EvaluationResult": false
                        }
                    ]
                }
            ]
        },
        "selectedAiServiceResponse": {
            "blocks": [...]
        }
    }
}
```

------
#### [ Amazon Rekognition Task Type Output Data ]

Amazon Textract 내장 통합을 사용하면 출력 데이터에 `'AWS/Rekognition/DetectModerationLabels/Image/V3'`의 값으로 문자열이`awsManagedHumanLoopRequestSource` 표시됩니다.

`answerContent` 파라미터는 Amazon A2I로 전송된 모든 조절 레이블에 대한 사람의 응답을 포함하는 `moderationLabels` 객체를 포함합니다.

`aiServiceResponse` 파라미터에는 `DetectModerationLabels`로 전송된 원본 요청에 대한 Amazon Rekognition의 응답이 들어 있는 `moderationLabels` 객체도 포함되어 있습니다.

블록 객체에 표시되는 파라미터에 대해 자세히 알아보려면 Amazon Rekognition 개발자 안내서의 [ModerationLabel](https://docs.aws.amazon.com/rekognition/latest/dg/API_ModerationLabel.html)을 참조하세요.

다음은 Amazon Rekognition Image 조절 추론의 Amazon A2I 인간 검토의 출력 데이터 예제입니다.

```
{
    "awsManagedHumanLoopRequestSource": "AWS/Rekognition/DetectModerationLabels/Image/V3",
    "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
    "humanAnswers": [
        {
            "answerContent": {
                "AWS/Rekognition/DetectModerationLabels/Image/V3": {
                    "moderationLabels": [...]
                }
            },
            "submissionTime": "2020-09-28T19:22:35.508Z",
            "workerId": "ef7294f850a3d9d1",
            "workerMetadata": {
                "identityData": {
                    "identityProviderType": "Cognito",
                    "issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_111111",
                    "sub": "c6aa8eb7-9944-42e9-a6b9-111122223333"
                }
            }
        }
    ],
    "humanLoopName": "humnan-loop-name",
    "inputContent": {
        "aiServiceRequest": {
            "humanLoopConfig": {
                "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
                "humanLoopName": "humnan-loop-name"
            },
            "image": {
                "s3Object": {
                    "bucket": "amzn-s3-demo-bucket1",
                    "name": "example-image.jpg"
                }
            }
        },
        "aiServiceResponse": {
            "moderationLabels": [...],
            "moderationModelVersion": "3.0"
        },
        "humanTaskActivationConditionResults": {
            "Conditions": [
                {
                    "EvaluationResult": true,
                    "Or": [
                        {
                            "ConditionParameters": {
                                "ConfidenceLessThan": 98,
                                "ModerationLabelName": "Suggestive"
                            },
                            "ConditionType": "ModerationLabelConfidenceCheck",
                            "EvaluationResult": true
                        },
                        {
                            "ConditionParameters": {
                                "ConfidenceGreaterThan": 98,
                                "ModerationLabelName": "Female Swimwear Or Underwear"
                            },
                            "ConditionType": "ModerationLabelConfidenceCheck",
                            "EvaluationResult": false
                        }
                    ]
                }
            ]
        },
        "selectedAiServiceResponse": {
            "moderationLabels": [
                {
                    "confidence": 96.7122802734375,
                    "name": "Suggestive",
                    "parentName": ""
                }
            ],
            "moderationModelVersion": "3.0"
        }
    }
}
```

------

## 사용자 지정 태스크 유형의 출력 데이터
<a name="sms-output-data-custom"></a>

Amazon A2I를 사용자 지정 인적 검토 워크플로에 추가하면 인적 검토 태스크에서 반환된 출력 데이터에 다음과 같은 파라미터가 표시됩니다.


****  

| 파라미터 | 값 유형 | 설명 | 
| --- | --- | --- | 
|  `flowDefinitionArn`  |  문자열  |  인적 루프를 생성하는 데 사용된 인적 검토 워크플로(플로우 정의)의 Amazon 리소스 수(ARN)입니다.  | 
|  `humanAnswers`  |  JSON 객체 목록  | 작업자 응답이 포함된 answerContent의 JSON 객체 목록. 이 파라미터의 값은 [작업자 태스크 템플릿](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-instructions-overview.html)에서 받은 출력에 따라 결정됩니다.프라이빗 작업 인력을 사용하는 경우 작업자 메타데이터가 포함됩니다. 자세한 내용은 [작업자 활동 추적](#a2i-worker-id-private)을 참조하세요. | 
|  `humanLoopName`  | 문자열 | 인적 루프의 이름입니다. | 
|  `inputContent`  |  JSON 객체  |  [https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StartHumanLoop.html](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/API_StartHumanLoop.html)에 요청하여 Amazon A2I로 전송된 입력 콘텐츠.  | 

다음은 Amazon A2I 및 Amazon Transcribe와의 사용자 지정 통합에서 얻은 출력 데이터의 예제입니다. 이 예시에서는 `inputContent`이 다음과 같이 구성되어 있습니다.
+ Amazon S3에 있는 .mp4 파일 경로와 동영상 제목
+ Amazon Transcribe에서 반환된 트랜스크립션 (Amazon Transcribe 출력 데이터에서 파싱됨)
+ 작업자 태스크 템플릿에서 .mp4 파일을 클리핑하고 작업자에게 동영상의 관련 부분을 보여주기 위해 사용하는 시작 및 종료 시간입니다.

```
{
    "flowDefinitionArn": "arn:aws:sagemaker:us-west-2:111122223333:flow-definition/flow-definition-name",
    "humanAnswers": [
        {
            "answerContent": {
                "transcription": "use lambda to turn your notebook"
            },
            "submissionTime": "2020-06-18T17:08:26.246Z",
            "workerId": "ef7294f850a3d9d1",
            "workerMetadata": {
                "identityData": {
                    "identityProviderType": "Cognito",
                    "issuer": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_111111",
                    "sub": "c6aa8eb7-9944-42e9-a6b9-111122223333"
                }
            }

        }
    ],
    "humanLoopName": "human-loop-name",
    "inputContent": {
        "audioPath": "s3://amzn-s3-demo-bucket1/a2i_transcribe_demo/Fully-Managed Notebook Instances with Amazon SageMaker - a Deep Dive.mp4",
        "end_time": 950.27,
        "original_words": "but definitely use Lambda to turn your ",
        "start_time": 948.51,
        "video_title": "Fully-Managed Notebook Instances with Amazon SageMaker - a Deep Dive.mp4"
    }
}
```

## 작업자 활동 추적
<a name="a2i-worker-id-private"></a>

Amazon A2I는 작업 출력 데이터에서 개별 작업자를 추적하는 데 사용할 수 있는 정보를 제공합니다. 인적 검토 태스크를 수행한 작업자를 식별하려면 Amazon S3의 출력 데이터에서 다음을 사용합니다.
+ `acceptanceTime`은 작업자가 태스크를 수락한 시간입니다. 이 날짜 및 시간 스탬프의 형식은 년(`YYYY`), 월(`MM`), 일(`DD`), 시(`HH`), 분(`MM`), 초(`SS`), 및 밀리초(`mmm`)에 대한 `YYYY-MM-DDTHH:MM:SS.mmmZ`입니다. 날짜 및 시간은 **T**로 구분됩니다.
+ `submissionTime`는 이 시간은 작업자가 **제출** 버튼을 사용하여 주석을 제출한 시간입니다. 이 날짜 및 시간 스탬프의 형식은 년(`YYYY`), 월(`MM`), 일(`DD`), 시(`HH`), 분(`MM`), 초(`SS`), 및 밀리초(`mmm`)에 대한 `YYYY-MM-DDTHH:MM:SS.mmmZ`입니다. 날짜 및 시간은 **T**로 구분됩니다.
+ `timeSpentInSeconds`은 작업자가 해당 태스크를 적극적으로 수행한 총 시간(초)을 보고합니다. 이 지표에는 작업자가 일시 중지하거나 휴식을 취한 시간은 포함되지 않습니다.
+ `workerId`는 각 작업자에게 고유합니다.
+ `workerMetadata`에서 [프라이빗 작업 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private.html)을 사용하는 경우 다음과 같은 내용이 표시됩니다.
  + `identityProviderType`은 프라이빗 작업 인력을 관리하는 데 사용하는 서비스입니다.
  + `issuer`은 이 인적 검토 태스크에 배정된 작업 팀과 관련된 Cognito 사용자 풀 또는 OpenID Connect(OIDC) 자격 증명 공급자(IdP) 발급자입니다.
  + 고유 `sub` 식별자는 해당 작업자를 참조합니다. Amazon Cognito를 사용하여 인력을 생성하는 경우 Amazon Cognito를 사용하여 이 ID와 연결된 이 작업자(예: 해당 이름 또는 사용자 이름)에 대한 세부 정보를 검색할 수 있습니다. 방법을 알아보려면 [Amazon Cognito 개발자 안내서](https://docs.aws.amazon.com/cognito/latest/developerguide/)의 [사용자 계정 관리 및 검색](https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-manage-user-accounts.html#manage-user-accounts-searching-user-attributes)을 참조하세요.**

다음은 Amazon Cognito를 사용하여 프라이빗 작업 인력을 생성하는 경우 확인할 수 있는 출력의 예입니다. 이는 `identityProviderType`에서 식별됩니다.

```
"submissionTime": "2020-12-28T18:59:58.321Z",
"acceptanceTime": "2020-12-28T18:59:15.191Z", 
"timeSpentInSeconds": 40.543,
"workerId": "a12b3cdefg4h5i67",
"workerMetadata": {
    "identityData": {
        "identityProviderType": "Cognito",
        "issuer": "https://cognito-idp.aws-region.amazonaws.com/aws-region_123456789",
        "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
    }
}
```

 다음은 OIDC IdP를 사용하여 프라이빗 작업 인력을 생성하는 경우 확인할 수 있는 출력의 예입니다.

```
"workerMetadata": {
        "identityData": {
            "identityProviderType": "Oidc",
            "issuer": "https://example-oidc-ipd.com/adfs",
            "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
        }
}
```

프라이빗 작업 인력 사용에 대한 자세한 내용은 [프라이빗 작업 인력](sms-workforce-private.md)을 참조하세요.

# Amazon Augmented AI의 권한 및 보안
<a name="a2i-permissions-security"></a>

Amazon Augmented AI(Amazon A2I)를 사용하여 ML/AI 애플리케이션을 위한 인적 검토 워크플로를 만들 때는 Amazon SageMaker AI에서 인력 및 작업자 태스크 템플릿과 같은 *리소스*를 만들고 구성합니다. 인적 루프를 구성하고 시작하려면 Amazon A2I를 Amazon Textract 또는 Amazon Rekognition과 같은 다른 AWS 서비스와 통합하거나 Amazon Augmented AI 런타임 API를 사용합니다. 인적 검토 워크플로를 생성하고 인적 루프를 시작하려면 AWS Identity and Access Management (IAM) 역할 또는 사용자에게 특정 정책을 연결해야 합니다. 구체적으로 설명하면 다음과 같습니다.
+ 2020년 1월 12일 또는 그 이후에 이미지 입력 데이터를 사용하여 인적 루프를 시작하는 경우 입력 데이터가 포함된 Amazon S3 버킷에 CORS 헤더 정책을 추가해야 합니다. 자세한 내용은 [CORS 권한 요구 사항](#a2i-cors-update) 섹션을 참조하세요.
+ 흐름 정의를 생성할 때 인적 태스크 UI에서 렌더링될 객체를 읽고 인적 검토 결과를 쓰기 위해 Amazon S3에 액세스할 수 있는 권한을 Amazon A2I에 부여하는 역할을 제공해야 합니다.

  이 역할에는 역할을 수임할 수 있는 SageMaker AI 권한을 부여하기 위해 신뢰 정책이 연결되어 있어야 합니다. 이렇게 하면 Amazon A2I가 이 역할에 연결된 권한에 따라 작업을 수행할 수 있습니다.

  흐름 정의 생성에 사용하는 역할을 수정하고 연결할 수 있는 정책 예제는 [흐름 정의를 생성하는 데 사용되는 IAM 역할에 권한 추가](#a2i-human-review-permissions-s3) 섹션을 참조하세요. 이러한 정책은 SageMaker AI 콘솔의 Amazon A2I 영역 내 **인적 검토 워크플로** 섹션에 만들어진 IAM 역할에 연결됩니다.
+ 인적 루프를 생성하고 시작하려면, 기본 제공 태스크 유형(예: `DetectModerationLabel` 또는 `AnalyzeDocument`)의 API 작업이나 사용자 지정 ML 애플리케이션의 Amazon A2I 런타임 API 작업 `StartHumanLoop`을 사용합니다. 이러한 서비스에 Amazon A2I 작업을 사용할 권한을 부여하려면 이러한 API 작업을 간접 호출하는 `AmazonAugmentedAIFullAccess` 관리형 정책을 사용자에게 연결해야 합니다. 자세한 방법은 [Amazon A2I API 작업을 간접 호출할 수 있는 사용자 생성](#create-user-grants)을 참조하세요.

  이 정책은 기본 제공 작업 유형과 연결된 AWS 서비스의 API 작업을 호출할 수 있는 권한을 부여*하지* 않습니다. 예를 들어 `AmazonAugmentedAIFullAccess`는 Amazon Rekognition `DetectModerationLabel` API 작업 또는 Amazon Textract `AnalyzeDocument` API 작업을 호출할 수 있는 권한을 부여하지 않습니다. 더 일반적인 정책인 `AmazonAugmentedAIIntegratedAPIAccess`를 사용하여 이러한 권한을 부여할 수 있습니다. 자세한 내용은 [Amazon A2I, Amazon Textract 및 Amazon Rekognition API 작업을 간접 호출할 수 있는 권한을 가진 사용자 생성](#a2i-grant-general-permission) 단원을 참조하십시오. 이는 사용자에게 Amazon A2I 및 통합 AWS 서비스의 API 작업을 사용할 수 있는 광범위한 권한을 부여하려는 경우에 좋은 옵션입니다.

  보다 세분화된 권한을 구성하려면 이러한 개별 서비스 사용 권한을 부여하는 데 사용할 수 있는 자격 증명 기반 정책에 대한 [Amazon Rekognition 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/rekognition/latest/dg/security_iam_id-based-policy-examples.html) 및 [Amazon Textract 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/textract/latest/dg/security_iam_id-based-policy-examples.html) 섹션을 참조하세요.
+ 사용자 지정 작업자 태스크 UI 템플릿을 미리 보려면 사용자 인터페이스에서 렌더링되는 Amazon S3 객체에 대한 읽기 권한이 있는 IAM 역할이 필요합니다. [작업자 작업 템플릿 미리 보기 사용](#permissions-for-worker-task-templates-augmented-ai)의 정책 예제를 참조하세요.

**Topics**
+ [CORS 권한 요구 사항](#a2i-cors-update)
+ [흐름 정의를 생성하는 데 사용되는 IAM 역할에 권한 추가](#a2i-human-review-permissions-s3)
+ [Amazon A2I API 작업을 간접 호출할 수 있는 사용자 생성](#create-user-grants)
+ [Amazon A2I, Amazon Textract 및 Amazon Rekognition API 작업을 간접 호출할 수 있는 권한을 가진 사용자 생성](#a2i-grant-general-permission)
+ [작업자 작업 템플릿 미리 보기 사용](#permissions-for-worker-task-templates-augmented-ai)
+ [AWS KMS 암호화된 버킷과 함께 Amazon A2I 사용](#a2i-kms-encryption)
+ [추가 권한 및 보안 리소스](#additional-security-resources-augmented-ai)

## CORS 권한 요구 사항
<a name="a2i-cors-update"></a>

2020년 초에 Chrome 및 Firefox와 같이 널리 사용되는 브라우저에서 [EXIF 데이터](https://en.wikipedia.org/wiki/Exif)라고 하는 이미지 메타데이터를 기반으로 이미지를 회전하는 기본 동작을 변경했습니다. 이전에는 브라우저에서 항상 디스크에 저장된 것과 똑같은 방식으로 이미지를 표시했으며 일반적으로 회전되지 않은 상태였습니다. 변경 후에는 이제 방향 값이라는 이미지 메타데이터에 따라 이미지가 회전합니다.** 이는 전체 기계 학습(ML) 커뮤니티에 중요한 영향을 미칩니다. 예를 들어 EXIF 방향을 고려하지 않는 경우 이미지에 주석을 다는 애플리케이션에서 이미지가 예상치 못한 방향으로 표시되어 레이블이 잘못 표시될 수 있습니다.

Chrome 89부터 웹 표준 그룹 W3C가 이미지 교체를 제어하는 기능이 웹의 동일 오리진 정책을 위반한다고 결정했기 때문에는 더 이상 이미지 교체를 자동으로 방지할 수 AWS 없습니다. 따라서 인적 루프 생성 요청을 제출할 때 인간 작업자가 예측 가능한 방향으로 입력 이미지에 주석을 달 수 있도록 하려면 입력 이미지가 포함된 S3 버킷에 CORS 헤더 정책을 추가해야 합니다.

**중요**  
입력 데이터가 포함된 S3 버킷에 CORS 구성을 추가하지 않으면 해당 입력 데이터 객체에 대한 인적 검토 태스크가 실패합니다.

Amazon S3 콘솔에서 입력 데이터가 포함된 S3 버킷에 CORS 정책을 추가할 수 있습니다. S3 콘솔의 입력 이미지가 포함된 S3 버킷에 필수 CORS 헤더를 설정하려면 [CORS에 도메인 간 리소스 공유를 추가하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html)에 설명된 지침을 따르세요. 이미지를 호스팅하는 버킷에는 다음 CORS 구성 코드를 사용하세요. Amazon S3 콘솔을 사용하여 정책을 버킷에 추가하는 경우 JSON 형식을 사용해야 합니다.

**JSON**

```
[{
   "AllowedHeaders": [],
   "AllowedMethods": ["GET"],
   "AllowedOrigins": ["*"],
   "ExposeHeaders": []
}]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>
```

다음 GIF는 Amazon S3 콘솔을 사용하여 CORS 헤더 정책을 추가하는 방법에 대한 Amazon S3 설명서의 지침을 보여줍니다.

![\[Amazon S3 콘솔을 사용하여 CORS 헤더 정책을 추가하는 방법에 대한 Gif입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## 흐름 정의를 생성하는 데 사용되는 IAM 역할에 권한 추가
<a name="a2i-human-review-permissions-s3"></a>

흐름 정의를 만들려면 SageMaker AI 콘솔에서 인적 검토 워크플로를 만들거나 `CreateFlowDefinition` API 작업을 사용할 때 사용하는 역할에 이 섹션의 정책을 연결합니다.
+ 콘솔을 사용하여 인적 검토 워크플로를 생성하는 경우 [콘솔에서 인적 검토 워크플로를 생성할 때](https://docs.aws.amazon.com/sagemaker/latest/dg/create-human-review-console.html) **IAM 역할** 필드에 Amazon 리소스 이름(ARN) 역할을 입력합니다.
+ API를 사용하여 흐름 정의를 생성할 때 `CreateFlowDefinition` 작업의 `RoleArn` 파라미터에 전달되는 역할에 이러한 정책을 연결합니다.

인적 검토 워크플로(흐름 정의)를 생성할 때 Amazon A2I에서 작업을 완료하기 위해 Amazon S3를 간접 호출합니다. Amazon S3 버킷에서 파일을 검색하고 저장할 수 있는 권한을 Amazon A2I에 부여하려면 다음 정책을 생성하여 역할에 연결합니다. 예를 들어, 인적 검토를 위해 전송할 이미지, 문서 및 기타 파일이 `my_input_bucket`이라는 S3 버킷에 저장되어 있고, `my_output_bucket`이라는 버킷에 인적 검토를 저장하려는 경우 다음 정책을 생성합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::my_input_bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my_output_bucket/*"
            ]
        }
    ]
}
```

------

또한 역할을 수임할 수 있는 SageMaker AI 권한을 부여하려면 IAM 역할에 다음과 같은 신뢰 정책이 있어야 합니다. IAM 신뢰 정책에 대한 자세한 내용은AWS 자격 증명 및 액세스 관리 설명서에서 **정책 및 권한**의 [리소스 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) 섹션을 참조하세요.**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSageMakerToAssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

IAM 역할과 정책을 생성하고 관리하는 방법에 대한 자세한 내용은AWS Identity and Access Management 사용 설명서에서 다음 주제를 참조하세요.**
+ IAM 역할을 생성하려면 [역할을 생성하여 IAM 사용자에게 권한 위임](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하세요.
+ IAM 정책을 생성하는 방법은 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.
+ 역할에 IAM 정책을 연결하는 방법은 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

## Amazon A2I API 작업을 간접 호출할 수 있는 사용자 생성
<a name="create-user-grants"></a>

Amazon A2I를 사용하여 Amazon Rekognition, Amazon Textract 또는 Amazon A2I 런타임 API에 대한 인적 루프를 생성하고 시작하려면 Amazon A2I 작업을 간접 호출할 수 있는 권한을 가진 사용자를 사용해야 합니다. 그러려면 IAM 콘솔을 사용하여 [https://console.aws.amazon.com/iam/home?region=us-east-2#/policies/arn:aws:iam::aws:policy/AmazonAugmentedAIFullAccess$jsonEditor](https://console.aws.amazon.com/iam/home?region=us-east-2#/policies/arn:aws:iam::aws:policy/AmazonAugmentedAIFullAccess$jsonEditor) 관리형 정책을 신규 또는 기존 사용자에게 연결합니다.

이 정책은 사용자에게 흐름 정의를 생성하고 관리하도록 SageMaker API에서 API 작업을 간접 호출하고 인적 루프를 생성하고 관리하도록 Amazon Augmented AI 런타임 API를 간접 호출할 수 있는 권한을 부여합니다. 이러한 API 작업에 대한 자세한 내용은 [Amazon Augmented AI에서 API 사용](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-api-references.html) 단원을 참조하세요.

`AmazonAugmentedAIFullAccess`는 Amazon Rekognition 또는 Amazon Textract API 작업에 대한 사용 권한을 부여하지 않습니다.

**참고**  
인적 루프를 생성하고 시작하는 데 사용되는 IAM 역할에 `AmazonAugmentedAIFullAccess` 정책을 연결할 수도 있습니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ 의 사용자 및 그룹 AWS IAM Identity Center:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따르세요.**

자세한 내용은AWS Identity and Access Management 사용 설명서의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)을 참조하세요.**

## Amazon A2I, Amazon Textract 및 Amazon Rekognition API 작업을 간접 호출할 수 있는 권한을 가진 사용자 생성
<a name="a2i-grant-general-permission"></a>

기본 제공 태스크 유형(즉, Amazon Rekognition의 `DetectModerationLables` 및 Amazon Textract의 `AnalyzeDocument`)에서 사용하는 API 작업을 간접 호출하는 권한과 모든 Amazon A2I API 작업을 사용할 수 있는 권한이 있는 사용자를 생성하려면 IAM 관리형 정책인 `AmazonAugmentedAIIntegratedAPIAccess`에 연결합니다. 태스크 유형이 둘 이상인 Amazon A2I를 사용하여 사용자에게 광범위한 권한을 부여할 때 이 정책을 사용할 수도 있습니다. 이러한 API 작업에 대한 자세한 내용은 [Amazon Augmented AI에서 API 사용](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-api-references.html) 섹션을 참조하세요.

**참고**  
인적 루프를 생성하고 시작하는 데 사용되는 IAM 역할에 `AmazonAugmentedAIIntegratedAPIAccess` 정책을 연결할 수도 있습니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ 의 사용자 및 그룹 AWS IAM Identity Center:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따르세요.**

자세한 내용은AWS Identity and Access Management 사용 설명서의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)을 참조하세요.**

## 작업자 작업 템플릿 미리 보기 사용
<a name="permissions-for-worker-task-templates-augmented-ai"></a>

작업 시 작업자에게 표시되는 인터페이스와 지침을 사용자 지정하려면 작업자 작업 템플릿을 생성합니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html) 작업 또는 SageMaker AI 콘솔을 사용하여 템플릿을 만들 수 있습니다.

템플릿을 미리 보려면 사용자 인터페이스에서 렌더링되는 Amazon S3 객체 읽기가 가능한 다음 권한이 있는 IAM 역할이 필요합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::my_input_bucket/*"
            ]
        }
    ]
}
```

------

Amazon Rekognition 및 Amazon Textract 작업 유형의 경우 SageMaker AI 콘솔의 Amazon Augmented AI 섹션을 사용하여 템플릿을 미리 볼 수 있습니다. 사용자 지정 태스크 유형의 경우 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RenderUiTemplate.html) 작업을 간접 호출하여 템플릿을 미리 봅니다. 템플릿을 미리 보려면 작업 유형에 대한 지침을 따르세요.
+  Amazon Rekognition 및 Amazon Textract 작업 유형 - SageMaker AI 콘솔에서 [작업자 태스크 템플릿 생성](a2i-worker-template-console.md#a2i-create-worker-template-console)에 설명된 절차를 참조하여 역할의 Amazon 리소스 이름(ARN)을 사용합니다.
+ 사용자 지정 태스크 유형 - `RenderUiTemplate` 작업에서 `RoleArn` 파라미터에 역할의 ARN을 사용합니다.

## AWS KMS 암호화된 버킷과 함께 Amazon A2I 사용
<a name="a2i-kms-encryption"></a>

 AWS Key Management Service (AWS KMS) 고객 관리형 키를 지정하여 `OutputConfig`의에서 출력 데이터를 암호화하는 경우 해당 키와 유사한 IAM 정책을 추가[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html)해야 합니다. 이 정책은 인적 루프를 생성하는 데 사용하는 IAM 실행 역할에 이 키를 사용하여 `"Action"`에 나열된 모든 작업을 수행할 수 있는 권한을 부여합니다. 이러한 작업에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 [AWS KMS 권한을](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) 참조하세요.

이 정책을 사용하려면 `"Principal"`의 IAM 서비스 역할 ARN을 인적 검토 워크플로(흐름 정의)를 생성하는 데 사용하는 실행 역할의 ARN으로 교체하세요. `CreateFlowDefinition`를 사용하여 레이블 지정 작업을 생성할 때 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn)에 지정한 ARN입니다. 콘솔에서 흐름 정의를 생성할 때는 `KmsKeyId`를 제공할 수 없다는 점에 유의하세요.

```
{
    "Sid": "AllowUseOfKmsKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/service-role/example-role"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

## 추가 권한 및 보안 리소스
<a name="additional-security-resources-augmented-ai"></a>
+ [태그를 사용하여 SageMaker AI 리소스에 대한 액세스 제어](security_iam_id-based-policy-examples.md#access-tag-policy).
+ [Amazon SageMaker AI의 ID 기반 정책](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)
+ [조건 키를 사용하여 SageMaker AI 리소스 만들기 제어](security_iam_id-based-policy-examples.md#sagemaker-condition-examples)
+ [Amazon SageMaker AI API 권한: 작업, 권한 및 리소스 참조](api-permissions-reference.md)
+ [Amazon SageMaker AI에서 보안 구성](security.md)

# Amazon Augmented AI Amazon CloudWatch Events 에서 사용
<a name="a2i-cloudwatch-events"></a>

Amazon Augmented AI는 인적 검토 루프 상태가 `Completed`, `Failed`, 또는 `Stopped`로 변경될 때 Amazon CloudWatch Events를 사용하여 사용자에게 경고합니다. 이 이벤트 전송은 최소 한 번 보장됩니다. 즉, 인적 루프가 종료될 때 생성되는 모든 이벤트가 CloudWatch Events(Amazon EventBridge)로 성공적으로 전송됩니다. 검토 루프가 이러한 상태 중 하나로 변경되면 Augmented AI는 다음과 유사한 이벤트를 CloudWatch Events에 전송합니다.

```
{
    "version":"0",
    "id":"12345678-1111-2222-3333-12345EXAMPLE",
    "detail-type":"SageMaker A2I HumanLoop Status Change",
    "source":"aws.sagemaker",
    "account":"1111111111111",
    "time":"2019-11-14T17:49:25Z",
    "region":"us-east-1",
    "resources":["arn:aws:sagemaker:us-east-1:111111111111:human-loop/humanloop-nov-14-1"],
    "detail":{
        "creationTime":"2019-11-14T17:37:36.740Z",
        "failureCode":null,
        "failureReason":null,
        "flowDefinitionArn":"arn:aws:sagemaker:us-east-1:111111111111:flow-definition/flowdef-nov-12",
        "humanLoopArn":"arn:aws:sagemaker:us-east-1:111111111111:human-loop/humanloop-nov-14-1",
        "humanLoopName":"humanloop-nov-14-1",
        "humanLoopOutput":{ 
            "outputS3Uri":"s3://customer-output-bucket-specified-in-flow-definition/flowdef-nov-12/2019/11/14/17/37/36/humanloop-nov-14-1/output.json"
        },
        "humanLoopStatus":"Completed"
    }
}
```

JSON 출력의 세부 정보에는 다음이 포함되어 있습니다.

`creationTime`  
Augmented AI에서 인적 루프가 생성된 타임스탬프.

`failureCode`  
특정 유형의 실패를 나타내는 실패 코드입니다.

`failureReason`  
인적 루프가 실패한 이유입니다. 실패 이유는 인적 검토 루프 상태가 `failed`일 때만 반환됩니다.

`flowDefinitionArn`  
흐름 정의 또는 인적 검토 워크플로의 Amazon 리소스 이름(ARN)입니다.**

`humanLoopArn`  
인적 루프의 Amazon 리소스 이름(ARN)입니다.

`humanLoopName`  
인적 루프의 이름입니다.

`humanLoopOutput`  
인적 루프의 출력에 대한 정보가 포함된 객체입니다.

`outputS3Uri`  
Augmented AI에서 인적 루프 출력이 저장된 Amazon S3 객체의 위치.

`humanLoopStatus`  
인적 루프의 상태입니다.

## 인적 루프의 이벤트를 CloudWatch 이벤트로 전송
<a name="a2i-cloud-watch-events-rule-setup"></a>

Amazon A2I 인적 루프에 대한 상태 업데이트 또는 *이벤트를* 가져오도록 CloudWatch Events 규칙을 구성하려면 AWS Command Line Interface (AWS CLI) [https://docs.aws.amazon.com/cli/latest/reference/events/put-rule.html](https://docs.aws.amazon.com/cli/latest/reference/events/put-rule.html) 명령을 사용합니다. `put-rule` 명령을 사용할 때 다음을 지정하여 인적 루프 상태를 수신합니다.
+ `\"source\":[\"aws.sagemaker\"]`
+ `\"detail-type\":[\"SageMaker A2I HumanLoop Status Change\"]`

모든 상태 변경을 감시하도록 CloudWatch Events 규칙을 구성하려면 다음 명령을 사용하여 자리 표시자 텍스트를 바꿉니다. 예를 들어, `"A2IHumanLoopStatusChanges"`를 고유한 CloudWatch Events 규칙 이름으로 바꾸고 *`"arn:aws:iam::111122223333:role/MyRoleForThisRule"`*을 events.amazonaws.com의 신뢰 정책이 연결된 IAM 역할의 Amazon 리소스 번호(ARN)로 바꿉니다. *region*을 규칙을 생성하려는 AWS 리전으로 바꿉니다.

```
aws events put-rule --name "A2IHumanLoopStatusChanges" 
    --event-pattern "{\"source\":[\"aws.sagemaker\"],\"detail-type\":[\"SageMaker A2I HumanLoop Status Change\"]}" 
    --role-arn "arn:aws:iam::111122223333:role/MyRoleForThisRule" 
    --region "region"
```

`put-rule` 요청에 대한 자세한 내용은 *Amazon CloudWatch Events 사용 설명서*에서 [CloudWatch 이벤트의 이벤트 패턴](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)을 참고하세요.

## 이벤트를 처리할 대상 설정
<a name="a2i-subscribe-cloud-watch-events"></a>

이벤트를 처리하려면 대상을 설정해야 합니다. 예를 들어 인적 루프 상태가 변경될 때 이메일을 수신하려면 Amazon CloudWatch 사용 설명서의 [Amazon SNS 알림 설정](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)에 있는 절차를 사용하여 Amazon SNS 주제를 설정하고 해당 주제를 이메일로 구독하세요.** 주제를 생성한 후에는 사용자는 해당 주제를 사용하여 대상을 생성할 수 있습니다.

**CloudWatch Events 규칙에 대상을 추가하려면**

1. CloudWatch 콘솔([https://console.aws.amazon.com/cloudwatch/home](https://console.aws.amazon.com/cloudwatch/home))을 엽니다.

1. 탐색 창에서 **규칙**을 선택합니다.

1. 대상을 추가할 규칙을 선택합니다.

1. **작업**을 선택한 후 **편집**을 선택합니다.

1. **대상**에서 **대상 추가**를 선택하고 인적 루프 상태 변경 이벤트가 감지될 때 수행할 AWS 서비스를 선택합니다.

1. 대상을 구성합니다. 지침은 [해당 서비스에 대한AWS 설명서](https://docs.aws.amazon.com/index.html)에서 대상 구성에 대한 주제를 참고하세요.

1. **세부 정보 구성**을 선택합니다.

1. **이름**에 이름을 입력하고 선택적으로 **설명**에 규칙 용도에 대한 세부 정보를 제공합니다.

1. **상태** 옆에 있는 확인란을 선택하여 규칙이 **활성화**로 나열되도록 합니다.

1. **규칙 업데이트**를 선택합니다.

## 인적 검토 결과 사용
<a name="using-human-review-output"></a>

인적 검토 결과를 받은 후 사용자는 결과를 분석하여 기계 학습 예측과 비교할 수 있습니다. Amazon S3 버킷에 저장된 JSON에는 기계 학습 예측과 인적 검토 결과가 모두 포함되어 있습니다.

## 추가 정보
<a name="amazon-augmented-ai-programmatic-walkthroughs"></a>

[Amazon SageMaker AI에서 Amazon EventBridge로 보내는 이벤트](automating-sagemaker-with-eventbridge.md)

# Amazon Augmented AI에서 API 사용
<a name="a2i-api-references"></a>

사용자는 인적 검토 워크플로 또는 작업자 태스크 템플릿을 프로그래밍 방식으로 생성할 수 있습니다. 사용하는 API는 Amazon Rekognition, Amazon Textract 또는 사용자 지정 태스크 유형의 생성 여부에 따라 다릅니다. 이 항목에서는 각 태스크 유형 및 프로그래밍 작업에 대한 API 참조 설명서를 연결하는 링크를 제공합니다.

다음 API를 Augmented AI에서 사용할 수 있습니다.

**Amazon Augmented AI**  
Augmented AI API를 사용하여 인적 검토 루프를 시작, 중지 및 삭제합니다. 또한 모든 인적 검토 루프를 나열하고 계정의 인적 검토 루프에 대한 정보를 반환할 수 있습니다.  
[Amazon Augmented AI 런타임 API 참조](https://docs.aws.amazon.com/augmented-ai/2019-11-07/APIReference/Welcome.html)에서 인적 검토 루프 API에 대해 자세히 알아봅니다.

**Amazon Rekognition**  
`[ DetectModerationLabels](https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectModerationLabels.html)` API의 **HumanLoopConfig** 파라미터를 사용하면 Amazon Rekognition을 사용해 인적 검토 워크플로를 개시할 수 있습니다.

**Amazon SageMaker AI**  
Amazon SageMaker API를 사용하여 인적 검토 워크플로라고도 하는 `FlowDefinition`을 만들 수 있습니다.** 또한 `HumanTaskUi` 또는 작업자 태스크 템플릿을 생성할 수도 있습니다.**  
자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFlowDefinition.html) 또는 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHumanTaskUi.html) API 설명서를 참조하세요.

**Amazon Textract**  
[AnalyzeDocument](https://docs.aws.amazon.com/textract/latest/dg/API_AnalyzeDocument.html) API의 **HumanLoopConfig** 파라미터를 사용하면 Amazon Textract를 사용하여 인적 검토 워크플로를 시작할 수 있습니다.

## 프로그래밍 튜토리얼
<a name="amazon-augmented-ai-programmatic-walkthroughs"></a>

다음 자습서에서는 인적 검토 워크플로와 작업자 태스크 템플릿을 프로그래밍 방식으로 생성하기 위한 예제 코드와 단계별 지침을 제공합니다.
+ [자습서: Amazon A2I API를 사용하여 시작하기](a2i-get-started-api.md)
+ [인적 검토 워크플로(API) 생성](a2i-create-flow-definition.md#a2i-create-human-review-api)
+ [인적 루프 생성 및 시작](a2i-start-human-loop.md)
+ Amazon Rekognition 개발자 안내서에서 [Amazon Rekognition과 함께 Amazon Augmented AI를 사용하기](https://docs.aws.amazon.com/rekognition/latest/dg/a2i-rekognition.html)**
+ Amazon Textract 개발자 안내서의 [Amazon Textract AnalyzeDocument에서 Amazon Augmented AI를 사용하기](https://docs.aws.amazon.com/textract/latest/dg/a2i-textract.html)**