Schnellstart: Verwenden der Content Moderator-Clientbibliothek

Wichtig

Azure Content Moderator wird im Februar 2024 als veraltet markiert und bis zum Februar 2027 eingestellt. Er wird durch den Dienst Azure KI Inhaltssicherheit ersetzt, der erweiterte KI-Features und eine verbesserte Leistung bietet.

Azure KI Inhaltssicherheit ist eine umfassende Lösung für die Erkennung benutzer- und KI-generierter Inhalte in Anwendungen und Diensten. Azure KI Inhaltssicherheit ist für zahlreiche Szenarien geeignet, z. B. für Online-Marketplaces, Spieleanbieter, Social Messaging-Plattformen, Medienunternehmen und Anbieter von Lösungen für den primären und sekundären Bildungsbereich. Hier finden Sie eine Übersicht über die Features und Funktionen:

  • APIs für Text- und Bilderkennung: Überprüfung von Texten und Bildern auf sexuelle Inhalte, Gewalt, Hass und selbstverletzendes Verhalten mit verschiedenen Schweregraden.
  • Inhaltssicherheit Studio: Ein Onlinetool für den Umgang mit potenziell anstößigen, gefährlichen oder unerwünschten Inhalten unter Verwendung unserer neuesten ML-Modelle für die Inhaltsmoderation. Es bietet Vorlagen und benutzerdefinierte Workflows, mit denen Benutzer*innen eigene Systeme für die Inhaltsmoderation entwickeln können.
  • Sprachunterstützung: Azure KI Inhaltssicherheit unterstützt mehr als 100 Sprachen und ist speziell für Englisch, Deutsch, Japanisch, Spanisch, Französisch, Italienisch, Portugiesisch und Chinesisch trainiert.

Azure KI Inhaltssicherheit bietet eine robuste und flexible Lösung für Ihre Anforderungen an die Inhaltsmoderation. Durch den Wechsel von Content Moderator zu Azure KI Inhaltssicherheit können Sie die Vorteile der neuesten Tools und Technologien nutzen und sicherstellen, dass Ihre Inhalte immer genau nach Ihren Spezifikationen moderiert werden.

Erfahren Sie mehr über Azure KI Inhaltssicherheit und darüber, wie es Ihre Strategie zur Inhaltsmoderation verbessern kann.

Hier erhalten Sie Informationen zu den ersten Schritten mit der Azure Content Moderator-Clientbibliothek für .NET. Führen Sie die nachfolgenden Schritte zum Installieren des NuGet-Pakets aus, und testen Sie den Beispielcode für grundlegende Aufgaben.

Content Moderator ist ein KI-Dienst für die Behandlung potenziell anstößiger, riskanter oder anderweitig unerwünschter Inhalte. Verwenden Sie den KI-gestützten Dienst zur Inhaltsmoderation, um Text, Bilder und Videos zu scannen und Inhaltsflags automatisch anzuwenden. Integrieren Sie Software zur Inhaltsfilterung in Ihre App, um gesetzliche Vorschriften einzuhalten oder Benutzern die für sie beabsichtigte Umgebung zu bieten.

Führen Sie mit der Content Moderator-Clientbibliothek für .NET die folgenden Aktionen aus:

  • Moderieren von Text
  • Moderieren von Bildern

Referenzdokumentation | Quellcode der Bibliothek | Paket (NuGet) | Beispiele

Voraussetzungen

  • Azure-Abonnement – Erstellen eines kostenlosen Kontos
  • Die Visual Studio-IDE oder die aktuelle Version von .NET Core.
  • Wenn Sie über ein Azure-Abonnement verfügen, können Sie im Azure-Portal eine Content Moderator-Ressource erstellen, um Ihren Schlüssel und Endpunkt abzurufen. Warten Sie ihre Bereitstellung ab, und klicken Sie auf die Schaltfläche Zu Ressource wechseln.
    • Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um für Ihre Anwendung eine Verbindung mit Content Moderator herzustellen. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.
    • Sie können den kostenlosen Tarif (F0) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.

Einrichten

Erstellen einer neuen C#-Anwendung

Erstellen Sie mit Visual Studio eine neue .NET Core-Anwendung.

Installieren der Clientbibliothek

