Szybki start: korzystanie z biblioteki klienta usługi Content Moderator

Ważne

Usługa Azure Content Moderator jest przestarzała w lutym 2024 r. i zostanie wycofana do lutego 2027 r. Jest on zastępowany przez usługę Azure AI Content Sejf ty, która oferuje zaawansowane funkcje sztucznej inteligencji i zwiększoną wydajność.

Usługa Azure AI Content Sejf ty to kompleksowe rozwiązanie przeznaczone do wykrywania szkodliwej zawartości generowanej przez użytkownika i generowanej przez sztuczną inteligencję w aplikacjach i usługach. Usługa Azure AI Content Sejf ty jest odpowiednia dla wielu scenariuszy, takich jak platformy internetowe, firmy zajmujące się grami, platformy do obsługi wiadomości społecznościowych, firmy medialne dla przedsiębiorstw i dostawcy rozwiązań edukacyjnych K-12. Poniżej przedstawiono omówienie jej funkcji i możliwości:

  • Interfejsy API wykrywania tekstu i obrazu: skanuje tekst i obrazy pod kątem zawartości seksualnej, przemocy, nienawiści i samookaleczenia przy użyciu wielu poziomów ważności.
  • Content Sejf ty Studio: narzędzie online przeznaczone do obsługi potencjalnie obraźliwych, ryzykownych lub niepożądanych treści przy użyciu naszych najnowszych modeli uczenia maszynowego con tryb namiotu ration. Udostępnia szablony i dostosowane przepływy pracy, które umożliwiają użytkownikom tworzenie własnych systemów con tryb namiotu ration.
  • Obsługa języka: usługa Azure AI Content Sejf ty obsługuje ponad 100 języków i jest specjalnie przeszkolona w języku angielskim, niemieckim, japońskim, hiszpańskim, francuskim, włoskim, portugalskim i chińskim.

Usługa Azure AI Content Sejf ty zapewnia niezawodne i elastyczne rozwiązanie dla potrzeb kon tryb namiotu ration. Przechodząc z usługi Content Moderator do usługi Azure AI Content Sejf ty, możesz skorzystać z najnowszych narzędzi i technologii, aby upewnić się, że zawartość jest zawsze moderowana zgodnie z dokładnymi specyfikacjami.

Dowiedz się więcej o usłudze Azure AI Content Sejf ty i dowiedz się, jak można podnieść poziom strategii kon tryb namiotu ration.

Rozpocznij pracę z biblioteką klienta usługi Azure Content Moderator dla platformy .NET. Wykonaj następujące kroki, aby zainstalować pakiet NuGet i wypróbować przykładowy kod dla podstawowych zadań.

Content Moderator to usługa sztucznej inteligencji, która umożliwia obsługę zawartości potencjalnie obraźliwej, ryzykownej lub w inny sposób niepożądanej. Użyj usługi con tryb namiotu ration opartej na sztucznej inteligencji, aby automatycznie skanować tekst, obraz i filmy wideo oraz stosować flagi zawartości. Twórz oprogramowanie do filtrowania zawartości w aplikacji w celu zachowania zgodności z przepisami lub utrzymania zamierzonego środowiska dla użytkowników.

Użyj biblioteki klienta Content Moderator dla platformy .NET, aby:

  • Tekst umiarkowany
  • Moderowanie obrazów

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 lub bieżąca wersja platformy .NET Core.
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób usługi Content Moderator w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i kliknij przycisk Przejdź do zasobu .
    • Będziesz potrzebować klucza i punktu końcowego z utworzonego zasobu, aby połączyć aplikację z usługą Content Moderator. W dalszej części przewodnika Szybki start wklejesz klucz i punkt końcowy do poniższego kodu.
    • Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.

Konfigurowanie

Tworzenie nowej aplikacji w języku C#

Za pomocą programu Visual Studio utwórz nową aplikację .NET Core.

Instalowanie biblioteki klienta

Po utworzeniu nowego projektu zainstaluj bibliotekę klienta, klikając prawym przyciskiem myszy rozwiązanie projektu w Eksplorator rozwiązań i wybierając polecenie Zarządzaj pakietami NuGet. W otwartym menedżerze pakietów wybierz pozycję Przeglądaj, zaznacz opcję Uwzględnij wersję wstępną i wyszukaj ciąg Microsoft.Azure.CognitiveServices.ContentModerator. Wybierz wersję 2.0.0, a następnie pozycję Zainstaluj.

Napiwek

Czy chcesz wyświetlić cały plik z kodem przewodnika Szybki start od razu? Można go znaleźć w witrynie GitHub, która zawiera przykłady kodu z tego przewodnika Szybki start.

W katalogu projektu otwórz plik Program.cs w preferowanym edytorze lub środowisku IDE. Dodaj następujące instrukcje using:

using Microsoft.Azure.CognitiveServices.ContentModerator;
using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;

W klasie Program utwórz zmienne dla klucza i punktu końcowego zasobu.

Ważne

Przejdź do portalu Azure Portal. Jeśli zasób Content Moderator utworzony w sekcji Wymagania wstępne został wdrożony pomyślnie, kliknij przycisk Przejdź do zasobu w obszarze Następne kroki. Klucz i punkt końcowy można znaleźć na stronie klucza i punktu końcowego zasobu w obszarze zarządzanie zasobami.

// Your Content Moderator subscription key is found in your Azure portal resource on the 'Keys' page.
private static readonly string SubscriptionKey = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE";
// Base endpoint URL. Found on 'Overview' page in Azure resource. For example: https://westus.api.cognitive.microsoft.com
private static readonly string Endpoint = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE";

Ważne

Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

W metodzie aplikacji main() dodaj wywołania metod używanych w tym przewodniku Szybki start. Zostaną one utworzone później.

// Create an image review client
ContentModeratorClient clientImage = Authenticate(SubscriptionKey, Endpoint);
// Create a text review client
ContentModeratorClient clientText = Authenticate(SubscriptionKey, Endpoint);
// Create a human reviews client
ContentModeratorClient clientReviews = Authenticate(SubscriptionKey, Endpoint);
// Moderate text from text in a file
ModerateText(clientText, TextFile, TextOutputFile);
// Moderate images from list of image URLs
ModerateImages(clientImage, ImageUrlFile, ImageOutputFile);

