다음을 통해 공유


빠른 시작: 이미지 콘텐츠 분석

기본적인 이미지 조정을 수행하려면 콘텐츠 스튜디오, REST API 또는 클라이언트 SDK를 시작하세요. Azure AI 콘텐츠 보안 서비스는 불쾌한 콘텐츠를 신고하기 위한 AI 알고리즘을 제공합니다. 사용해 보려면 다음 단계를 따르세요.

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

참고 항목

샘플 데이터와 코드에는 불쾌한 내용이 포함될 수 있습니다. 사용자의 재량에 따라 결정하는 것이 좋습니다.

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.
  • cURL 설치

이미지 콘텐츠 분석

다음 섹션에서는 cURL을 사용한 샘플 이미지 조정 요청을 안내합니다.

샘플 이미지 준비

분석할 샘플 이미지를 선택한 뒤 이를 디바이스에 다운로드합니다.

이미지 제한 사항은 입력 요구 사항을 참조하세요. 애니메이션이 적용된 형식에서는 서비스가 분석할 첫 번째 프레임을 추출합니다.

로컬 파일 스트림 또는 Blob Storage URL의 두 가지 방법 중 하나로 이미지를 입력할 수 있습니다.

  • 로컬 파일 스트림(권장): 이미지를 base64로 인코딩합니다. codebeautify 등의 웹 사이트를 사용하여 인코딩을 수행할 수 있습니다. 그런 다음 인코딩된 문자열을 임시 위치에 저장합니다.

  • Blob Storage URL: Azure Blob Storage 계정에 이미지를 업로드합니다. Blob Storage 빠른 시작에 따라 이 작업을 수행하는 방법을 알아봅니다. 그런 다음 Azure Storage Explorer 열어 이미지로 연결되는 URL을 가져옵니다. 임시 위치에 저장합니다.

    그 후에 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 역할 스크린샷

이미지 콘텐츠 분석

아래 명령을 텍스트 편집기에 붙여넣고 다음을 변경합니다.

  1. <endpoint>를 리소스 엔드포인트 URL로 바꿉니다.
  2. <your_subscription_key>를 원하는 키로 바꿉니다.
  3. 본문의 "image" 필드를 "content" 필드나 "blobUrl" 필드로 채웁니다. 예를 들어 {"image": {"content": "<base_64_string>"} 또는 {"image": {"blobUrl": "<your_storage_url>"}입니다.
curl --location --request POST '<endpoint>/contentsafety/image:analyze?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "image": {
    "content": "<base_64_string>"
  },
  "categories": ["Hate", "SelfHarm", "Sexual", "Violence"],
  "outputType": "FourSeverityLevels"
}'

참고 항목

Blob Storage URL을 사용하는 경우 요청 본문은 다음과 같습니다.

{
  "image": {
    "blobUrl": "<your_storage_url>"
  }
}

아래 필드가 URL에 포함되어야 합니다.

이름 필수 여부 설명 Type
API 버전 Required 확인할 API 버전입니다. 현재 버전은 api-version=2024-09-01입니다. 예: <endpoint>/contentsafety/image:analyze?api-version=2024-09-01 문자열

요청 본문의 매개 변수는 다음 표에 정의되어 있습니다.

이름 필수 여부 설명 Type
content Required 이미지의 콘텐츠 또는 BLOB URL입니다. base64로 인코딩된 바이트 또는 BLOB URL일 수 있습니다. 둘 다 제공되면 요청이 거부됩니다. 허용되는 최대 이미지 크기는 7,200 x 7,200픽셀이고, 최대 파일 크기는 4MB입니다. 이미지의 최소 크기는 50픽셀 x 50픽셀입니다. 문자열
범주 선택 사항 이는 범주 이름의 배열로 간주됩니다. 사용 가능한 범주 이름 목록은 위험 범주 가이드를 참조하세요. 범주를 지정하지 않으면 네 가지 범주가 모두 사용됩니다. 단일 요청으로 점수를 얻기 위해 여러 범주를 사용합니다. 문자열
outputType 선택 사항 이미지 조정 API는 "FourSeverityLevels"만 지원합니다. 심각도를 4가지 수준으로 출력합니다. 값은 0,2,4,6이 될 수 있음 문자열