Installieren Sie nach der Erstellung eines neuen Projekts die Clientbibliothek, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe klicken und NuGet-Pakete verwalten auswählen. Wählen Sie im daraufhin geöffneten Paket-Manager die Option Durchsuchen aus, aktivieren Sie das Kontrollkästchen Vorabversion einbeziehen, und suchen Sie nach Microsoft.Azure.CognitiveServices.ContentModerator. Wählen Sie die Version 2.0.0 und anschließend Installieren aus.

Tipp

Möchten Sie sich sofort die gesamte Codedatei für die Schnellstartanleitung ansehen? Die Datei steht auf GitHub zur Verfügung. Dort finden Sie die Codebeispiele aus dieser Schnellstartanleitung.

Öffnen Sie aus dem Projektverzeichnis die Datei Program.cs in Ihrem bevorzugten Editor oder Ihrer bevorzugten IDE. Fügen Sie die folgenden using -Anweisungen ein:

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;

Erstellen Sie in der Program-Klasse Variablen für den Schlüssel und Endpunkt Ihrer Ressource.

Wichtig

Öffnen Sie das Azure-Portal. Wenn die im Abschnitt Voraussetzungen erstellte Content Moderator-Ressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.

// 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";

Wichtig

Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

Fügen Sie in der main()-Methode der Anwendung Aufrufe für die Methoden hinzu, die in dieser Schnellstartanleitung verwendet werden. Die Erstellung führen Sie zu einem späteren Zeitpunkt durch.

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

Objektmodell

Mit den folgenden Klassen werden einige Hauptfunktionen der Content Moderator-Clientbibliothek für .NET verarbeitet:

Name BESCHREIBUNG
ContentModeratorClient Diese Klasse wird für alle Content Moderator-Funktionen benötigt. Sie instanziieren sie mit Ihren Abonnementinformationen und verwenden sie zum Generieren von Instanzen anderer Klassen.
ImageModeration Diese Klasse stellt die Funktionalität zum Analysieren von Bildern auf nicht jugendfreie Inhalte, persönliche Informationen oder menschliche Gesichter bereit.
TextModeration Diese Klasse stellt die Funktionalität zum Analysieren von Text auf Sprache, Obszönitäten, Fehler und persönliche Informationen bereit.

Codebeispiele

Diese Codeausschnitte veranschaulichen, wie die folgenden Aufgaben mit der Content Moderator-Clientbibliothek für .NET durchgeführt werden:

Authentifizieren des Clients

Instanziieren Sie in einer neuen Methode Clientobjekte mit Ihrem Endpunkt und Schlüssel.

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

    return client;
}

Moderieren von Text

Der folgende Code verwendet einen Content Moderator-Client zum Analysieren von Text und Ausgeben der Ergebnisse in der Konsole. Definieren Sie im Stammverzeichnis Ihrer Program-Klasse die Eingabe- und Ausgabedateien:

// 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";

Fügen Sie dann im Stammverzeichnis Ihres Projekts die Datei TextFile.txt hinzu. Fügen Sie dieser Datei Ihren eigenen Text hinzu, oder verwenden Sie den folgenden Beispieltext:

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

Definieren Sie anschließend in Ihrer Program-Klasse die Methode für die Textmoderation:

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

Moderieren von Bildern

Im folgenden Code werden ein Content Moderator-Client und ein ImageModeration-Objekt verwendet, um Remotebilder auf nicht jugendfreie und freizügige Inhalte zu untersuchen.

Hinweis

Sie können auch den Inhalt eines lokalen Bilds analysieren. Die Referenzdokumentation enthält eine Beschreibung der Methoden und Vorgänge, die für lokale Bilder geeignet sind.

Abrufen von Beispielbildern

Definieren Sie im Stammverzeichnis Ihrer Program-Klasse Ihre Eingabe- und Ausgabedateien:

// 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";

Erstellen Sie anschließend im Stammverzeichnis Ihres Projekts die Datei ImageFiles.txt. In diese Datei fügen Sie die URLs der zu analysierenden Bilder ein – jeweils eine URL pro Zeile. Sie können die folgenden Beispielbilder verwenden:

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

Definieren der Hilfsklasse

Fügen Sie die folgende Klassendefinition in der Program-Klasse hinzu. Mit dieser inneren Klasse werden Ergebnisse der Bildmoderation verarbeitet.

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

Definieren der Methode für die Bildmoderation