Model obiektów

Poniższe klasy obsługują niektóre główne funkcje biblioteki klienta platformy .NET usługi Content Moderator.

Nazwa/nazwisko opis
ContentModeratorClient Ta klasa jest wymagana dla wszystkich funkcji usługi Content Moderator. Tworzysz wystąpienie z informacjami o subskrypcji i używasz ich do tworzenia wystąpień innych klas.
Tryb obrazu Ta klasa udostępnia funkcje analizowania obrazów pod kątem zawartości dla dorosłych, informacji osobistych lub ludzkich twarzy.
TextModeration Ta klasa udostępnia funkcje analizowania tekstu pod kątem języka, wulgaryzmów, błędów i informacji osobistych.

Przykłady kodu

Te fragmenty kodu pokazują, jak wykonać następujące zadania za pomocą biblioteki klienta Content Moderator dla platformy .NET:

Uwierzytelnianie użytkownika

W nowej metodzie utwórz wystąpienie obiektów klienta przy użyciu punktu końcowego i klucza.

public static ContentModeratorClient Authenticate(string key, string endpoint)
{
    ContentModeratorClient client = new ContentModeratorClient(new ApiKeyServiceClientCredentials(key));
    client.Endpoint = endpoint;

    return client;
}

Tekst umiarkowany

Poniższy kod używa klienta usługi Content Moderator do analizowania treści tekstu i drukowania wyników w konsoli. W katalogu głównym klasy Program zdefiniuj pliki wejściowe i wyjściowe:

// TEXT MODERATION
// Name of the file that contains text
private static readonly string TextFile = "TextFile.txt";
// The name of the file to contain the output from the evaluation.
private static string TextOutputFile = "TextModerationOutput.txt";

Następnie w katalogu głównym projektu dodaj plik TextFile.txt . Dodaj własny tekst do tego pliku lub użyj następującego przykładowego tekstu:

Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
<offensive word> is the profanity here. Is this information PII? phone 4255550111

Następnie zdefiniuj metodę moderowania tekstu w klasie Program :

/*
 * TEXT MODERATION
 * This example moderates text from file.
 */
public static void ModerateText(ContentModeratorClient client, string inputFile, string outputFile)
{
    Console.WriteLine("--------------------------------------------------------------");
    Console.WriteLine();
    Console.WriteLine("TEXT MODERATION");
    Console.WriteLine();
    // Load the input text.
    string text = File.ReadAllText(inputFile);

    // Remove carriage returns
    text = text.Replace(Environment.NewLine, " ");
    // Convert string to a byte[], then into a stream (for parameter in ScreenText()).
    byte[] textBytes = Encoding.UTF8.GetBytes(text);
    MemoryStream stream = new MemoryStream(textBytes);

    Console.WriteLine("Screening {0}...", inputFile);
    // Format text

    // Save the moderation results to a file.
    using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
    {
        using (client)
        {
            // Screen the input text: check for profanity, classify the text into three categories,
            // do autocorrect text, and check for personally identifying information (PII)
            outputWriter.WriteLine("Autocorrect typos, check for matching terms, PII, and classify.");

            // Moderate the text
            var screenResult = client.TextModeration.ScreenText("text/plain", stream, "eng", true, true, null, true);
            outputWriter.WriteLine(JsonConvert.SerializeObject(screenResult, Formatting.Indented));
        }

        outputWriter.Flush();
        outputWriter.Close();
    }

    Console.WriteLine("Results written to {0}", outputFile);
    Console.WriteLine();
}

Moderowanie obrazów

Poniższy kod używa klienta usługi Content Moderator wraz z obiektem ImageModeration do analizowania obrazów zdalnych pod kątem zawartości dla dorosłych i zawartości erotycznej.

Uwaga

Możesz również przeanalizować zawartość obrazu lokalnego. Zapoznaj się z dokumentacją referencyjną metod i operacji, które współpracują z obrazami lokalnymi.

Pobieranie przykładowych obrazów

Zdefiniuj pliki wejściowe i wyjściowe w katalogu głównym klasy Program :

// IMAGE MODERATION
//The name of the file that contains the image URLs to evaluate.
private static readonly string ImageUrlFile = "ImageFiles.txt";
// The name of the file to contain the output from the evaluation.
private static string ImageOutputFile = "ImageModerationOutput.json";

Następnie utwórz plik wejściowy ImageFiles.txt w katalogu głównym projektu. W tym pliku dodasz adresy URL obrazów do analizy — jeden adres URL w każdym wierszu. Możesz użyć następujących przykładowych obrazów:

https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg
https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png

Definiowanie klasy pomocnika

Dodaj następującą definicję klasy w klasie Program . Ta klasa wewnętrzna będzie obsługiwać wyniki moderowania obrazów.

// Contains the image moderation results for an image, 
// including text and face detection results.
public class EvaluationData
{
    // The URL of the evaluated image.
    public string ImageUrl;

    // The image moderation results.
    public Evaluate ImageModeration;

    // The text detection results.
    public OCR TextDetection;

    // The face detection results;
    public FoundFaces FaceDetection;
}

Definiowanie metody moderowania obrazu

Poniższa metoda wykonuje iterację po adresach URL obrazów w pliku tekstowym, tworzy wystąpienie EvaluationData i analizuje obraz pod kątem zawartości dla dorosłych/rasistowskich, tekstu i ludzkich twarzy. Następnie dodaje końcowe wystąpienie EvaluationData do listy i zapisuje pełną listę zwracanych danych do konsoli.

Iterowanie obrazów

/*
 * IMAGE MODERATION
 * This example moderates images from URLs.
 */