명령 프롬프트 창을 열고 cURL 명령을 실행합니다.

출력

콘솔에 이미지 조정 결과가 JSON 데이터로 표시됩니다. 예시:

{
  "categoriesAnalysis": [
    {
      "category": "Hate",
      "severity": 2
    },
    {
      "category": "SelfHarm",
      "severity": 0
    },
    {
      "category": "Sexual",
      "severity": 0
    },
    {
      "category": "Violence",
      "severity": 0
    }
  ]
}

출력의 JSON 필드는 다음과 같이 정의됩니다.

이름 Description Type
categoriesAnalysis API가 예측하는 각 출력 클래스입니다. 분류에는 다중 레이블이 지정될 수 있습니다. 예를 들어, 이미지 조정 모델에 이미지가 업로드되면 성적인 콘텐츠와 폭력으로 분류될 수 있습니다. 유해 범주 문자열
심각도 각 피해 범주에 대한 플래그의 심각도 수준입니다. 유해 범주 정수

참조 설명서 | 라이브러리 소스 코드 | 패키지(NuGet) | 샘플

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • 워크로드 .NET 데스크톱 개발이 활성화된 Visual Studio IDE입니다. 또는 Visual Studio IDE를 사용할 계획이 없다면 현재 버전의 .NET Core가 필요합니다.
  • .NET 런타임이 설치되었습니다.
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.

애플리케이션 설정

새 C# 애플리케이션을 만듭니다.

Visual Studio를 열고 시작하기에서 새 프로젝트 만들기를 선택합니다. 템플릿 필터를 C#/모든 플랫폼/콘솔로 설정합니다. 콘솔 앱(Windows, Linux 및 macOS의 .NET에서 실행할 수 있는 명령줄 애플리케이션)을 선택하고 다음을 선택합니다. 프로젝트 이름을 ContentSafetyQuickstart로 업데이트하고 Next를 선택합니다. .NET 6.0 이상을 선택하고 만들기를 선택하여 프로젝트를 만듭니다.

클라이언트 SDK 설치

새 프로젝트를 생성한 후 솔루션 탐색기에서 프로젝트 솔루션을 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택하여 클라이언트 SDK를 설치합니다. 열리는 패키지 관리자에서 찾아보기를 선택하고 Azure.AI.ContentSafety를 검색합니다. 설치를 선택합니다.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 작성합니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • CONTENT_SAFETY_KEY 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_KEY를 리소스에 대한 키 중 하나로 바꿉니다.
  • CONTENT_SAFETY_ENDPOINT 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_ENDPOINT를 리소스에 대한 엔드포인트로 바꿉니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

환경 변수가 추가되면 콘솔 창을 포함하여 환경 변수를 읽는 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

이미지 콘텐츠 분석

프로젝트 디렉터리에서 이전에 생성된 Program.cs 파일을 엽니다. 다음 코드를 붙여넣습니다.

using System;
using Azure.AI.ContentSafety;

