Szybki start: analizowanie zawartości obrazu

Rozpocznij pracę z zestawami SDK usługi Content Studio, interfejsu API REST lub klienta, aby wykonać podstawowe moderowanie obrazów. Usługa Azure AI Content Sejf ty udostępnia algorytmy sztucznej inteligencji służące do flagowania niepożądanej zawartości. Wykonaj następujące kroki, aby wypróbować ten problem.

Uwaga

Przykładowe dane i kod mogą zawierać obraźliwą zawartość. Zaleca się, aby użytkownik był dyskrecjonalne.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Content Sejf ty w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (Wschodnie stany USA lub Europa Zachodnia) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.
  • Zainstalowano bibliotekę cURL

Analizowanie zawartości obrazów

W poniższej sekcji przedstawiono przykładowe żądanie moderowania obrazów za pomocą biblioteki cURL.

Przygotowywanie przykładowego obrazu

Wybierz przykładowy obraz do przeanalizowania i pobierz go na urządzenie.

Obsługujemy formaty obrazów JPEG, PNG, GIF, BMP, TIFF lub WEBP. Maksymalny rozmiar przesyłania obrazów wynosi 4 MB, a wymiary obrazu muszą zawierać się między 50 x 50 pikseli a 2048 x 2048 pikseli. Jeśli format jest animowany, wyodrębnimy pierwszą ramkę, aby przeprowadzić wykrywanie.

Obraz można wprowadzić za pomocą jednej z dwóch metod: lokalnego strumienia plików lub adresu URL magazynu obiektów blob.

  • Lokalny strumień plików (zalecane): zakoduj obraz do base64. Możesz użyć witryny internetowej, takiej jak codebeautify , aby wykonać kodowanie. Następnie zapisz zakodowany ciąg w lokalizacji tymczasowej.

  • Adres URL usługi Blob Storage: przekaż obraz do konta usługi Azure Blob Storage. Postępuj zgodnie z przewodnikiem Szybki start dla usługi Blob Storage, aby dowiedzieć się, jak to zrobić. Następnie otwórz Eksplorator usługi Azure Storage i pobierz adres URL do obrazu. Zapisz go w lokalizacji tymczasowej.

    Następnie musisz przyznać dostęp do zasobu Content Sejf ty w celu odczytu z zasobu usługi Azure Storage. Włącz tożsamość zarządzaną przypisaną przez system dla wystąpienia zawartości usługi Azure AI Sejf ty i przypisz rolę Współautor/Właściciel/Czytelnik danych obiektu blob usługi Storage do tożsamości:

    1. Włącz tożsamość zarządzaną dla wystąpienia zawartości usługi Azure AI Sejf ty.

      Zrzut ekranu przedstawiający włączanie tożsamości zarządzanej w witrynie Azure Portal.

    2. Przypisz rolę Współautor/Właściciel/Czytelnik danych obiektu blob usługi Storage do tożsamości zarządzanej. Wszystkie role wyróżnione poniżej powinny działać.

      Zrzut ekranu przedstawiający ekran Dodawanie przypisania roli w witrynie Azure Portal.

      Zrzut ekranu przedstawiający przypisane role w witrynie Azure Portal.

      Zrzut ekranu przedstawiający rolę tożsamości zarządzanej.

Analizowanie zawartości obrazów