public static void ModerateImages(ContentModeratorClient client, string urlFile, string outputFile)
{
    Console.WriteLine("--------------------------------------------------------------");
    Console.WriteLine();
    Console.WriteLine("IMAGE MODERATION");
    Console.WriteLine();
    // Create an object to store the image moderation results.
    List<EvaluationData> evaluationData = new List<EvaluationData>();

    using (client)
    {
        // Read image URLs from the input file and evaluate each one.
        using (StreamReader inputReader = new StreamReader(urlFile))
        {
            while (!inputReader.EndOfStream)
            {
                string line = inputReader.ReadLine().Trim();
                if (line != String.Empty)
                {
                    Console.WriteLine("Evaluating {0}...", Path.GetFileName(line));
                    var imageUrl = new BodyModel("URL", line.Trim());

Analizowanie zawartości

Aby uzyskać więcej informacji na temat atrybutów obrazu wyświetlanych przez usługę Content Moderator, zobacz przewodnik Pojęcia dotyczące moderowania obrazów .

            var imageData = new EvaluationData
            {
                ImageUrl = imageUrl.Value,

                // Evaluate for adult and racy content.
                ImageModeration =
                client.ImageModeration.EvaluateUrlInput("application/json", imageUrl, true)
            };
            Thread.Sleep(1000);

            // Detect and extract text.
            imageData.TextDetection =
                client.ImageModeration.OCRUrlInput("eng", "application/json", imageUrl, true);
            Thread.Sleep(1000);

            // Detect faces.
            imageData.FaceDetection =
                client.ImageModeration.FindFacesUrlInput("application/json", imageUrl, true);
            Thread.Sleep(1000);

            // Add results to Evaluation object
            evaluationData.Add(imageData);
        }
    }
}

Zapisywanie wyników moderowania do pliku

        // Save the moderation results to a file.
        using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
        {
            outputWriter.WriteLine(JsonConvert.SerializeObject(
                evaluationData, Formatting.Indented));

            outputWriter.Flush();
            outputWriter.Close();
        }
        Console.WriteLine();
        Console.WriteLine("Image moderation results written to output file: " + outputFile);
        Console.WriteLine();
    }
}

Uruchamianie aplikacji

Uruchom aplikację, klikając przycisk Debuguj w górnej części okna IDE.

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

W tym przewodniku Szybki start przedstawiono sposób używania biblioteki .NET usługi Content Moderator do wykonywania zadań moderowania. Następnie dowiedz się więcej na temat moderowania obrazów lub innych multimediów, czytając koncepcyjny przewodnik.

Wprowadzenie do biblioteki klienta usługi Azure Content Moderator dla języka Java. Wykonaj następujące kroki, aby zainstalować pakiet Maven i wypróbować przykładowy kod dla podstawowych zadań.

Content Moderator to usługa sztucznej inteligencji, która umożliwia obsługę zawartości potencjalnie obraźliwej, ryzykownej lub w inny sposób niepożądanej. Użyj usługi con tryb namiotu ration opartej na sztucznej inteligencji, aby automatycznie skanować tekst, obraz i filmy wideo oraz stosować flagi zawartości. Twórz oprogramowanie do filtrowania zawartości w aplikacji w celu zachowania zgodności z przepisami lub utrzymania zamierzonego środowiska dla użytkowników.

Użyj biblioteki klienta Content Moderator dla języka Java, aby:

  • Tekst umiarkowany
  • Moderowanie obrazów

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 usługi Content Moderator w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i kliknij przycisk Przejdź do zasobu .
    • Będziesz potrzebować klucza i punktu końcowego z utworzonego zasobu, aby połączyć aplikację z usługą Content Moderator. W dalszej części przewodnika Szybki start wklejesz klucz i punkt końcowy do poniższego kodu.
    • Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.

Konfigurowanie

Tworzenie nowego projektu narzędzia 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.

Instalowanie biblioteki klienta

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 ContentModeratorQuickstart. Importuje bibliotekę klienta usługi Content Moderator i zestaw SDK GSON na potrzeby serializacji JSON.

plugins {
    java
    application
}

application{ 
    mainClassName = "ContentModeratorQuickstart"
}

repositories{
    mavenCentral()
}

dependencies{
    compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-contentmoderator", version = "1.0.2-beta")
    compile(group = "com.google.code.gson", name = "gson", version = "2.8.5")
}

Tworzenie pliku języka Java

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 ContentModeratorQuickstart.java. Otwórz go w preferowanym edytorze lub środowisku IDE i dodaj następujące import instrukcje:

import com.google.gson.*;

import com.microsoft.azure.cognitiveservices.vision.contentmoderator.*;
import com.microsoft.azure.cognitiveservices.vision.contentmoderator.models.*;

import java.io.*;
import java.util.*;
import java.util.concurrent.*;

Napiwek

Czy chcesz wyświetlić cały plik z kodem przewodnika Szybki start od razu? Można go znaleźć w witrynie GitHub, która zawiera przykłady kodu z tego przewodnika Szybki start.

W klasie ContentModeratorQuickstart aplikacji utwórz zmienne dla klucza i punktu końcowego zasobu.

Ważne

Przejdź do portalu Azure Portal. Jeśli zasób Content Moderator utworzony w sekcji Wymagania wstępne został wdrożony pomyślnie, kliknij przycisk Przejdź do zasobu w obszarze Następne kroki. Klucz i punkt końcowy można znaleźć na stronie klucza i punktu końcowego zasobu w obszarze zarządzanie zasobami.

private static final String subscriptionKey = "<your-subscription-key>";
private static final String endpoint = "<your-api-endpoint>";

Ważne

Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

W głównej metodzie aplikacji dodaj wywołania metod używanych w tym przewodniku Szybki start. Te metody zdefiniujesz później.

// Create a List in which to store the image moderation results.
List<EvaluationData> evaluationData = new ArrayList<EvaluationData>();

// Moderate URL images
moderateImages(client, evaluationData);
// Moderate text from file
moderateText(client);
// Create a human review
humanReviews(client);

Model obiektów

Poniższe klasy obsługują niektóre główne funkcje biblioteki klienta Języka Java usługi Content Moderator.