Mit der folgenden Methode werden die Bild-URLs in einer Textdatei durchlaufen, es wird eine EvaluationData-Instanz erstellt, und das Bild wird auf nicht jugendfreie bzw. freizügige Inhalte, Texte und Gesichter untersucht. Anschließend wird die endgültige EvaluationData-Instanz einer Liste hinzugefügt, und die vollständige Liste mit zurückgegebenen Daten wird in die Konsole geschrieben.

Durchlaufen von Bildern

/*
 * 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());

Analysieren von Inhalten

Weitere Informationen zu den Bildattributen, die von Content Moderator untersucht werden, finden Sie im Leitfaden zu Bildmoderationskonzepten.

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

Schreiben der Moderationsergebnisse in eine Datei

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

Ausführen der Anwendung

Führen Sie die Anwendung aus, indem Sie oben im IDE-Fenster auf die Schaltfläche Debuggen klicken.

Bereinigen von Ressourcen

Wenn Sie ein Azure KI Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie die Content Moderator-.NET-Bibliothek zum Durchführen von Moderationsaufgaben verwenden. Im Anschluss können Sie sich im konzeptionellen Leitfaden ausführlicher über die Moderation von Bildern oder anderen Medien informieren.

Hier erhalten Sie Informationen zu den ersten Schritten mit der Azure Content Moderator-Clientbibliothek für Java. Führen Sie die nachfolgenden Schritte zum Installieren des Maven-Pakets aus, und testen Sie den Beispielcode für grundlegende Aufgaben.

Content Moderator ist ein KI-Dienst für die Behandlung potenziell anstößiger, riskanter oder anderweitig unerwünschter Inhalte. Verwenden Sie den KI-gestützten Dienst zur Inhaltsmoderation, um Text, Bilder und Videos zu scannen und Inhaltsflags automatisch anzuwenden. Integrieren Sie Software zur Inhaltsfilterung in Ihre App, um gesetzliche Vorschriften einzuhalten oder Benutzern die für sie beabsichtigte Umgebung zu bieten.

Führen Sie mit der Content Moderator-Clientbibliothek für Java die folgenden Aktionen aus:

  • Moderieren von Text
  • Moderieren von Bildern

Referenzdokumentation | Quellcode der Bibliothek |Artefakt (Maven) | Beispiele

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto
  • Aktuelle Version des Java Development Kit (JDK)
  • Gradle-Buildtool oder einen anderen Abhängigkeit-Manager
  • Wenn Sie über ein Azure-Abonnement verfügen, können Sie im Azure-Portal eine Content Moderator-Ressource erstellen, um Ihren Schlüssel und Endpunkt abzurufen. Warten Sie ihre Bereitstellung ab, und klicken Sie auf die Schaltfläche Zu Ressource wechseln.
    • Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um für Ihre Anwendung eine Verbindung mit Content Moderator herzustellen. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.
    • Sie können den kostenlosen Tarif (F0) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.

Einrichten

Erstellen eines neuen Gradle-Projekts

Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf.

mkdir myapp && cd myapp

Führen Sie den Befehl gradle init in Ihrem Arbeitsverzeichnis aus. Mit diesem Befehl werden grundlegende Builddateien für Gradle, u. a. die Datei build.gradle.kts, erstellt. Diese Datei wird zur Laufzeit zum Erstellen und Konfigurieren Ihrer Anwendung verwendet.

gradle init --type basic

Wenn Sie zur Auswahl einer DSL aufgefordert werden, wählen Sie Kotlin aus.

Installieren der Clientbibliothek

Navigieren Sie zur Datei build.gradle.kts, und öffnen Sie sie in Ihrer bevorzugten IDE bzw. Ihrem bevorzugten Text-Editor. Kopieren Sie anschließend die folgende Buildkonfiguration. Diese Konfiguration definiert das Projekt als Java-Anwendung, deren Einstiegspunkt die Klasse ContentModeratorQuickstart ist. Dabei werden die Content Moderator-Clientbibliothek und das GSON SDK für die JSON-Serialisierung importiert.

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

Erstellen einer Java-Datei

Führen Sie in Ihrem Arbeitsverzeichnis den folgenden Befehl aus, um einen Projektquellordner zu erstellen:

mkdir -p src/main/java

Navigieren Sie zu dem neuen Ordner, und erstellen Sie eine Datei mit dem Namen ContentModeratorQuickstart.java. Öffnen Sie sie in Ihrem bevorzugten Editor bzw. Ihrer bevorzugten IDE, und fügen Sie die folgenden import-Anweisungen hinzu:

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.*;

Tipp

Möchten Sie sich sofort die gesamte Codedatei für die Schnellstartanleitung ansehen? Die Datei steht auf GitHub zur Verfügung. Dort finden Sie die Codebeispiele aus dieser Schnellstartanleitung.

Erstellen Sie in der Klasse ContentModeratorQuickstart der Anwendung Variablen für den Schlüssel und den Endpunkt Ihrer Ressource.

Wichtig

Öffnen Sie das Azure-Portal. Wenn die im Abschnitt Voraussetzungen erstellte Content Moderator-Ressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.

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

Wichtig

Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

Fügen Sie in der main-Methode der Anwendung Aufrufe für die Methoden hinzu, die in dieser Schnellstartanleitung verwendet werden. Diese Methoden werden später definiert.

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

Objektmodell

Mit den folgenden Klassen werden einige Hauptfunktionen der Content Moderator-Clientbibliothek für Java verarbeitet:

Name BESCHREIBUNG
ContentModeratorClient Diese Klasse wird für alle Content Moderator-Funktionen benötigt. Sie instanziieren sie mit Ihren Abonnementinformationen und verwenden sie zum Generieren von Instanzen anderer Klassen.
ImageModeration Diese Klasse stellt die Funktionalität zum Analysieren von Bildern auf nicht jugendfreie Inhalte, persönliche Informationen oder menschliche Gesichter bereit.
TextModerations Diese Klasse stellt die Funktionalität zum Analysieren von Text auf Sprache, Obszönitäten, Fehler und persönliche Informationen bereit.

Codebeispiele

Diese Codeausschnitte veranschaulichen, wie die folgenden Aufgaben mit der Content Moderator-Clientbibliothek für Java ausgeführt werden:

Authentifizieren des Clients

Erstellen Sie mithilfe des Werts für den Abonnementendpunkt und des Abonnementschlüssels in der Methode main der Anwendung ein ContentModeratorClient-Objekt.

// 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");

Moderieren von Text

Einrichten von Beispieltext

Definieren Sie am Anfang der Klasse ContentModeratorQuickstart einen Verweis auf eine lokale Textdatei. Fügen Sie Ihrem Projektverzeichnis eine TXT-Datei hinzu, und geben Sie den zu analysierenden Text ein.

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

Analysieren von Text

Erstellen Sie eine neue Methode, die die TXT-Datei liest und die screenText-Methode für jede Zeile aufruft.

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

Fügen Sie den folgenden Code hinzu, um die Moderationsergebnisse in einer JSON-Datei in Ihrem Projektverzeichnis auszugeben.

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

Schließen Sie die Anweisungen try und catch aus, um die Methode abzuschließen.

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

Moderieren von Bildern

Einrichten eines Beispielbilds

Erstellen Sie in einer neuen Methode ein BodyModelModel -Objekt mit einer angegebenen URL-Zeichenfolge, die auf ein Bild verweist.

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

Definieren der Hilfsklasse

Fügen Sie dann in der Datei ContentModeratorQuickstart.java die folgende Klassendefinition innerhalb der Klasse ContentModeratorQuickstart hinzu. Diese innere Klasse wird bei der Bildmoderation verwendet.

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

Analysieren von Inhalten

Diese Codezeile überprüft das Bild unter der angegebenen URL auf nicht jugendfreien oder freizügigen Inhalt. Informationen zu diesen Begriffen finden Sie im konzeptionellen Leitfaden zur Bildmoderation.

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

Überprüfen auf Text

Diese Codezeile überprüft das Bild auf sichtbaren Text.

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

Überprüfen auf Gesichter

Diese Codezeile überprüft das Bild auf menschliche Gesichter.

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

Speichern Sie abschließend die zurückgegebenen Informationen in der Liste EvaluationData.

resultsList.add(imageData);

Fügen Sie nach der Schleife while den folgenden Code hinzu. Dieser gibt die Ergebnisse in der Konsole und in einer Ausgabedatei (src/main/resources/ModerationOutput.json) aus.

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

Schließen Sie die try-Anweisung aus, und fügen Sie eine catch-Anweisung hinzu, um die Methode abzuschließen.

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

Ausführen der Anwendung

Sie können die App mit folgendem Befehl erstellen:

gradle build

Führen Sie die Anwendung mit Befehl gradle run aus:

gradle run

Navigieren Sie dann zur Datei src/main/resources/ModerationOutput.json, und zeigen Sie die Ergebnisse der Inhaltsmoderation an.

Bereinigen von Ressourcen

Wenn Sie ein Azure KI Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie die Content Moderator-Java-Bibliothek zum Ausführen von Moderationsaufgaben verwenden. Im Anschluss können Sie sich im konzeptionellen Leitfaden ausführlicher über die Moderation von Bildern oder anderen Medien informieren.

Hier erhalten Sie Informationen zu den ersten Schritten mit der Azure Content Moderator-Clientbibliothek für Python. Führen Sie die nachfolgenden Schritte zum Installieren des PiPy-Pakets aus, und testen Sie den Beispielcode für grundlegende Aufgaben.

Content Moderator ist ein KI-Dienst für die Behandlung potenziell anstößiger, riskanter oder anderweitig unerwünschter Inhalte. Verwenden Sie den KI-gestützten Dienst zur Inhaltsmoderation, um Text, Bilder und Videos zu scannen und Inhaltsflags automatisch anzuwenden. Integrieren Sie Software zur Inhaltsfilterung in Ihre App, um gesetzliche Vorschriften einzuhalten oder Benutzern die für sie beabsichtigte Umgebung zu bieten.

Führen Sie mit der Content Moderator-Clientbibliothek für Python die folgenden Aktionen aus:

  • Moderieren von Text
  • Verwenden einer benutzerdefinierten Begriffsliste
  • Moderieren von Bildern
  • Verwenden einer benutzerdefinierten Bildliste

Referenzdokumentation | Quellcode der Bibliothek | Paket (PiPy) | Beispiele

Voraussetzungen

  • Azure-Abonnement – Erstellen eines kostenlosen Kontos
  • Python 3.x
    • Ihre Python-Installation sollte pip enthalten. Sie können überprüfen, ob pip installiert ist, indem Sie pip --version in der Befehlszeile ausführen. Installieren Sie die aktuelle Python-Version, um pip zu erhalten.
  • Wenn Sie über ein Azure-Abonnement verfügen, können Sie im Azure-Portal eine Content Moderator-Ressource erstellen, um Ihren Schlüssel und Endpunkt abzurufen. Warten Sie ihre Bereitstellung ab, und klicken Sie auf die Schaltfläche Zu Ressource wechseln.
    • Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um für Ihre Anwendung eine Verbindung mit Content Moderator herzustellen. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.
    • Sie können den kostenlosen Tarif (F0) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.

Einrichten

Installieren der Clientbibliothek

Nach der Installation von Python können Sie die Content Moderator-Clientbibliothek mit dem folgenden Befehl installieren:

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

Erstellen einer neuen Python-Anwendung

Erstellen Sie ein neues Python-Skript, und öffnen Sie es in Ihrem bevorzugten Editor oder Ihrer bevorzugten IDE. Fügen Sie dann am Anfang der Datei die folgenden import-Anweisungen hinzu:

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

Tipp

Möchten Sie sich sofort die gesamte Codedatei für die Schnellstartanleitung ansehen? Die Datei steht auf GitHub zur Verfügung. Dort finden Sie die Codebeispiele aus dieser Schnellstartanleitung.

Erstellen Sie als Nächstes Variablen für den Endpunktstandort und den Schlüssel der Ressource.

Wichtig

Öffnen Sie das Azure-Portal. Wenn die im Abschnitt Voraussetzungen erstellte Content Moderator-Ressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Wichtig

Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

Objektmodell

Mit den folgenden Klassen werden einige Hauptfunktionen der Content Moderator-Clientbibliothek für Python verarbeitet:

Name BESCHREIBUNG
ContentModeratorClient Diese Klasse wird für alle Content Moderator-Funktionen benötigt. Sie instanziieren sie mit Ihren Abonnementinformationen und verwenden sie zum Generieren von Instanzen anderer Klassen.
ImageModerationOperations Diese Klasse stellt die Funktionalität zum Analysieren von Bildern auf nicht jugendfreie Inhalte, persönliche Informationen oder menschliche Gesichter bereit.
TextModerationOperations Diese Klasse stellt die Funktionalität zum Analysieren von Text auf Sprache, Obszönitäten, Fehler und persönliche Informationen bereit.

Codebeispiele

Diese Codeausschnitte veranschaulichen, wie die folgenden Aufgaben mit der Content Moderator-Clientbibliothek für Python ausgeführt werden:

Authentifizieren des Clients

Instanziieren Sie einen Client mit Ihrem Endpunkt und Schlüssel. Erstellen Sie ein „CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials“-Objekt mit Ihrem Schlüssel, und verwenden Sie es mit Ihrem Endpunkt, um ein ContentModeratorClient-Objekt zu erstellen.

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

Moderieren von Text

Der folgende Code verwendet einen Content Moderator-Client zum Analysieren von Text und Ausgeben der Ergebnisse in der Konsole. Erstellen Sie zunächst im Stammverzeichnis Ihres Projekts den Ordner text_files/ , und fügen Sie die Datei content_moderator_text_moderation.txt hinzu. Fügen Sie dieser Datei Ihren eigenen Text hinzu, oder verwenden Sie den folgenden Beispieltext:

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

Fügen Sie einen Verweis auf den neuen Ordner hinzu.

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

Fügen Sie anschließend Ihrem Python-Skript den folgenden Code hinzu:

# 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())

Verwenden einer benutzerdefinierten Begriffsliste

Der folgende Code veranschaulicht, wie Sie eine Liste mit benutzerdefinierten Begriffen für die Textmoderation verwalten. Sie können mit der Klasse ListManagementTermListsOperations eine Begriffsliste erstellen, die einzelnen Begriffe verwalten und anderen Text anhand der Liste überprüfen.

Abrufen von Beispieltext

Wenn Sie dieses Beispiel verwenden möchten, müssen Sie im Stammverzeichnis Ihres Projekts den Ordner text_files/ erstellen und ihm die Datei content_moderator_text_moderation.txt hinzufügen. Diese Datei sollte organischen Text enthalten, der mit der Liste der Begriffe verglichen wird. Sie können den folgenden Beispieltext verwenden:

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

Fügen Sie einen Verweis auf den Ordner hinzu, sofern Sie noch keinen definiert haben.

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

Erstelle eine Liste.

Fügen Sie Ihrem Python-Skript den folgenden Code hinzu, um eine benutzerdefinierte Begriffsliste zu erstellen und ihren ID-Wert zu speichern:

#
# 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

Definieren von Listendetails

Mit der ID einer Liste können Sie den Namen und die Beschreibung der Liste bearbeiten.

#
# 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())

Hinzufügen eines Begriffs zu einer Liste

Der folgende Code fügt der Liste die Begriffe "term1" und "term2" hinzu:

#
# 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"
)

Abrufen aller Begriffe in der Liste

Sie können die Listen-ID verwenden, um alle Begriffe in der Liste zurückzugeben.

#
# 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())

Aktualisieren des Listenindex

Wenn Sie der Liste Begriffe hinzufügen bzw. Begriffe daraus entfernen, müssen Sie den Index aktualisieren, damit Sie die aktualisierte Liste verwenden können.

#
# 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)

Überprüfen von Text anhand der Liste

Die benutzerdefinierte Begriffsliste dient hauptsächlich dazu, Text mit der Liste zu vergleichen und zu ermitteln, ob übereinstimmende Begriffe vorhanden sind.

#
# 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())

Entfernen eines Begriffs aus einer Liste

Mit dem folgenden Code wird der Begriff "term1" aus der Liste entfernt:

#
# 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"
)

Entfernen aller Begriffe aus einer Liste

Verwenden Sie den folgenden Code, um alle Begriffe in einer Liste zu löschen:

#
# 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")

Löschen einer Liste

Löschen Sie eine benutzerdefinierte Begriffsliste mithilfe des folgenden Codes:

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

Moderieren von Bildern

Der folgende Code verwendet einen Content Moderator-Client und ein ImageModerationOperations-Objekt, um Bilder auf nicht jugendfreie und freizügige Inhalte zu analysieren.

Abrufen von Beispielbildern

Legen Sie einen Verweis auf einige zu analysierende Bilder fest.

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

Fügen Sie dann den folgenden Code hinzu, um die Bilder zu durchlaufen. Der Rest des Codes in diesem Abschnitt wird in diese Schleife eingefügt.

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

Überprüfen von Bildern auf nicht jugendfreie/freizügige Inhalte

Der folgende Code überprüft das Bild unter der angegebenen URL auf nicht jugendfreie oder freizügige Inhalte und gibt die Ergebnisse in der Konsole aus. Informationen zur dieser Begriffe finden Sie im Leitfaden zu Bildmoderationskonzepten.

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

Überprüfen auf sichtbaren Text

Der folgende Code überprüft das Bild auf sichtbaren Text und gibt die Ergebnisse in der Konsole aus.

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

Überprüfen auf Gesichter

Der folgende Code überprüft das Bild auf menschliche Gesichter und gibt die Ergebnisse in der Konsole aus.

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

Verwenden einer benutzerdefinierten Bildliste

Der folgende Code veranschaulicht, wie Sie eine benutzerdefinierte Liste mit Bildern für die Bildmoderation verwalten. Dies ist ein nützliches Feature, wenn Ihre Plattform häufig die gleichen Bilder empfängt, die Sie herausfiltern möchten. Durch das Führen einer Liste mit diesen bestimmten Bildern können Sie die Leistung steigern. Mit der ListManagementImageListsOperations-Klasse können Sie eine Bildliste erstellen, die einzelnen Bilder in der Liste verwalten und andere Bilder damit vergleichen.

Erstellen Sie die folgenden Textvariablen zum Speichern der Bild-URLs, die Sie in diesem Szenario verwenden.

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"
]

Hinweis

Dabei handelt sich nicht um die richtige Liste, sondern eine informelle Liste mit Bildern, die im Abschnitt add images des Codes hinzugefügt werden.

Erstellen einer Bildliste

Fügen Sie den folgenden Code hinzu, um eine Bildliste zu erstellen und einen Verweis auf ihre ID zu speichern.

#
# 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

Hinzufügen von Bildern zu einer Liste

Mit dem folgenden Code werden alle Bilder der Liste hinzugefügt.

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

Definieren Sie die Hilfsfunktion add_images an anderer Stelle im Skript.

#
# 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

Abrufen der Bilder in einer Liste

Der folgende Code gibt die Namen aller Bilder in der Liste aus.

#
# 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())

Aktualisieren von Listendetails

Mit der Listen-ID können Sie den Namen und die Beschreibung der Liste aktualisieren.

#
# 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())

Abrufen von Listendetails

Verwenden Sie den folgenden Code, um die aktuellen Details der Liste auszugeben:

#
# 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())

Aktualisieren des Listenindex

Nach dem Hinzufügen oder Entfernen von Bildern müssen Sie den Listenindex aktualisieren, bevor Sie ihn zum Überprüfen anderer Bilder verwenden können.

#
# 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)

Abgleichen der Bilder mit der Liste

Die Hauptfunktion von Bildlisten besteht darin, neue Bilder zu vergleichen und festzustellen, ob Übereinstimmungen vorhanden sind.

#
# 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())

Entfernen eines Bilds aus der Liste

Mit dem folgenden Code wird ein Element aus der Liste entfernt. In diesem Fall handelt es sich um ein Bild, das nicht mit der Listenkategorie übereinstimmt.

#
# 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]
)

Entfernen aller Bilder aus einer Liste

Verwenden Sie den folgenden Code, um eine Bildliste zu bereinigen:

#
# 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)

Löschen der Bildliste

Verwenden Sie den folgenden Code, um eine bestimmte Bildliste zu löschen:

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

Ausführen der Anwendung

Führen Sie die Anwendung mit dem Befehl python für die Schnellstartdatei aus.

python quickstart-file.py

Bereinigen von Ressourcen

Wenn Sie ein Azure KI Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie die Content Moderator-Python-Bibliothek zum Ausführen von Moderationsaufgaben verwenden. Im Anschluss können Sie sich im konzeptionellen Leitfaden ausführlicher über die Moderation von Bildern oder anderen Medien informieren.

Hier finden Sie Informationen zu den ersten Schritten mit der Azure Content Moderator-REST-API.

Content Moderator ist ein KI-Dienst für die Behandlung potenziell anstößiger, riskanter oder anderweitig unerwünschter Inhalte. Verwenden Sie den KI-gestützten Dienst zur Inhaltsmoderation, um Text, Bilder und Videos zu scannen und Inhaltsflags automatisch anzuwenden. Integrieren Sie Software zur Inhaltsfilterung in Ihre App, um gesetzliche Vorschriften einzuhalten oder Benutzern die für sie beabsichtigte Umgebung zu bieten.

Verwenden Sie die Content Moderator-REST-API für Folgendes:

  • Moderieren von Text
  • Moderieren von Bildern

Voraussetzungen

  • Azure-Abonnement – Erstellen eines kostenlosen Kontos
  • Wenn Sie über ein Azure-Abonnement verfügen, können Sie im Azure-Portal eine Content Moderator-Ressource erstellen, um Ihren Schlüssel und Endpunkt abzurufen. Warten Sie ihre Bereitstellung ab, und klicken Sie auf die Schaltfläche Zu Ressource wechseln.
    • Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um für Ihre Anwendung eine Verbindung mit Content Moderator herzustellen. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.
    • Sie können den kostenlosen Tarif (F0) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.
  • PowerShell-Version 6.0 oder höher oder eine ähnliche Befehlszeilenanwendung

Moderieren von Text

Die Content Moderator-API kann mit einem Befehl wie dem folgenden aufgerufen werden, um einen Text zu analysieren und die Ergebnisse in der Konsole auszugeben:

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"

Kopieren Sie den Befehl in einen Text-Editor, und nehmen Sie folgende Änderungen vor:

  1. Weisen Sie Ocp-Apim-Subscription-Key Ihrem gültigen Abonnementschlüssel für die Gesichtserkennung zu.

    Wichtig

    Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

  2. Ändern Sie den ersten Teil der Abfrage-URL so, dass er dem Endpunkt für Ihren Abonnementschlüssel entspricht.

    Hinweis

    Neue Ressourcen, die nach dem 1. Juli 2019 erstellt wurden, verwenden benutzerdefinierte Unterdomänennamen. Weitere Informationen und eine vollständige Liste mit regionalen Endpunkten finden Sie unter Benutzerdefinierte Unterdomänennamen für Azure KI Services.

  3. Ändern Sie optional den Text der Anforderung in eine beliebige Textzeichenfolge, die Sie analysieren möchten.

Wenn Sie die gewünschten Änderungen vorgenommen haben, öffnen Sie eine Eingabeaufforderung, und geben Sie den neuen Befehl ein.

Untersuchen der Ergebnisse

Die Ergebnisse der Textmoderation sollten als JSON-Daten im Konsolenfenster angezeigt werden. Beispiel:

{
  "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"
}

Weitere Informationen zu den von Content Moderator untersuchten Textattributen finden Sie im Leitfaden zu Textmoderationskonzepten.

Moderieren von Bildern

Die Content Moderator-API kann mit einem Befehl wie dem folgenden aufgerufen werden, um ein Remotebild zu moderieren und die Ergebnisse in der Konsole auszugeben:

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\"}"

Kopieren Sie den Befehl in einen Text-Editor, und nehmen Sie folgende Änderungen vor:

  1. Weisen Sie Ocp-Apim-Subscription-Key Ihrem gültigen Abonnementschlüssel für die Gesichtserkennung zu.
  2. Ändern Sie den ersten Teil der Abfrage-URL so, dass er dem Endpunkt für Ihren Abonnementschlüssel entspricht.
  3. Ändern Sie optional die URL "Value" im Anforderungstext in das gewünschte Remotebild für die Moderation.

Tipp

Sie können auch lokale Bilder moderieren, indem Sie deren Bytedaten an den Anforderungstext übergeben. Eine entsprechende Anleitung finden Sie in der Referenzdokumentation.

Wenn Sie die gewünschten Änderungen vorgenommen haben, öffnen Sie eine Eingabeaufforderung, und geben Sie den neuen Befehl ein.

Untersuchen der Ergebnisse

Die Ergebnisse der Bildmoderation sollten als JSON-Daten im Konsolenfenster angezeigt werden.

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

Weitere Informationen zu den Bildattributen, die von Content Moderator untersucht werden, finden Sie im Leitfaden zu Bildmoderationskonzepten.

Bereinigen von Ressourcen

Wenn Sie ein Azure KI Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie die Content Moderator-REST-API für Moderationsaufgaben verwenden. Im Anschluss können Sie sich im konzeptionellen Leitfaden ausführlicher über die Moderation von Bildern oder anderen Medien informieren.