다음을 통해 공유


빠른 시작: 사용자 지정 범주(표준 모드)(미리 보기)

이 가이드에 따라 Azure AI 콘텐츠 보안 사용자 지정 범주(표준) REST API를 사용하여 사용 사례에 대한 자체 콘텐츠 범주를 만들고 Azure AI 콘텐츠 보안을 학습하여 새 텍스트 콘텐츠에서 이를 검색합니다.

사용자 지정 범주에 대한 자세한 내용은 사용자 지정 범주 개념 페이지를 참조하세요. API 입력 제한에 대해서는 개요의 입력 요구 사항 섹션을 참조하세요.

Important

이 기능은 특정 Azure 지역에서만 사용할 수 있습니다. 지역 가용성을 참조하세요.

Important

모델 학습에 충분한 시간 허용

사용자 지정 범주 학습의 전체 실행에는 약 5시간에서 10시간이 걸릴 수 있습니다. 이에 따라 조정 파이프라인을 계획합니다.

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고, 구독을 선택하고, 리소스 그룹과 지원되는 지역, 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 나중에 사용할 수 있도록 엔드포인트와 키 값 중 하나를 임시 위치에 복사합니다.
  • 또한 학습 주석 파일을 보관할 Azure Blob Storage 컨테이너를 만듭니다.
  • 다음 중 하나가 설치되었습니다.
    • REST API 호출을 위한 cURL.
    • Python 3.x가 설치되었습니다.

학습 데이터 준비

사용자 지정 범주를 학습하려면 검색하려는 범주를 나타내는 예 텍스트 데이터가 필요합니다. 이 가이드에서는 샘플 데이터를 사용할 수 있습니다. 제공된 주석 파일에는 캠핑/야생 상황에서의 생존 조언에 대한 텍스트 프롬프트가 포함되어 있습니다. 학습된 모델은 새로운 텍스트 데이터에서 이러한 형식의 콘텐츠를 검색하는 방법을 학습합니다.

고유의 데이터 세트를 만드는 방법에 대한 도움말은 방법 가이드를 참조하세요.

  1. GitHub 리포지토리에서 샘플 텍스트 데이터 파일을 다운로드합니다.
  2. Azure Storage 계정 Blob 컨테이너에 .jsonl 파일을 업로드합니다. 그런 다음 나중에 사용할 수 있도록 Blob URL을 임시 위치에 복사합니다.

Important

사용자의 스토리지 계정은 사용자 지정 범주에서 지원될 수 없는 계층 구조 네임스페이스 계정으로 설정됩니다. 대신 일반 스토리지 계정을 사용해 보세요. 예를 들어 Blob URL은 example/example1/과 같은 두 계층으로 분할할 수 없으며 계층이 하나만 있어야 합니다. 자세한 내용은 Azure Data Lake Storage 계층 구조 네임스페이스 - Azure Storage 설명서를 참조하세요.

스토리지 액세스 권한 부여

그 후에 Azure Storage 리소스에서 읽을 수 있는 콘텐츠 안전 리소스 액세스 권한을 부여해야 합니다. Azure AI Content Safety 인스턴스에 시스템 할당 관리 ID를 사용하도록 설정하고 스토리지 Blob 데이터 기여자/소유자역할을 ID에 할당합니다.

Important

Storage Blob 데이터 기여자 또는 스토리지 Blob 데이터 소유자만 유효한 역할을 진행합니다.

  1. Azure AI 콘텐츠 안전 인스턴스에 관리 ID를 사용하도록 설정합니다.

    Azure Portal에서 관리 ID 사용을 보여주는 스크린샷

  2. 관리 ID에 Storage Blob 데이터 기여자/소유자 역할을 할당합니다. 아래에 강조 표시된 모든 역할이 작동해야 합니다.

    Azure Portal의 역할 할당 추가 화면 스크린샷

    Azure Portal에 할당된 역할 스크린샷

    관리 ID 역할 스크린샷

사용자 지정 범주 만들기 및 학습

아래 명령에서 <your_api_key>, <your_endpoint> 및 기타 필수 매개 변수를 사용자 고유의 값으로 바꿉니다. 그런 다음 터미널 창에 각 명령을 입력하고 실행합니다.

새 범주 버전 만들기

curl -X PUT "<your_endpoint>/contentsafety/text/categories/<your_category_name>?api-version=2024-09-15-preview" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json" \
     -d "{
            \"categoryName\": \"survival-advice\",
            \"definition\": \"text prompts about survival advice in camping/wilderness situations\",
            \"sampleBlobUrl\": \"https://<your-azure-storage-url>/example-container/survival-advice.jsonl\"
        }"

범주 이름, 정의 또는 샘플을 변경할 때마다 새 버전이 만들어집니다. 버전 번호를 사용하여 이전 버전으로 다시 추적할 수 있습니다. 다음 단계 학습 사용자 지정 범주의 URL에 필요하므로 이 버전 번호를 기억하세요.

API 요청