Nazwa/nazwisko opis
ContentModeratorClient Ta klasa jest wymagana dla wszystkich funkcji usługi Content Moderator. Tworzysz wystąpienie z informacjami o subskrypcji i używasz ich do tworzenia wystąpień innych klas.
Tryb obrazu Ta klasa udostępnia funkcje analizowania obrazów pod kątem zawartości dla dorosłych, informacji osobistych lub ludzkich twarzy.
Moduły tekstowe Ta klasa udostępnia funkcje analizowania tekstu pod kątem języka, wulgaryzmów, błędów i informacji osobistych.

Przykłady kodu

Te fragmenty kodu pokazują, jak wykonać następujące zadania za pomocą biblioteki klienta Content Moderator dla języka Java:

Uwierzytelnianie użytkownika

W metodzie aplikacji main utwórz obiekt ContentModeratorClient przy użyciu wartości punktu końcowego subskrypcji i klucza subskrypcji.

// Set CONTENT_MODERATOR_SUBSCRIPTION_KEY in your environment settings, with
// your key as its value.
// Set COMPUTER_MODERATOR_ENDPOINT in your environment variables with your Azure
// endpoint.
ContentModeratorClient client = ContentModeratorManager.authenticate(AzureRegionBaseUrl.fromString(endpoint),
        "CONTENT_MODERATOR_SUBSCRIPTION_KEY");

Tekst umiarkowany

Konfigurowanie przykładowego tekstu

W górnej części klasy ContentModeratorQuickstart zdefiniuj odwołanie do lokalnego pliku tekstowego. Dodaj plik .txt do katalogu projektu i wprowadź tekst, który chcesz przeanalizować.

// TEXT MODERATION variable
private static File textFile = new File("src\\main\\resources\\TextModeration.txt");

Analizowanie tekstu

Utwórz nową metodę odczytującą plik .txt i wywołującą metodę screenText w każdym wierszu.