namespace Azure.AI.ContentSafety.Dotnet.Sample
{
  class ContentSafetySampleAnalyzeImage
  {
    public static void AnalyzeImage()
    {
      // retrieve the endpoint and key from the environment variables created earlier
      string endpoint = Environment.GetEnvironmentVariable("CONTENT_SAFETY_ENDPOINT");
      string key = Environment.GetEnvironmentVariable("CONTENT_SAFETY_KEY");

      ContentSafetyClient client = new ContentSafetyClient(new Uri(endpoint), new AzureKeyCredential(key));

      // Example: analyze image

      string imagePath = @"sample_data\image.png";
      ContentSafetyImageData image = new ContentSafetyImageData(BinaryData.FromBytes(File.ReadAllBytes(imagePath)));

      var request = new AnalyzeImageOptions(image);

      Response<AnalyzeImageResult> response;
      try
      {
          response = client.AnalyzeImage(request);
      }
      catch (RequestFailedException ex)
      {
          Console.WriteLine("Analyze image failed.\nStatus code: {0}, Error code: {1}, Error message: {2}", ex.Status, ex.ErrorCode, ex.Message);
          throw;
      }

      Console.WriteLine("Hate severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Hate)?.Severity ?? 0);
      Console.WriteLine("SelfHarm severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.SelfHarm)?.Severity ?? 0);
      Console.WriteLine("Sexual severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Sexual)?.Severity ?? 0);
      Console.WriteLine("Violence severity: {0}", response.Value.CategoriesAnalysis.FirstOrDefault(a => a.Category == ImageCategory.Violence)?.Severity ?? 0);
    }
    static void Main()
    {
      AnalyzeImage();
    }
  }
}

프로젝트 디렉터리에 sample_data 폴더를 만들고 image.png 파일을 추가합니다.

IDE 창 상단에 있는 디버그 메뉴에서 디버깅 시작을 선택하거나 F5 키를 눌러 애플리케이션을 빌드하고 실행합니다.

참조 설명서 | 라이브러리 소스 코드 | 패키지(PyPI) | 샘플 |

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.
  • Python 3.8 이상
    • Python 설치에 pip가 포함되어야 합니다. 명령줄에서 pip --version을 실행하여 pip가 설치되어 있는지 확인할 수 있습니다. 최신 버전의 Python을 설치하여 pip를 받으세요.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 작성합니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • CONTENT_SAFETY_KEY 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_KEY를 리소스에 대한 키 중 하나로 바꿉니다.
  • CONTENT_SAFETY_ENDPOINT 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_ENDPOINT를 리소스에 대한 엔드포인트로 바꿉니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

환경 변수가 추가되면 콘솔 창을 포함하여 환경 변수를 읽는 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

이미지 콘텐츠 분석

다음 섹션에서는 Python SDK를 사용한 샘플 요청을 안내합니다.

  1. 명령 프롬프트를 열고 프로젝트 폴더로 이동한 후 quickstart.py라는 새 파일을 만듭니다.

  2. 다음 명령을 실행하여 Azure AI 콘텐츠 안전 클라이언트 라이브러리를 설치합니다.

    python -m pip install azure-ai-contentsafety
    
  3. 다음 코드를 quickstart.py에 복사합니다.

    import os
    
    from azure.ai.contentsafety import ContentSafetyClient
    from azure.ai.contentsafety.models import AnalyzeImageOptions, ImageData, ImageCategory
    from azure.core.credentials import AzureKeyCredential
    from azure.core.exceptions import HttpResponseError
    
    def analyze_image():
        endpoint = os.environ.get('CONTENT_SAFETY_ENDPOINT')
        key = os.environ.get('CONTENT_SAFETY_KEY')
        image_path = os.path.join("sample_data", "image.jpg")
    
        # Create an Azure AI Content Safety client
        client = ContentSafetyClient(endpoint, AzureKeyCredential(key))
    
    
        # Build request
        with open(image_path, "rb") as file:
            request = AnalyzeImageOptions(image=ImageData(content=file.read()))
    
        # Analyze image
        try:
            response = client.analyze_image(request)
        except HttpResponseError as e:
            print("Analyze image failed.")
            if e.error:
                print(f"Error code: {e.error.code}")
                print(f"Error message: {e.error.message}")
                raise
            print(e)
            raise
    
        hate_result = next(item for item in response.categories_analysis if item.category == ImageCategory.HATE)
        self_harm_result = next(item for item in response.categories_analysis if item.category == ImageCategory.SELF_HARM)
        sexual_result = next(item for item in response.categories_analysis if item.category == ImageCategory.SEXUAL)
        violence_result = next(item for item in response.categories_analysis if item.category == ImageCategory.VIOLENCE)
    
        if hate_result:
            print(f"Hate severity: {hate_result.severity}")
        if self_harm_result:
            print(f"SelfHarm severity: {self_harm_result.severity}")
        if sexual_result:
            print(f"Sexual severity: {sexual_result.severity}")
        if violence_result:
            print(f"Violence severity: {violence_result.severity}")
    
    if __name__ == "__main__":
        analyze_image()
    
  4. "sample_data""image.jpg"를 사용하려는 로컬 경로와 파일 이름으로 바꿉니다.

  5. 그런 다음 quickstart 파일의 python 명령을 사용하여 애플리케이션을 실행합니다.

    python quickstart.py
    

참조 설명서 | 라이브러리 소스 코드 | 아티팩트(Maven) | 샘플

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • JDK(Java Development Kit)의 현재 버전
  • Gradle 빌드 도구 또는 다른 종속성 관리자
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.

애플리케이션 설정

새 Gradle 프로젝트를 만듭니다.

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

작업 디렉터리에서 gradle init 명령을 실행합니다. 이 명령은 build.gradle.kts를 포함하여 런타임에 애플리케이션을 만들고 구성하는 데 사용되는 Gradle용 필수 빌드 파일을 만듭니다.

gradle init --type basic

DSL을 선택하라는 메시지가 표시되면 Kotlin을 선택합니다.

작업 디렉터리에서 다음 명령을 실행하여 프로젝트 원본 폴더를 만듭니다.

mkdir -p src/main/java

새 폴더로 이동하여 ContentSafetyQuickstart.java라는 파일을 만듭니다.

또한 프로젝트의 루트에 src/resources 폴더를 만들고 샘플 이미지를 추가합니다.

클라이언트 SDK 설치

이 빠른 시작에서는 Gradle 종속성 관리자를 사용합니다. 다른 종속성 관리자에 대한 클라이언트 라이브러리 및 정보는 Maven 중앙 리포지토리에서 찾을 수 있습니다.

build.gradle.kts를 찾고, 원하는 IDE 또는 텍스트 편집기에서 엽니다. 그런 다음, 다음 빌드 구성을 복사합니다. 이 구성은 진입점이 ContentSafetyQuickstart 클래스인 Java 애플리케이션으로 프로젝트를 정의합니다. Azure AI Vision 라이브러리를 가져옵니다.

plugins {
    java
    application
}
application { 
    mainClass.set("ContentSafetyQuickstart")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-contentsafety", version = "1.0.0")
}

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 작성합니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • CONTENT_SAFETY_KEY 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_KEY를 리소스에 대한 키 중 하나로 바꿉니다.
  • CONTENT_SAFETY_ENDPOINT 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_ENDPOINT를 리소스에 대한 엔드포인트로 바꿉니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

환경 변수가 추가되면 콘솔 창을 포함하여 환경 변수를 읽는 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

이미지 콘텐츠 분석

선호하는 편집기 또는 IDE에서 ContentSafetyQuickstart.java 파일을 열고 다음 코드를 붙여넣습니다. source 변수를 샘플 이미지의 경로로 바꿉니다.

import com.azure.ai.contentsafety.ContentSafetyClient;
import com.azure.ai.contentsafety.ContentSafetyClientBuilder;
import com.azure.ai.contentsafety.models.AnalyzeImageOptions;
import com.azure.ai.contentsafety.models.AnalyzeImageResult;
import com.azure.ai.contentsafety.models.ContentSafetyImageData;
import com.azure.ai.contentsafety.models.ImageCategoriesAnalysis;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.core.util.Configuration;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;


public class ContentSafetyQuickstart {
    public static void main(String[] args) throws IOException {

        // get endpoint and key from environment variables
        String endpoint = System.getenv("CONTENT_SAFETY_ENDPOINT");
        String key = System.getenv("CONTENT_SAFETY_KEY");

        ContentSafetyClient contentSafetyClient = new ContentSafetyClientBuilder()
            .credential(new KeyCredential(key))
            .endpoint(endpoint).buildClient();

        ContentSafetyImageData image = new ContentSafetyImageData();
        String cwd = System.getProperty("user.dir");
        String source = "/src/samples/resources/image.png";

        image.setContent(BinaryData.fromBytes(Files.readAllBytes(Paths.get(cwd, source))));

        AnalyzeImageResult response =
                contentSafetyClient.analyzeImage(new AnalyzeImageOptions(image));

        for (ImageCategoriesAnalysis result : response.getCategoriesAnalysis()) {
            System.out.println(result.getCategory() + " severity: " + result.getSeverity());
        }
    }
}

프로젝트 루트 폴더로 돌아가서 다음을 사용하여 앱을 빌드합니다.

gradle build

그런 다음, gradle run 명령을 사용하여 실행합니다.

gradle run

출력

Hate severity: 0
SelfHarm severity: 0
Sexual severity: 0
Violence severity: 0

참조 설명서 | 라이브러리 소스 코드 | 패키지(npm) | 샘플 |

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • 현재 버전의 Node.js
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.

애플리케이션 설정

새 Node.js 애플리케이션 만들기 콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

package.json 파일을 사용하여 노드 애플리케이션을 만들려면 npm init 명령을 실행합니다.

npm init

또한 프로젝트의 루트에 /resources 폴더를 만들고 샘플 이미지를 추가합니다.

클라이언트 SDK 설치

@azure-rest/ai-content-safety npm 패키지를 설치합니다.

npm install @azure-rest/ai-content-safety

또한 환경 변수를 사용하도록 dotenv 모듈을 설치합니다.

npm install dotenv

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 작성합니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • CONTENT_SAFETY_KEY 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_KEY를 리소스에 대한 키 중 하나로 바꿉니다.
  • CONTENT_SAFETY_ENDPOINT 환경 변수를 설정하려면 YOUR_CONTENT_SAFETY_ENDPOINT를 리소스에 대한 엔드포인트로 바꿉니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

환경 변수가 추가되면 콘솔 창을 포함하여 환경 변수를 읽는 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

이미지 콘텐츠 분석

디렉터리에 새 파일, index.js를 만듭니다. 선호하는 편집기 또는 IDE에서 이 파일을 열고 다음 코드를 붙여넣습니다. image_path 변수를 샘플 이미지의 경로로 바꿉니다.

const ContentSafetyClient = require("@azure-rest/ai-content-safety").default,
  { isUnexpected } = require("@azure-rest/ai-content-safety");
const { AzureKeyCredential } = require("@azure/core-auth");
const fs = require("fs");
const path = require("path");

// Load the .env file if it exists
require("dotenv").config();

async function main() {
    // get endpoint and key from environment variables
    const endpoint = process.env["CONTENT_SAFETY_ENDPOINT"];
    const key = process.env["CONTENT_SAFETY_KEY"];
    
    const credential = new AzureKeyCredential(key);
    const client = ContentSafetyClient(endpoint, credential);
    
    // replace with your own sample image file path 
    const image_path = path.resolve(__dirname, "./resources/image.jpg");
    
    const imageBuffer = fs.readFileSync(image_path);
    const base64Image = imageBuffer.toString("base64");
    const analyzeImageOption = { image: { content: base64Image } };
    const analyzeImageParameters = { body: analyzeImageOption };
    
    const result = await client.path("/image:analyze").post(analyzeImageParameters);
    
    if (isUnexpected(result)) {
        throw result;
    }
    for (let i = 0; i < result.body.categoriesAnalysis.length; i++) {
    const imageCategoriesAnalysisOutput = result.body.categoriesAnalysis[i];
    console.log(
      imageCategoriesAnalysisOutput.category,
      " severity: ",
      imageCategoriesAnalysisOutput.severity
    );
  }
}

main().catch((err) => {
    console.error("The sample encountered an error:", err);
});

quickstart 파일의 node 명령을 사용하여 애플리케이션을 실행합니다.

node index.js

출력

Hate severity:  0
SelfHarm severity:  0
Sexual severity:  0
Violence severity:  0

리소스 정리

Azure AI 서비스 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.