필드 설명 값 예
categoryName 요청이 관련된 범주 또는 토픽의 이름입니다. 생존 조언
definition 범주의 콘텐츠 형식에 대한 간략한 설명입니다. 캠핑 / 광야 상황에서 생존 조언에 대한 텍스트 프롬프트
sampleBlobUrl 범주에 대한 데이터 예제를 포함하는 샘플 JSONL 파일에 액세스하기 위한 URL입니다. 링크

API 응답

필드 설명 값 예
categoryName 응답과 관련된 범주 또는 토픽의 이름입니다. 생존 조언
definition 범주의 콘텐츠 형식에 대한 간략한 설명입니다. 캠핑 / 광야 상황에서 생존 조언에 대한 텍스트 프롬프트
sampleBlobUrl 범주에 대한 데이터 예제를 포함하는 샘플 JSONL 파일에 액세스하기 위한 URL입니다. 링크
sampleBlobSnapshotUrl 데이터의 특정 버전에 대한 액세스를 제공하는 샘플 JSONL 파일의 스냅샷 URL입니다. 스냅샷 URL
version 범주 데이터의 버전 번호입니다. 1
createdTime 범주 데이터가 만들어진 타임스탬프입니다. 2024-10-28T22:06:59.4626988Z
status 범주 데이터 처리의 현재 상태입니다. 성공함

범주 빌드 프로세스 시작:

<your_api_key> 및 <your_endpoint> 고유한 값으로 바꾸고 마지막 단계에서 얻은 URL에 버전 번호도 추가합니다. 모델 학습에 충분한 시간 허용: 사용자 지정 범주 학습의 엔드 투 엔드 실행은 약 5시간에서 10시간 정도 걸릴 수 있습니다. 이에 따라 조정 파이프라인을 계획합니다. 응답을 받은 후 작업 ID(id라고 함)를 임시 위치에 저장합니다. 이 ID는 다음 섹션의 상태 가져오기 API를 사용하여 빌드 상태를 검색하는 데 필요합니다.

curl -X POST "<your_endpoint>/contentsafety/text/categories/survival-advice:build?api-version=2024-09-15-preview&version={version}" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json"

API 응답

필드 설명 값 예
operation id 빌드 상태를 검색하기 위한 고유 식별자 b6c69dc1-2338-484e-85a5b-xxxxxxxxxxxx
status 요청의 현재 상태 성공함

범주 빌드 상태를 가져오기:

상태를 검색하려면 이전 API 응답에서 가져오는 id를 활용하여 아래 API 경로에 배치합니다.

curl -X GET "<your_endpoint>/contentsafety/text/categories/operations/<id>?api-version=2024-09-15-preview" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json"

API 응답

필드 설명 값 예
operation id 빌드 상태를 검색하기 위한 고유 식별자 b6c69dc1-2338-484e-855b-xxxxxxxxxxxx
status 요청의 현재 상태 성공함

사용자 지정 범주로 텍스트 분석

다음 명령을 실행하여 사용자 지정된 범주로 텍스트를 분석합니다. <your_api_key><your_endpoint>를 사용자 고유의 값으로 바꿉니다.

curl -X POST "<your_endpoint>/contentsafety/text:analyzeCustomCategory?api-version=2024-09-15-preview" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json" \
     -d "{
            \"text\": \"<Example text to analyze>\",
            \"categoryName\": \"survival-advice\", 
            \"version\": 1
        }"

API 요청

필드 설명
text 범주 검색을 위한 텍스트 콘텐츠 또는 메시지
categoryName 텍스트가 검색되는 것을 목표로 하는 범주의 이름
version 범주의 버전 번호

API 응답

필드 설명 값 예
customCategoryAnalysis 범주에 대한 분석 결과를 포함하는 개체입니다.
detected 지정된 범주가 검색되었는지 여부를 나타냅니다. false

기타 사용자 지정 범주 작업

아래 자리 표시자를 API 키, 엔드포인트 및 특정 콘텐츠(범주 이름, 정의 등)에 대한 실제 값으로 바꿔야 합니다. 이 예는 계정에서 사용자 지정된 범주를 관리하는 데 도움이 됩니다.

사용자 지정 범주 또는 특정 버전을 가져오기

자리 표시자를 원하는 값으로 바꾸고 터미널 창에서 다음 명령을 실행합니다.

curl -X GET "<endpoint>/contentsafety/text/categories/<your_category_name>?api-version=2024-09-15-preview&version=1" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json"

최신 버전의 범주 나열

자리 표시자를 원하는 값으로 바꾸고 터미널 창에서 다음 명령을 실행합니다.

curl -X GET "<endpoint>/contentsafety/text/categories?api-version=2024-09-15-preview" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json"

사용자 지정된 범주 또는 특정 버전 삭제

자리 표시자를 원하는 값으로 바꾸고 터미널 창에서 다음 명령을 실행합니다.

curl -X DELETE "<endpoint>/contentsafety/text/categories/<your_category_name>?api-version=2024-09-15-preview&version=1" \
     -H "Ocp-Apim-Subscription-Key: <your_api_key>" \
     -H "Content-Type: application/json"