public static void moderateText(ContentModeratorClient client) {
    System.out.println("---------------------------------------");
    System.out.println("MODERATE TEXT");
    System.out.println();

    try (BufferedReader inputStream = new BufferedReader(new FileReader(textFile))) {
        String line;
        Screen textResults = null;
        // For formatting the printed results
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        while ((line = inputStream.readLine()) != null) {
            if (line.length() > 0) {
                textResults = client.textModerations().screenText("text/plain", line.getBytes(), null);
                // Uncomment below line to print in console
                // System.out.println(gson.toJson(textResults).toString());
            }
        }

Dodaj następujący kod, aby wydrukować wyniki moderowania do pliku .json w katalogu projektu.

System.out.println("Text moderation status: " + textResults.status().description());
System.out.println();

// Create output results file to TextModerationOutput.json
BufferedWriter writer = new BufferedWriter(
        new FileWriter(new File("src\\main\\resources\\TextModerationOutput.json")));
writer.write(gson.toJson(textResults).toString());
System.out.println("Check TextModerationOutput.json to see printed results.");
System.out.println();
writer.close();

Zamknij instrukcję try i catch , aby ukończyć metodę .

    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

Moderowanie obrazów

Konfigurowanie przykładowego obrazu

W nowej metodzie skonstruuj obiekt BodyModelModel z danym ciągiem adresu URL wskazującym obraz.

public static void moderateImages(ContentModeratorClient client, List<EvaluationData> resultsList) {
    System.out.println();
    System.out.println("---------------------------------------");
    System.out.println("MODERATE IMAGES");
    System.out.println();

    try {
        String urlString = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
        // Evaluate each line of text
        BodyModelModel url = new BodyModelModel();
        url.withDataRepresentation("URL");
        url.withValue(urlString);
        // Save to EvaluationData class for later
        EvaluationData imageData = new EvaluationData();
        imageData.ImageUrl = url.value();

Definiowanie klasy pomocnika

Następnie w pliku ContentModeratorQuickstart.java dodaj następującą definicję klasy w klasie ContentModeratorQuickstart . Ta klasa wewnętrzna jest używana w procesie moderowania obrazów.

// Contains the image moderation results for an image, including text and face
// detection from the image.
public static class EvaluationData {
    // The URL of the evaluated image.
    public String ImageUrl;
    // The image moderation results.
    public Evaluate ImageModeration;
    // The text detection results.
    public OCR TextDetection;
    // The face detection results;
    public FoundFaces FaceDetection;
}

Analizowanie zawartości

Ten wiersz kodu sprawdza obraz pod danym adresem URL pod kątem zawartości dla dorosłych lub zawartości erotycznej. Aby uzyskać informacje na temat tych terminów, zobacz Przewodnik koncepcyjny moderowania obrazów.

// Evaluate for adult and racy content.
imageData.ImageModeration = client.imageModerations().evaluateUrlInput("application/json", url,
        new EvaluateUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Sprawdzanie tekstu

Ten wiersz kodu sprawdza obraz pod kątem widocznego tekstu.

// Detect and extract text from image.
imageData.TextDetection = client.imageModerations().oCRUrlInput("eng", "application/json", url,
        new OCRUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Sprawdzanie twarzy

Ten wiersz kodu sprawdza obraz pod kątem ludzkich twarzy.

// Detect faces.
imageData.FaceDetection = client.imageModerations().findFacesUrlInput("application/json", url,
        new FindFacesUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Na koniec zapisz zwrócone informacje na EvaluationData liście.

resultsList.add(imageData);

while Po pętli dodaj następujący kod, który wyświetla wyniki w konsoli i do pliku wyjściowego src/main/resources/ModerationOutput.json.

// Save the moderation results to a file.
// ModerationOutput.json contains the output from the evaluation.
// Relative paths are relative to the execution directory (where pom.xml is
// located).
BufferedWriter writer = new BufferedWriter(
        new FileWriter(new File("src\\main\\resources\\ImageModerationOutput.json")));
// For formatting the printed results
Gson gson = new GsonBuilder().setPrettyPrinting().create();

writer.write(gson.toJson(resultsList).toString());
System.out.println("Check ImageModerationOutput.json to see printed results.");
writer.close();

Zamknij instrukcję try i dodaj instrukcję catch , aby ukończyć metodę.

} catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}

Uruchamianie aplikacji

Aplikację można skompilować za pomocą następujących funkcji:

gradle build

Uruchom aplikację za gradle run pomocą polecenia :

gradle run

Następnie przejdź do pliku src/main/resources/ModerationOutput.json i wyświetl wyniki con tryb namiotu ration.

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

W tym przewodniku Szybki start przedstawiono sposób użycia biblioteki Java usługi Content Moderator do wykonywania zadań moderowania. Następnie dowiedz się więcej na temat moderowania obrazów lub innych multimediów, czytając koncepcyjny przewodnik.

Wprowadzenie do biblioteki klienta usługi Azure Content Moderator dla języka Python. Wykonaj następujące kroki, aby zainstalować pakiet PiPy i wypróbować przykładowy kod dla podstawowych zadań.

Content Moderator to usługa sztucznej inteligencji, która umożliwia obsługę zawartości potencjalnie obraźliwej, ryzykownej lub w inny sposób niepożądanej. Użyj usługi con tryb namiotu ration opartej na sztucznej inteligencji, aby automatycznie skanować tekst, obraz i filmy wideo oraz stosować flagi zawartości. Twórz oprogramowanie do filtrowania zawartości w aplikacji w celu zachowania zgodności z przepisami lub utrzymania zamierzonego środowiska dla użytkowników.

Użyj biblioteki klienta usługi Content Moderator dla języka Python, aby:

  • Tekst umiarkowany
  • Używanie listy terminów niestandardowych
  • Moderowanie obrazów
  • Używanie niestandardowej listy obrazów

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

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Python 3.x
    • 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.
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób usługi Content Moderator w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i kliknij przycisk Przejdź do zasobu .
    • Będziesz potrzebować klucza i punktu końcowego z utworzonego zasobu, aby połączyć aplikację z usługą Content Moderator. W dalszej części przewodnika Szybki start wklejesz klucz i punkt końcowy do poniższego kodu.
    • Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.

Konfigurowanie

Instalowanie biblioteki klienta

Po zainstalowaniu języka Python możesz zainstalować bibliotekę klienta Content Moderator za pomocą następującego polecenia:

pip install --upgrade azure-cognitiveservices-vision-contentmoderator

Tworzenie nowej aplikacji w języku Python

Utwórz nowy skrypt języka Python i otwórz go w preferowanym edytorze lub środowisku IDE. Następnie dodaj następujące import instrukcje na początku pliku.

import os.path
from pprint import pprint
import time
from io import BytesIO
from random import random
import uuid

from azure.cognitiveservices.vision.contentmoderator import ContentModeratorClient
import azure.cognitiveservices.vision.contentmoderator.models
from msrest.authentication import CognitiveServicesCredentials

Napiwek

Czy chcesz wyświetlić cały plik z kodem przewodnika Szybki start od razu? Można go znaleźć w witrynie GitHub, która zawiera przykłady kodu z tego przewodnika Szybki start.

Następnie utwórz zmienne dla lokalizacji i klucza punktu końcowego zasobu.

Ważne

Przejdź do portalu Azure Portal. Jeśli zasób Content Moderator utworzony w sekcji Wymagania wstępne został wdrożony pomyślnie, kliknij przycisk Przejdź do zasobu w obszarze Następne kroki. Klucz i punkt końcowy można znaleźć na stronie klucza i punktu końcowego zasobu w obszarze zarządzanie zasobami.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Ważne

Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Model obiektów

Poniższe klasy obsługują niektóre główne funkcje biblioteki klienta Content Moderator języka Python.

Nazwa/nazwisko opis
ContentModeratorClient Ta klasa jest wymagana dla wszystkich funkcji usługi Content Moderator. Tworzysz wystąpienie z informacjami o subskrypcji i używasz ich do tworzenia wystąpień innych klas.
ImageModerationOperations Ta klasa udostępnia funkcje analizowania obrazów pod kątem zawartości dla dorosłych, informacji osobistych lub ludzkich twarzy.
TextModerationOperations Ta klasa udostępnia funkcje analizowania tekstu pod kątem języka, wulgaryzmów, błędów i informacji osobistych.

Przykłady kodu

Te fragmenty kodu pokazują, jak wykonać następujące zadania za pomocą biblioteki klienta Content Moderator dla języka Python:

Uwierzytelnianie użytkownika

Utwórz wystąpienie klienta przy użyciu punktu końcowego i klucza. Utwórz obiekt CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials z kluczem i użyj go z punktem końcowym, aby utworzyć obiekt ContentModeratorClient .

client = ContentModeratorClient(
    endpoint=CONTENT_MODERATOR_ENDPOINT,
    credentials=CognitiveServicesCredentials(subscription_key)
)

Tekst umiarkowany

Poniższy kod używa klienta usługi Content Moderator do analizowania treści tekstu i drukowania wyników w konsoli. Najpierw utwórz folder text_files/ w katalogu głównym projektu i dodaj plik content_moderator_text_moderation.txt . Dodaj własny tekst do tego pliku lub użyj następującego przykładowego tekstu:

Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
<offensive word> is the profanity here. Is this information PII? phone 2065550111

Dodaj odwołanie do nowego folderu.

TEXT_FOLDER = os.path.join(os.path.dirname(
    os.path.realpath(__file__)), "text_files")

Następnie dodaj następujący kod do skryptu języka Python.

# Screen the input text: check for profanity,
# do autocorrect text, and check for personally identifying
# information (PII)
with open(os.path.join(TEXT_FOLDER, 'content_moderator_text_moderation.txt'), "rb") as text_fd:
    screen = client.text_moderation.screen_text(
        text_content_type="text/plain",
        text_content=text_fd,
        language="eng",
        autocorrect=True,
        pii=True
    )
    assert isinstance(screen, Screen)
    pprint(screen.as_dict())

Używanie listy terminów niestandardowych

Poniższy kod pokazuje, jak zarządzać listą terminów niestandardowych na potrzeby moderowania tekstu. Możesz użyć klasy ListManagementTermListsOperations , aby utworzyć listę terminów, zarządzać poszczególnymi terminami i wyświetlać inne treści tekstu względem niego.

Pobieranie przykładowego tekstu

Aby użyć tego przykładu, należy utworzyć folder text_files/ w katalogu głównym projektu i dodać plik content_moderator_term_list.txt . Ten plik powinien zawierać tekst organiczny, który zostanie sprawdzony na liście terminów. Możesz użyć następującego przykładowego tekstu:

This text contains the terms "term1" and "term2".

Dodaj odwołanie do folderu, jeśli jeszcze go nie zdefiniowano.

TEXT_FOLDER = os.path.join(os.path.dirname(
    os.path.realpath(__file__)), "text_files")

Utwórz listę

Dodaj następujący kod do skryptu języka Python, aby utworzyć listę terminów niestandardowych i zapisać jego wartość identyfikatora.

#
# Create list
#
print("\nCreating list")
custom_list = client.list_management_term_lists.create(
    content_type="application/json",
    body={
        "name": "Term list name",
        "description": "Term list description",
    }
)
print("List created:")
assert isinstance(custom_list, TermList)
pprint(custom_list.as_dict())
list_id = custom_list.id

Definiowanie szczegółów listy

Możesz użyć identyfikatora listy, aby edytować jego nazwę i opis.

#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_term_lists.update(
    list_id=list_id,
    content_type="application/json",
    body={
        "name": "New name",
        "description": "New description"
    }
)
assert isinstance(updated_list, TermList)
pprint(updated_list.as_dict())

Dodawanie terminu do listy

Poniższy kod dodaje terminy "term1" i "term2" do listy.

#
# Add terms
#
print("\nAdding terms to list {}".format(list_id))
client.list_management_term.add_term(
    list_id=list_id,
    term="term1",
    language="eng"
)
client.list_management_term.add_term(
    list_id=list_id,
    term="term2",
    language="eng"
)

Pobieranie wszystkich terminów na liście

Możesz użyć identyfikatora listy, aby zwrócić wszystkie terminy na liście.

#
# Get all terms ids
#
print("\nGetting all term IDs for list {}".format(list_id))
terms = client.list_management_term.get_all_terms(
    list_id=list_id, language="eng")
assert isinstance(terms, Terms)
terms_data = terms.data
assert isinstance(terms_data, TermsData)
pprint(terms_data.as_dict())

Odświeżanie indeksu listy

Za każdym razem, gdy dodasz lub usuniesz terminy z listy, musisz odświeżyć indeks, zanim będzie można użyć zaktualizowanej listy.

#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_term_lists.refresh_index_method(
    list_id=list_id, language="eng")
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())

print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
    LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)

Tekst ekranu na liście

Główną funkcją listy terminów niestandardowych jest porównanie treści tekstu z listą i znalezienie, czy istnieją pasujące terminy.

#
# Screen text
#
with open(os.path.join(TEXT_FOLDER, 'content_moderator_term_list.txt'), "rb") as text_fd:
    screen = client.text_moderation.screen_text(
        text_content_type="text/plain",
        text_content=text_fd,
        language="eng",
        autocorrect=False,
        pii=False,
        list_id=list_id
    )
    assert isinstance(screen, Screen)
    pprint(screen.as_dict())

Usuwanie terminu z listy

Poniższy kod usuwa termin "term1" z listy.

#
# Remove terms
#
term_to_remove = "term1"
print("\nRemove term {} from list {}".format(term_to_remove, list_id))
client.list_management_term.delete_term(
    list_id=list_id,
    term=term_to_remove,
    language="eng"
)

Usuwanie wszystkich terminów z listy

Użyj poniższego kodu, aby wyczyścić listę wszystkich jego terminów.

#
# Delete all terms
#
print("\nDelete all terms in the image list {}".format(list_id))
client.list_management_term.delete_all_terms(
    list_id=list_id, language="eng")

Usuwanie listy

Użyj poniższego kodu, aby usunąć niestandardową listę terminów.

#
# Delete list
#
print("\nDelete the term list {}".format(list_id))
client.list_management_term_lists.delete(list_id=list_id)

Moderowanie obrazów

Poniższy kod używa klienta usługi Content Moderator wraz z obiektem ImageModerationOperations w celu analizowania obrazów pod kątem zawartości dla dorosłych i erotycznej.

Pobieranie przykładowych obrazów

Zdefiniuj odwołanie do niektórych obrazów do analizy.

IMAGE_LIST = [
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png"
]

Następnie dodaj następujący kod, aby wykonać iterowanie obrazów. Pozostała część kodu w tej sekcji przejdzie do tej pętli.

for image_url in IMAGE_LIST:
    print("\nEvaluate image {}".format(image_url))

Sprawdzanie zawartości dla dorosłych/rasistowskich

Poniższy kod sprawdza obraz pod podanym adresem URL pod kątem zawartości dla dorosłych lub zawartości erotycznej i wyświetla wyniki w konsoli. Zapoznaj się z przewodnikiem Pojęcia dotyczące moderowania obrazów, aby uzyskać informacje na temat znaczenia tych terminów .

print("\nEvaluate for adult and racy content.")
evaluation = client.image_moderation.evaluate_url_input(
    content_type="application/json",
    cache_image=True,
    data_representation="URL",
    value=image_url
)
assert isinstance(evaluation, Evaluate)
pprint(evaluation.as_dict())

Sprawdzanie widocznego tekstu

Poniższy kod sprawdza obraz pod kątem widocznej zawartości tekstowej i wyświetla wyniki w konsoli programu .

print("\nDetect and extract text.")
evaluation = client.image_moderation.ocr_url_input(
    language="eng",
    content_type="application/json",
    data_representation="URL",
    value=image_url,
    cache_image=True,
)
assert isinstance(evaluation, OCR)
pprint(evaluation.as_dict())

Sprawdzanie twarzy

Poniższy kod sprawdza obraz pod kątem ludzkich twarzy i wyświetla wyniki w konsoli.

print("\nDetect faces.")
evaluation = client.image_moderation.find_faces_url_input(
    content_type="application/json",
    cache_image=True,
    data_representation="URL",
    value=image_url
)
assert isinstance(evaluation, FoundFaces)
pprint(evaluation.as_dict())

Używanie niestandardowej listy obrazów

Poniższy kod przedstawia sposób zarządzania niestandardową listą obrazów na potrzeby moderowania obrazów. Ta funkcja jest przydatna, jeśli platforma często odbiera wystąpienia tego samego zestawu obrazów, które mają być wyświetlane. Utrzymując listę tych konkretnych obrazów, można zwiększyć wydajność. Klasa ListManagementImageListsOperations umożliwia tworzenie listy obrazów, zarządzanie poszczególnymi obrazami na liście i porównywanie innych obrazów.

Utwórz następujące zmienne tekstowe do przechowywania adresów URL obrazów, które będą używane w tym scenariuszu.

IMAGE_LIST = {
    "Sports": [
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample6.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample9.png"
    ],
    "Swimsuit": [
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample3.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
    ]
}

IMAGES_TO_MATCH = [
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
]

Uwaga

Nie jest to właściwa lista, ale nieformalna lista obrazów, które zostaną dodane w add images sekcji kodu.

Tworzenie listy obrazów

Dodaj następujący kod, aby utworzyć listę obrazów i zapisać odwołanie do jego identyfikatora.

#
# Create list
#
print("Creating list MyList\n")
custom_list = client.list_management_image_lists.create(
    content_type="application/json",
    body={
        "name": "MyList",
        "description": "A sample list",
        "metadata": {
            "key_one": "Acceptable",
            "key_two": "Potentially racy"
        }
    }
)
print("List created:")
assert isinstance(custom_list, ImageList)
pprint(custom_list.as_dict())
list_id = custom_list.id

Dodawanie obrazów do listy

Poniższy kod dodaje wszystkie obrazy do listy.

print("\nAdding images to list {}".format(list_id))
index = {}  # Keep an index url to id for later removal
for label, urls in IMAGE_LIST.items():
    for url in urls:
        image = add_images(list_id, url, label)
        if image:
            index[url] = image.content_id

Zdefiniuj funkcję pomocnika add_images w innym miejscu skryptu.

#
# Add images
#
def add_images(list_id, image_url, label):
    """Generic add_images from url and label."""
    print("\nAdding image {} to list {} with label {}.".format(
        image_url, list_id, label))
    try:
        added_image = client.list_management_image.add_image_url_input(
            list_id=list_id,
            content_type="application/json",
            data_representation="URL",
            value=image_url,
            label=label
        )
    except APIErrorException as err:
        # sample4 will fail
        print("Unable to add image to list: {}".format(err))
    else:
        assert isinstance(added_image, Image)
        pprint(added_image.as_dict())
        return added_image

Pobieranie obrazów na liście

Poniższy kod wyświetla nazwy wszystkich obrazów na liście.

#
# Get all images ids
#
print("\nGetting all image IDs for list {}".format(list_id))
image_ids = client.list_management_image.get_all_image_ids(list_id=list_id)
assert isinstance(image_ids, ImageIds)
pprint(image_ids.as_dict())

Aktualizowanie szczegółów listy

Możesz użyć identyfikatora listy, aby zaktualizować nazwę i opis listy.

#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_image_lists.update(
    list_id=list_id,
    content_type="application/json",
    body={
        "name": "Swimsuits and sports"
    }
)
assert isinstance(updated_list, ImageList)
pprint(updated_list.as_dict())