Wklej poniższe polecenie do edytora tekstów i wprowadź następujące zmiany.

  1. Zastąp element <endpoint> adresem URL punktu końcowego zasobu.
  2. Zastąp element <your_subscription_key> swoim kluczem.
  3. "image" Wypełnij pole w treści polem "content" lub polem"blobUrl". Na przykład: {"image": {"content": "<base_64_string>"} lub {"image": {"blobUrl": "<your_storage_url>"}.
curl --location --request POST '<endpoint>/contentsafety/image:analyze?api-version=2023-10-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"
}'

Uwaga

Jeśli używasz adresu URL magazynu obiektów blob, treść żądania będzie wyglądać następująco:

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

Otwórz okno wiersza polecenia i uruchom polecenie cURL.

Poniższe pola muszą być uwzględnione w adresie URL:

Nazwisko Wymagany? opis Type
Wersja interfejsu API Wymagania Jest to wersja interfejsu API do sprawdzenia. Bieżąca wersja to: api-version=2023-10-01. Przykład: <endpoint>/contentsafety/image:analyze?api-version=2023-10-01 String

Parametry w treści żądania są zdefiniowane w tej tabeli:

Nazwisko Wymagany? opis Type
Zawartości Wymagania Adres URL zawartości lub obiektu blob obrazu. Można użyć bajtów zakodowanych w formacie base64 lub adresu URL obiektu blob. Jeśli obie te elementy zostaną podane, żądanie zostanie odrzucone. Maksymalny dozwolony rozmiar obrazu to 2048 pikseli x 2048 pikseli, a maksymalny rozmiar pliku to 4 MB. Minimalny rozmiar obrazu to 50 pikseli x 50 pikseli. String
Kategorie Opcjonalnie Przyjmuje się, że jest to tablica nazw kategorii. Aby uzyskać listę dostępnych nazw kategorii, zobacz przewodnik Dotyczący kategorii szkody. Jeśli nie określono żadnych kategorii, zostaną użyte wszystkie cztery kategorie. Używamy wielu kategorii do uzyskiwania wyników w jednym żądaniu. String
Outputtype Opcjonalnie Interfejs API moderowania obrazów obsługuje tylko funkcję "FourSeverityLevels". Ważność danych wyjściowych na czterech poziomach. Wartość może być 0,2,4,6 String

Wyjście

Wyniki moderowania obrazów powinny być wyświetlane jako dane JSON w konsoli programu . Na przykład:

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

Pola JSON w danych wyjściowych są zdefiniowane tutaj:

Nazwa/nazwisko opis Type
categoriesAnalysis Każda klasa wyjściowa przewidywana przez interfejs API. Klasyfikacja może być oznaczona wieloma etykietami. Na przykład po przekazaniu obrazu do modelu moderowania obrazu można go sklasyfikować jako zawartość seksualną i przemoc. Kategorie szkód String
Ważność Poziom ważności flagi w każdej kategorii szkody. Kategorie szkód Integer

Dokumentacja referencyjna — pakiet | kodu | źródłowego biblioteki źródłowej (NuGet)Samples |

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Środowisko IDE programu Visual Studio z włączonym tworzeniem aplikacji klasycznych na platformie .NET obciążenia. Jeśli nie planujesz używania środowiska IDE programu Visual Studio, potrzebujesz bieżącej wersji platformy .NET Core.
  • Zainstalowane środowisko uruchomieniowe .NET.
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Content Sejf ty w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (Wschodnie stany USA lub Europa Zachodnia) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.

Konfigurowanie aplikacji

Utwórz nową aplikację w języku C#.

Otwórz program Visual Studio i w obszarze Rozpocznij wybierz pozycję Utwórz nowy projekt. Ustaw filtry szablonu na C#/Wszystkie platformy/konsolę. Wybierz pozycję Aplikacja konsolowa (aplikacja wiersza polecenia, która może działać na platformie .NET w systemach Windows, Linux i macOS), a następnie wybierz pozycję Dalej. Zaktualizuj nazwę projektu na Zawartość Sejf tyQuickstart i wybierz pozycję Dalej. Wybierz pozycję .NET 6.0 lub nowszą, a następnie wybierz pozycję Utwórz , aby utworzyć projekt.

Instalowanie zestawu SDK klienta

Po utworzeniu nowego projektu zainstaluj zestaw SDK klienta, klikając prawym przyciskiem myszy rozwiązanie projektu w Eksplorator rozwiązań i wybierając polecenie Zarządzaj pakietami NuGet. W menedżerze pakietów, który zostanie otwarty, wybierz pozycję Przeglądaj i wyszukaj ciąg Azure.AI.ContentSafety. Wybierz Zainstaluj.

Tworzenie zmiennych środowiskowych

W tym przykładzie napiszesz poświadczenia do zmiennych środowiskowych na komputerze lokalnym z uruchomioną aplikacją.

Napiwek

Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak usługa Azure Key Vault, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Aby ustawić zmienną środowiskową dla klucza i punktu końcowego, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  1. Aby ustawić zmienną CONTENT_SAFETY_KEY środowiskową, zastąp YOUR_CONTENT_SAFETY_KEY element jednym z kluczy zasobu.
  2. Aby ustawić zmienną CONTENT_SAFETY_ENDPOINT środowiskową, zastąp YOUR_CONTENT_SAFETY_ENDPOINT element punktem końcowym zasobu.
setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą odczytywać zmienne środowiskowe, w tym okno konsoli.

Analizowanie zawartości obrazów

W katalogu projektu otwórz utworzony wcześniej plik Program.cs . Wklej następujący kod.

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();
    }
  }
}