Pobieranie szczegółów listy

Użyj poniższego kodu, aby wydrukować bieżące szczegóły listy.

#
# Get list details
#
print("\nGetting details for list {}".format(list_id))
list_details = client.list_management_image_lists.get_details(
    list_id=list_id)
assert isinstance(list_details, ImageList)
pprint(list_details.as_dict())

Odświeżanie indeksu listy

Po dodaniu lub usunięciu obrazów należy odświeżyć indeks listy, zanim będzie można go użyć do wyświetlania innych obrazów.

#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_image_lists.refresh_index_method(
    list_id=list_id)
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())

print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
    LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)

Dopasowywanie obrazów do listy

Główną funkcją list obrazów jest porównanie nowych obrazów i sprawdzenie, czy istnieją jakieś dopasowania.

#
# Match images against the image list.
#
for image_url in IMAGES_TO_MATCH:
    print("\nMatching image {} against list {}".format(image_url, list_id))
    match_result = client.image_moderation.match_url_input(
        content_type="application/json",
        list_id=list_id,
        data_representation="URL",
        value=image_url,
    )
    assert isinstance(match_result, MatchResponse)
    print("Is match? {}".format(match_result.is_match))
    print("Complete match details:")
    pprint(match_result.as_dict())

Usuwanie obrazu z listy

Poniższy kod usuwa element z listy. W tym przypadku jest to obraz, który nie jest zgodny z kategorią listy.

#
# Remove images
#
correction = "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
print("\nRemove image {} from list {}".format(correction, list_id))
client.list_management_image.delete_image(
    list_id=list_id,
    image_id=index[correction]
)

Usuwanie wszystkich obrazów z listy

Użyj poniższego kodu, aby wyczyścić listę obrazów.

#
# Delete all images
#
print("\nDelete all images in the image list {}".format(list_id))
client.list_management_image.delete_all_images(list_id=list_id)

Usuwanie listy obrazów

Użyj następującego kodu, aby usunąć daną listę obrazów.

#
# Delete list
#
print("\nDelete the image list {}".format(list_id))
client.list_management_image_lists.delete(list_id=list_id)

Uruchamianie aplikacji

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

python quickstart-file.py

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

W tym przewodniku Szybki start przedstawiono sposób używania biblioteki Content Moderator w języku Python do wykonywania zadań moderowania. Następnie dowiedz się więcej na temat moderowania obrazów lub innych multimediów, czytając koncepcyjny przewodnik.

Rozpocznij pracę z interfejsem API REST usługi Azure Content Moderator.

Content Moderator to usługa sztucznej inteligencji, która umożliwia obsługę zawartości potencjalnie obraźliwej, ryzykownej lub w inny sposób niepożądanej. Użyj usługi con tryb namiotu ration opartej na sztucznej inteligencji, aby automatycznie skanować tekst, obraz i filmy wideo oraz stosować flagi zawartości. Twórz oprogramowanie do filtrowania zawartości w aplikacji w celu zachowania zgodności z przepisami lub utrzymania zamierzonego środowiska dla użytkowników.