Utwórz folder sample_data w katalogu projektu i dodaj do niego plik image.png.

Skompiluj i uruchom aplikację, wybierając pozycję Rozpocznij debugowanie w menu Debuguj w górnej części okna ŚRODOWISKA IDE (lub naciśnij klawisz F5).

Dokumentacja referencyjna — przykłady | pakietu kodu | źródłowego biblioteki źródłowej (PyPI) | |

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Content Sejf ty w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (Wschodnie stany USA lub Europa Zachodnia) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.
  • Środowisko Python w wersji 3.8 lub nowszej
    • Instalacja języka Python powinna zawierać narzędzie pip. Możesz sprawdzić, czy masz zainstalowane narzędzie pip, uruchamiając polecenie pip --version w wierszu polecenia. Pobierz narzędzie pip, instalując najnowszą wersję języka Python.

Tworzenie zmiennych środowiskowych

W tym przykładzie napiszesz poświadczenia do zmiennych środowiskowych na komputerze lokalnym z uruchomioną aplikacją.

Napiwek

Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak usługa Azure Key Vault, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Aby ustawić zmienną środowiskową dla klucza i punktu końcowego, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  1. Aby ustawić zmienną CONTENT_SAFETY_KEY środowiskową, zastąp YOUR_CONTENT_SAFETY_KEY element jednym z kluczy zasobu.
  2. Aby ustawić zmienną CONTENT_SAFETY_ENDPOINT środowiskową, zastąp YOUR_CONTENT_SAFETY_ENDPOINT element punktem końcowym zasobu.
setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą odczytywać zmienne środowiskowe, w tym okno konsoli.

Analizowanie zawartości obrazów

W poniższej sekcji przedstawiono przykładowe żądanie z zestawem SDK języka Python.

  1. Otwórz wiersz polecenia, przejdź do folderu projektu i utwórz nowy plik o nazwie quickstart.py.

  2. Uruchom to polecenie, aby zainstalować bibliotekę klienta azure AI Content Sejf ty:

    python -m pip install azure-ai-contentsafety
    
  3. Skopiuj następujący kod do 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. Zastąp "sample_data" ciąg i "image.jpg" ścieżką i nazwą pliku lokalnego, którego chcesz użyć.

  5. Następnie uruchom aplikację za python pomocą polecenia w pliku Szybki start.

    python quickstart.py
    

Dokumentacja referencyjna | — artefakt kodu | źródłowego biblioteki (Maven)Przykłady |

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Bieżąca wersja zestawu Java Development Kit (JDK)
  • Narzędzie kompilacji narzędzia Gradle lub inny menedżer zależności.
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Content Sejf ty w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (Wschodnie stany USA lub Europa Zachodnia) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.

Konfigurowanie aplikacji

Utwórz nowy projekt Gradle.

W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.

mkdir myapp && cd myapp

gradle init Uruchom polecenie z katalogu roboczego. To polecenie spowoduje utworzenie podstawowych plików kompilacji dla narzędzia Gradle, w tym pliku build.gradle.kts, który jest używany w czasie wykonywania do tworzenia i konfigurowania aplikacji.

gradle init --type basic

Po wyświetleniu monitu wybierz pozycję Język DSL, a następnie Kotlin.

W katalogu roboczym uruchom następujące polecenie, aby utworzyć folder źródłowy projektu:

mkdir -p src/main/java

Przejdź do nowego folderu i utwórz plik o nazwie Content Sejf tyQuickstart.java.

src/resources Utwórz również folder w katalogu głównym projektu i dodaj do niego przykładowy obraz.

Instalowanie zestawu SDK klienta