Użyj interfejsu API REST usługi Content Moderator, aby:

  • Tekst umiarkowany
  • Moderowanie obrazów

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób usługi Content Moderator w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i kliknij przycisk Przejdź do zasobu .
    • Będziesz potrzebować klucza i punktu końcowego z utworzonego zasobu, aby połączyć aplikację z usługą Content Moderator. W dalszej części przewodnika Szybki start wklejesz klucz i punkt końcowy do poniższego kodu.
    • Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
  • PowerShell w wersji 6.0 lub podobnej aplikacji wiersza polecenia.

Tekst umiarkowany

Użyjesz polecenia podobnego do poniższego, aby wywołać interfejs API usługi Content Moderator, aby przeanalizować treść tekstu i wydrukować wyniki w konsoli.

curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessText/Screen?autocorrect=True&PII=True&classify=True&language={string}"
-H "Content-Type: text/plain"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255, 1 Microsoft Way, Redmond, WA 98052"

Skopiuj polecenie do edytora tekstów i wprowadź następujące zmiany:

  1. Przypisz Ocp-Apim-Subscription-Key do prawidłowego klucza subskrypcji rozpoznawania twarzy.

    Ważne

    Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

  2. Zmień pierwszą część adresu URL zapytania, aby pasować do punktu końcowego odpowiadającego kluczowi subskrypcji.

    Uwaga

    Nowe zasoby utworzone po 1 lipca 2019 r. będą używać niestandardowych nazw domen podrzędnych. Aby uzyskać więcej informacji i pełną listę regionalnych punktów końcowych, zobacz Niestandardowe nazwy poddomeny dla usług Azure AI.

  3. Opcjonalnie zmień treść żądania na dowolny ciąg tekstu, który chcesz przeanalizować.

Po dokonaniu zmian otwórz wiersz polecenia i wprowadź nowe polecenie.

Sprawdzanie wyników

Wyniki moderowania tekstu powinny być wyświetlane jako dane JSON w oknie konsoli. Na przykład:

{
  "OriginalText": "Is this a <offensive word> email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255,\n1 Microsoft Way, Redmond, WA 98052\n",
  "NormalizedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
  "AutoCorrectedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
  "Misrepresentation": null,
  "PII": {
    "Email": [
      {
        "Detected": "abcdef@abcd.com",
        "SubType": "Regular",
        "Text": "abcdef@abcd.com",
        "Index": 21
      }
    ],
    "IPA": [
      {
        "SubType": "IPV4",
        "Text": "255.255.255.255",
        "Index": 61
      }
    ],
    "Phone": [
      {
        "CountryCode": "US",
        "Text": "6657789887",
        "Index": 45
      }
    ],
    "Address": [
      {
        "Text": "1 Microsoft Way, Redmond, WA 98052",
        "Index": 78
      }
    ]
  },
 "Classification": {
    "Category1": 
    {
      "Score": 0.5
    },
    "Category2": 
    {
      "Score": 0.6
    },
    "Category3": 
    {
      "Score": 0.5
    },
    "ReviewRecommended": true
  },
  "Language": "eng",
  "Terms": [
    {
      "Index": 10,
      "OriginalIndex": 10,
      "ListId": 0,
      "Term": "<offensive word>"
    }
  ],
  "Status": {
    "Code": 3000,
    "Description": "OK",
    "Exception": null
  },
  "TrackingId": "1717c837-cfb5-4fc0-9adc-24859bfd7fac"
}

Aby uzyskać więcej informacji na temat atrybutów tekstowych wyświetlanych przez usługę Content Moderator, zobacz Przewodnik po pojęciach dotyczących moderowania tekstu.

Moderowanie obrazów

Użyjesz polecenia podobnego do poniższego, aby wywołać interfejs API usługi Content Moderator w celu moderowania obrazu zdalnego i wydrukowania wyników w konsoli.

curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessImage/Evaluate?CacheImage={boolean}" 
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}" 
--data-ascii "{\"DataRepresentation\":\"URL\", \"Value\":\"https://moderatorsampleimages.blob.core.windows.net/samples/sample.jpg\"}"

Skopiuj polecenie do edytora tekstów i wprowadź następujące zmiany:

  1. Przypisz Ocp-Apim-Subscription-Key do prawidłowego klucza subskrypcji rozpoznawania twarzy.
  2. Zmień pierwszą część adresu URL zapytania, aby pasować do punktu końcowego odpowiadającego kluczowi subskrypcji.
  3. Opcjonalnie zmień "Value" adres URL w treści żądania na dowolny obraz zdalny, który chcesz moderować.

Napiwek

Możesz również moderować obrazy lokalne, przekazując dane bajtów do treści żądania. Zapoznaj się z dokumentacją referencyjną, aby dowiedzieć się, jak to zrobić.

Po dokonaniu zmian otwórz wiersz polecenia i wprowadź nowe polecenie.

Sprawdzanie wyników

W oknie konsoli powinny zostać wyświetlone wyniki moderowania obrazów jako dane JSON.

{
  "AdultClassificationScore": x.xxx,
  "IsImageAdultClassified": <Bool>,
  "RacyClassificationScore": x.xxx,
  "IsImageRacyClassified": <Bool>,
  "AdvancedInfo": [],
  "Result": false,
  "Status": {
    "Code": 3000,
    "Description": "OK",
    "Exception": null
  },
  "TrackingId": "<Request Tracking Id>"
}

Aby uzyskać więcej informacji na temat atrybutów obrazu wyświetlanych przez usługę Content Moderator, zobacz przewodnik Pojęcia dotyczące moderowania obrazów .

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

W tym przewodniku Szybki start przedstawiono sposób używania interfejsu API REST usługi Content Moderator do wykonywania zadań moderowania. Następnie dowiedz się więcej na temat moderowania obrazów lub innych multimediów, czytając koncepcyjny przewodnik.