W tym przewodniku Szybki start jest używany menedżer zależności narzędzia Gradle. Bibliotekę klienta i informacje dotyczące innych menedżerów zależności można znaleźć w repozytorium centralnym programu Maven.

Znajdź plik build.gradle.kts i otwórz go przy użyciu preferowanego środowiska IDE lub edytora tekstów. Następnie skopiuj poniższą konfigurację kompilacji. Ta konfiguracja definiuje projekt jako aplikację Java, której punktem wejścia jest klasa Content Sejf tyQuickstart. Importuje bibliotekę usługi 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")
}

Tworzenie zmiennych środowiskowych

W tym przykładzie napiszesz poświadczenia do zmiennych środowiskowych na komputerze lokalnym z uruchomioną aplikacją.

Napiwek

Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak usługa Azure Key Vault, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Aby ustawić zmienną środowiskową dla klucza i punktu końcowego, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  1. Aby ustawić zmienną CONTENT_SAFETY_KEY środowiskową, zastąp YOUR_CONTENT_SAFETY_KEY element jednym z kluczy zasobu.
  2. Aby ustawić zmienną CONTENT_SAFETY_ENDPOINT środowiskową, zastąp YOUR_CONTENT_SAFETY_ENDPOINT element punktem końcowym zasobu.
setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą odczytywać zmienne środowiskowe, w tym okno konsoli.

Analizowanie zawartości obrazów

Otwórz zawartość Sejf tyQuickstart.java w preferowanym edytorze lub środowisku IDE i wklej następujący kod. Zastąp zmienną source ścieżką do przykładowego obrazu.

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());
        }
    }
}

Wróć do folderu głównego projektu i skompiluj aplikację za pomocą polecenia:

gradle build

Następnie uruchom go za pomocą gradle run polecenia :

gradle run

Wyjście

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

Dokumentacja referencyjna — przykłady | pakietu kodu | źródłowego biblioteki źródłowej (npm)Samples | |

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Bieżąca wersja Node.js
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Content Sejf ty w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (Wschodnie stany USA lub Europa Zachodnia) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.

Konfigurowanie aplikacji

Tworzenie nowej aplikacji Node.js. W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.

mkdir myapp && cd myapp

Uruchom polecenie npm init, aby utworzyć aplikację Node przy użyciu pliku package.json.

npm init

/resources Utwórz również folder w katalogu głównym projektu i dodaj do niego przykładowy obraz.

Instalowanie zestawu SDK klienta

@azure-rest/ai-content-safety Zainstaluj pakiet npm:

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

Zainstaluj również moduł, dotenv aby używać zmiennych środowiskowych:

npm install dotenv

Plik package.json aplikacji zostanie zaktualizowany przy użyciu zależności.

Tworzenie zmiennych środowiskowych

W tym przykładzie napiszesz poświadczenia do zmiennych środowiskowych na komputerze lokalnym z uruchomioną aplikacją.

Napiwek

Nie dołączaj klucza bezpośrednio do kodu i nigdy nie publikuj go publicznie. Aby uzyskać więcej opcji uwierzytelniania, takich jak usługa Azure Key Vault, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Aby ustawić zmienną środowiskową dla klucza i punktu końcowego, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  1. Aby ustawić zmienną CONTENT_SAFETY_KEY środowiskową, zastąp YOUR_CONTENT_SAFETY_KEY element jednym z kluczy zasobu.
  2. Aby ustawić zmienną CONTENT_SAFETY_ENDPOINT środowiskową, zastąp YOUR_CONTENT_SAFETY_ENDPOINT element punktem końcowym zasobu.
setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich uruchomionych programów, które będą odczytywać zmienne środowiskowe, w tym okno konsoli.

Analizowanie zawartości obrazów

Utwórz nowy plik w katalogu index.js. Otwórz go w preferowanym edytorze lub środowisku IDE i wklej następujący kod. Zastąp zmienną image_path ścieżką do przykładowego obrazu.

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);
});

Uruchom aplikację, wykonując polecenie node dla pliku szybkiego startu.

node index.js

Wyjście

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

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.

Następne kroki

Skonfiguruj filtry dla każdej kategorii i przetestuj zestawy danych przy użyciu usługi Content Sejf ty Studio, wyeksportuj kod i wdróż.