Краткое руководство по использованию клиентской библиотеки Content Moderator

Важно

Azure Content Moderator устарел по состоянию на февраль 2024 г. и будет прекращен 15 марта 2027 г. Он заменен Безопасность содержимого ИИ Azure, который предлагает расширенные функции ИИ и улучшенную производительность.

Безопасность содержимого ИИ Azure — это комплексное решение, предназначенное для обнаружения вредного содержимого, созданного пользователем и искусственного интеллекта в приложениях и службах. Безопасность содержимого ИИ Azure подходит для многих сценариев, таких как интернет-магазины, игровые компании, платформы социальных сообщений, корпоративные медиа-компании и поставщики решений для образования K-12. Ниже приведен обзор ее функций и возможностей.

  • API обнаружения текста и изображений: сканировать текст и изображения для сексуального содержимого, насилия, ненависти и самоповредения с несколькими уровнями серьезности.
  • Content Safety Studio: онлайн-инструмент, предназначенный для обработки потенциально оскорбительных, рискованных или нежелательных содержимого с помощью наших последних моделей модерации содержимого машинного обучения. Он предоставляет шаблоны и настраиваемые рабочие процессы, позволяющие пользователям создавать собственные системы модерации контента.
  • Поддержка языков Language: Безопасность содержимого ИИ Azure поддерживает более 100 языков и специально обучен на английском, немецком, японском, испанском, французском, итальянском, португальском и китайском языках.

Безопасность содержимого ИИ Azure предоставляет надежное и гибкое решение для потребностей модерации содержимого. Переключившись с Content Moderator на Безопасность содержимого ИИ Azure, вы можете воспользоваться новейшими инструментами и технологиями, чтобы убедиться, что содержимое всегда модерируется в соответствии с вашими точными спецификациями.

Узнайте больше об Безопасность содержимого ИИ Azure и узнайте, как она может повысить стратегию модерации контента.

Начало работы с клиентской библиотекой Content Moderator Azure для .NET. Выполните следующие действия, чтобы установить пакет NuGet и попробовать пример кода для основных задач.

Content Moderator — это служба искусственного интеллекта, которая позволяет обрабатывать содержимое, потенциально опасное или нежелательное. Используйте службу модерации содержимого с поддержкой ИИ для автоматического сканирования текста, изображения и видео и автоматического применения флагов содержимого. Создайте программное обеспечение фильтрации содержимого в приложении, чтобы соответствовать нормативным требованиям или поддерживать предназначенную среду для пользователей.

Используйте клиентскую библиотеку Content Moderator для .NET:

  • Умеренный текст
  • Умеренные изображения

Справочная документация | Исходный код библиотеки | Пакет (NuGet) | Примеры

Необходимые условия

  • подписка Azure — Создайте учетную запись бесплатно
  • Visual Studio IDE или текущая версия .NET Core.
  • После получения подписки Azure создайте ресурс Content Moderator на портале Azure, чтобы получить ключ и конечную точку. Дождитесь развертывания и нажмите кнопку "Перейти к ресурсу ".
    • Вам потребуется ключ и конечная точка из ресурса, создаваемого для подключения приложения к Content Moderator. Вы вставите ключ и конечную точку URL в код, приведенный ниже в этом кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.

Настройка

Создание приложения C#

С помощью Visual Studio создайте новое приложение .NET Core.

Установка клиентской библиотеки

После создания нового проекта установите клиентскую библиотеку, щелкнув правой кнопкой мыши решение проекта в Обозреватель решений и выбрав Манаж пакетов NuGet. В открытом диспетчере пакетов выберите Browse, проверьте Include prerelease и найдите Microsoft.Azure.CognitiveServices.ContentModerator. Выберите версию 2.0.0и установите ее.

Совет

Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.

В каталоге проекта откройте файл Program.cs в предпочтительном редакторе или интегрированной среде разработки. Добавьте следующие 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;

В классе Program создайте переменные для ключа и конечной точки ресурса.

Важно

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в разделе предварительных требований , развернут успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключ и конечная точка можно найти на странице ключа и конечной точки ресурса в разделе управления ресурсами.

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

Важно

Не забудьте удалить ключ из кода после завершения и никогда не публиковать его публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Azure Key Vault. Дополнительные сведения см. в статье Azure AI services security.

В методе main() приложения добавьте вызовы методов, используемых в этом кратком руководстве. Вы создадите их позже.

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

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator .NET.

Имя Описание
ContentModeratorClient Этот класс необходим для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других объектов классов.
ImageModeration Этот класс предоставляет функциональные возможности для анализа изображений для содержимого для взрослых, личных данных или человеческих лиц.
TextModeration Этот класс предоставляет функциональные возможности для анализа текста для языка, ненормативной лексики, ошибок и личных данных.

Примеры кода

Эти фрагменты кода показывают, как выполнять следующие задачи с клиентской библиотекой Content Moderator для .NET:

Проверка подлинности клиента

В новом методе создайте экземпляры клиентских объектов с помощью конечной точки и ключа.

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

    return client;
}

Умеренный текст

Следующий код использует клиент Content Moderator для анализа текста и печати результатов в консоли. В корневом каталоге класса Program определите входные и выходные файлы:

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

Затем в корне проекта добавьте файлTextFile.txt . Добавьте собственный текст в этот файл или используйте следующий пример текста:

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

Затем определите метод модерации текста где-то в классе 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();
}

Умеренные изображения

В следующем коде используется клиент Content Moderator вместе с объектом ImageModeration для анализа удаленных изображений на предмет содержимого для взрослых и откровенного содержимого.

Примечание

Вы также можете проанализировать содержимое локального образа. См. справочную документацию по методам и операциям, которые работают с локальными изображениями.

Получение примеров изображений

Определите входные и выходные файлы в корне класса 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";

Затем создайте входной файл ImageFiles.txtв корне проекта. В этом файле вы добавите URL-адреса изображений для анализа — по одному URL-адресу в каждой строке. Вы можете использовать следующие примеры изображений:

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

Определение вспомогательного класса

Добавьте следующее определение класса в класс Program . Этот внутренний класс будет обрабатывать результаты модерации изображений.

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

Определение метода модерации изображений

Следующий метод выполняет итерацию по URL-адресам изображений в текстовом файле, создает экземпляр EvaluationData и анализирует изображение на наличие взрослого/пикантного контента, текста и человеческих лиц. Затем он добавляет окончательный экземпляр EvaluationData в список и записывает полный список возвращенных данных в консоль.

Итерация по изображениям

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

Анализ содержимого

Для получения дополнительной информации об атрибутах изображения, которые проверяет Content Moderator, см. руководство по модерации изображений.

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

Запись результатов модерации в файл

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

Запуск приложения

Запустите приложение, нажав кнопку отладки в верхней части окна интегрированной среды разработки.

Очистка ресурсов

Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним.

Дальнейшие действия

Из этого краткого руководства вы узнали, как использовать библиотеку Content Moderator .NET для выполнения задач модерации. Далее узнайте больше о модерации изображений или других носителей, прочитав концептуальное руководство.

Начало работы с клиентской библиотекой Content Moderator Azure для Java. Выполните следующие действия, чтобы установить пакет Maven и попробовать пример кода для основных задач.

Content Moderator — это служба искусственного интеллекта, которая позволяет обрабатывать содержимое, потенциально опасное или нежелательное. Используйте службу модерации содержимого с поддержкой ИИ для автоматического сканирования текста, изображения и видео и автоматического применения флагов содержимого. Создайте программное обеспечение фильтрации содержимого в приложении, чтобы соответствовать нормативным требованиям или поддерживать предназначенную среду для пользователей.

Используйте клиентскую библиотеку Content Moderator для Java:

  • Умеренный текст
  • Умеренные изображения

Справочная документация | Исходный код библиотеки |Артефакт (Maven) | Примеры

Необходимые условия

  • Подписка Azure — Создайте бесплатно
  • Текущая версия пакета средств разработки Java (JDK)
  • Средство сборки Gradle или другой диспетчер зависимостей.
  • После получения подписки Azure создайте ресурс Content Moderator на портале Azure, чтобы получить ключ и конечную точку. Дождитесь развертывания и нажмите кнопку "Перейти к ресурсу ".
    • Вам потребуется ключ и конечная точка из ресурса, создаваемого для подключения приложения к Content Moderator. Вы вставите ключ и конечную точку URL в код, приведенный ниже в этом кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.

Настройка

Создание проекта Gradle

В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите к нему.

mkdir myapp && cd myapp

gradle init Выполните команду из рабочего каталога. Эта команда создаст основные файлы сборки для Gradle, включая build.gradle.kts, который используется во время выполнения для создания и настройки приложения.

gradle init --type basic

При появлении запроса на выбор DSL выберите Kotlin.

Установка клиентской библиотеки

Найдите build.gradle.kts и откройте его с помощью предпочтительной интегрированной среды разработки или текстового редактора. Затем скопируйте следующую конфигурацию сборки. Эта конфигурация определяет проект как приложение Java, точка входа которого является классом ContentModeratorQuickstart. Он импортирует клиентскую библиотеку Content Moderator и библиотеку SDK GSON для сериализации 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")
}

Создание файла Java

В рабочем каталоге выполните следующую команду, чтобы создать исходную папку проекта:

mkdir -p src/main/java

Перейдите к новой папке и создайте файл с именем ContentModeratorQuickstart.java. Откройте его в предпочтительном редакторе или интегрированной среде разработки и добавьте следующие import инструкции:

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

Совет

Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.

В классе ContentModeratorQuickstart приложения создайте переменные для ключа и конечной точки ресурса.

Важно

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в разделе предварительных требований , развернут успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключ и конечная точка можно найти на странице ключа и конечной точки ресурса в разделе управления ресурсами.

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

Важно

Не забудьте удалить ключ из кода после завершения и никогда не публиковать его публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Azure Key Vault. Дополнительные сведения см. в статье Azure AI services security.

В методе main приложения добавьте вызовы методов, используемых в этом кратком введении. Вы определите эти методы позже.

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

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator Java.

Имя Описание
ContentModeratorClient Этот класс необходим для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других объектов классов.
ImageModeration Этот класс предоставляет функциональные возможности для анализа изображений для содержимого для взрослых, личных данных или человеческих лиц.
TextModerations Этот класс предоставляет функциональные возможности для анализа текста для языка, ненормативной лексики, ошибок и личных данных.

Примеры кода

Эти фрагменты кода показывают, как выполнять следующие задачи с клиентской библиотекой Content Moderator для Java:

Проверка подлинности клиента

В методе приложения main создайте объект ContentModeratorClient с помощью значения конечной точки подписки и ключа подписки.

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

Умеренный текст

Настройка примера текста

В верхней части класса ContentModeratorQuickstart определите ссылку на локальный текстовый файл. Добавьте .txt файл в каталог проекта и введите текст, который вы хотите проанализировать.

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

Анализ текста

Создайте новый метод, который считывает файл .txt и вызывает метод screenText в каждой строке.

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

Добавьте следующий код, чтобы распечатать результаты модерации в файл .json в каталоге проекта.

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

Завершите инструкцию try и catch, чтобы окончить метод.

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

Умеренные изображения

Установите образец изображения

В новом методе создайте объект BodyModelModel с заданной строкой URL-адреса, указывающей на изображение.

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

Определение вспомогательного класса

Затем в файле ContentModeratorQuickstart.java добавьте следующее определение класса в класс ContentModeratorQuickstart . Этот внутренний класс используется в процессе модерации изображений.

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

Анализ содержимого

Эта строка кода проверяет изображение по указанному URL-адресу на наличие содержимого для взрослых или непристойного содержимого. Дополнительные сведения об этих терминах см. в концептуальном руководстве по модерации изображений.

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

Проверка текста

Эта строка кода проверяет изображение для видимого текста.

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

Проверка на наличие лиц

Эта строка кода проверяет изображение на наличие лиц человека.

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

Наконец, сохраните возвращенные сведения в списке EvaluationData .

resultsList.add(imageData);

while После цикла добавьте следующий код, который выводит результаты в консоль и в выходной файл, 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();

Закройте инструкцию try и добавьте catch инструкцию для завершения метода.

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

Запуск приложения

Вы можете создать приложение с помощью следующих способов:

gradle build

Запустите приложение командой gradle run.

gradle run

Затем перейдите к файлу src/main/resources/ModerationOutput.json и просмотрите результаты модерации содержимого.

Очистка ресурсов

Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним.

Дальнейшие действия

Из этого краткого руководства вы узнали, как использовать библиотеку Content Moderator Java для выполнения задач модерации. Далее узнайте больше о модерации изображений или других носителей, прочитав концептуальное руководство.

Начало работы с клиентской библиотекой Content Moderator Azure для Python. Выполните следующие действия, чтобы установить пакет PiPy и попробовать пример кода для основных задач.

Content Moderator — это служба искусственного интеллекта, которая позволяет обрабатывать содержимое, потенциально опасное или нежелательное. Используйте службу модерации содержимого с поддержкой ИИ для автоматического сканирования текста, изображения и видео и автоматического применения флагов содержимого. Создайте программное обеспечение фильтрации содержимого в приложении, чтобы соответствовать нормативным требованиям или поддерживать предназначенную среду для пользователей.

Использование клиентской библиотеки Content Moderator для Python:

  • Умеренный текст
  • Использование настраиваемого списка терминов
  • Умеренные изображения
  • Использование настраиваемого списка изображений

Справочная документация | Исходный код библиотеки | Пакет (PiPy) | Примеры

Необходимые условия

  • подписка Azure — Создайте учетную запись бесплатно
  • Python 3.x
    • Установка Python должна содержать pip. Вы можете проверить, установлен ли pip, выполнив команду pip --version в командной строке. Получите pip, установив последнюю версию Python.
  • После получения подписки на Azure , чтобы получить ключ и конечную точку на портале Azure. Дождитесь развертывания и нажмите кнопку "Перейти к ресурсу ".
    • Вам потребуется ключ и конечная точка из ресурса, создаваемого для подключения приложения к Content Moderator. Вы вставите ключ и конечную точку URL в код, приведенный ниже в этом кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.

Настройка

Установка клиентской библиотеки

После установки Python можно установить клиентская библиотека Content Moderator со следующей командой:

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

Создание нового приложения Python

Создайте скрипт Python и откройте его в предпочтительном редакторе или интегрированной среде разработки. Затем добавьте следующие import инструкции в начало файла.

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

Совет

Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.

Затем создайте переменные для расположения и ключа конечной точки ресурса.

Важно

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в разделе предварительных требований , развернут успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключ и конечная точка можно найти на странице ключа и конечной точки ресурса в разделе управления ресурсами.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Важно

Не забудьте удалить ключ из кода после завершения и никогда не публиковать его публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Azure Key Vault. Дополнительные сведения см. в статье Azure AI services security.

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator Python.

Имя Описание
ContentModeratorClient Этот класс необходим для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других объектов классов.
ImageModerationOperations Этот класс предоставляет функциональные возможности для анализа изображений для содержимого для взрослых, личных данных или человеческих лиц.
TextModerationOperations Этот класс предоставляет функциональные возможности для анализа текста для языка, ненормативной лексики, ошибок и личных данных.

Примеры кода

Эти фрагменты кода показывают, как выполнять следующие задачи с клиентской библиотекой Content Moderator для Python:

Проверка подлинности клиента

Создайте экземпляр клиента с конечной точкой и ключом. Создайте объект CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials) с вашим ключом и используйте его с вашей конечной точкой для создания объекта ContentModeratorClient.

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

Умеренный текст

Следующий код использует клиент Content Moderator для анализа текста и печати результатов в консоли. Сначала создайте text_files/ папку в корне проекта и добавьте файлcontent_moderator_text_moderation.txt . Добавьте собственный текст в этот файл или используйте следующий пример текста:

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

Добавьте ссылку на новую папку.

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

Затем добавьте следующий код в скрипт 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())

Использование настраиваемого списка терминов

В следующем коде показано, как управлять списком пользовательских терминов для модерации текста. Класс ListManagementTermListsOperations можно использовать для создания списка терминов, управления отдельными терминами и проверки других текстов на соответствие этому списку.

Получение примера текста

Чтобы использовать этот пример, необходимо создать text_files/ папку в корне проекта и добавить файлcontent_moderator_term_list.txt . Этот файл должен содержать естественный текст, который будет проверяться по списку терминов. Вы можете использовать следующий пример текста:

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

Добавьте ссылку на папку, если вы еще не определили ее.

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

Создание списка

Добавьте следующий код в скрипт Python, чтобы создать настраиваемый список терминов и сохранить его значение идентификатора.

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

Определение параметров списка

Идентификатор списка можно использовать для изменения его имени и описания.

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

Добавление термина в список

Следующий код добавляет термины "term1" и "term2" в список.

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

Получите все термины в списке

Идентификатор списка можно использовать для возврата всех терминов в списке.

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

Обновление индекса списка

При добавлении или удалении терминов из списка необходимо обновить индекс, прежде чем использовать обновленный список.

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

Сопоставьте экранный текст со списком

Основными функциями списка пользовательских терминов является сравнение текста с списком и определение того, существуют ли соответствующие термины.

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

Удаление термина из списка

Следующий код удаляет термин "term1" из списка.

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

Удаление всех терминов из списка

Используйте следующий код, чтобы очистить список всех его терминов.

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

Удаление списка

Используйте следующий код для удаления пользовательского списка терминов.

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

Умеренные изображения

В следующем коде используется клиент Content Moderator вместе с объектом ImageModerationOperations для анализа изображений на предмет взрослого и откровенного контента.

Получение примеров изображений

Определите ссылку на некоторые изображения для анализа.

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

Затем добавьте следующий код для итерации по вашим изображениям. Остальная часть кода в этом разделе будет проходить внутри этого цикла.

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

Проверка содержимого для взрослых или откровенного

Следующий код проверяет изображение по указанному URL-адресу на материалы для взрослых или смелое содержание и выводит результаты в консоль. Ознакомьтесь с руководством по модерации изображений для получения сведений о том, что такое термины означают.

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

Проверка видимого текста

Следующий код проверяет изображение для видимого текстового содержимого и выводит результаты в консоль.

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

Проверка на наличие лиц

Следующий код проверяет изображение на наличие человеческих лиц и выводит результаты в консоль.

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

Использование настраиваемого списка изображений

В следующем коде показано, как управлять настраиваемым списком изображений для модерации изображений. Эта функция полезна, если платформа часто получает экземпляры одного набора изображений, которые требуется экранировать. Сохраняя список этих конкретных образов, вы можете повысить производительность. Класс ListManagementImagementListsOperations позволяет создавать список изображений, управлять отдельными изображениями в списке и сравнивать с ним другие изображения.

Создайте следующие текстовые переменные для хранения URL-адресов изображений, которые будут использоваться в этом сценарии.

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

Примечание

Это не правильный список, но неофициальный список изображений, которые будут добавлены в add images разделе кода.

Создание списка изображений

Добавьте следующий код, чтобы создать список изображений и сохранить ссылку на его идентификатор.

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

Добавление изображений в список

Следующий код добавляет все изображения в список.

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

Определите вспомогательные функции add_images в другом месте скрипта.

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

Получить изображения в списке

Следующий код выводит имена всех изображений в списке.

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

Обновление сведений о списке

Идентификатор списка можно использовать для обновления имени и описания списка.

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

Получение сведений о списке

Используйте следующий код, чтобы распечатать текущие сведения о списке.

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

Обновление индекса списка

После добавления или удаления изображений необходимо обновить индекс списка, прежде чем его можно будет использовать для отображения других изображений.

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

Сопоставление изображений со списком

Основной функцией списков изображений является сравнение новых изображений и проверка наличия совпадений.

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

Удаление изображения из списка

Следующий код удаляет элемент из списка. В этом случае это изображение, которое не соответствует категории списка.

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

Удаление всех изображений из списка

Используйте следующий код для очистки списка изображений.

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

Удаление списка изображений

Используйте следующий код для удаления заданного списка изображений.

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

Запуск приложения

Запустите приложение с помощью команды python в вашем файле быстрого запуска.

python quickstart-file.py

Очистка ресурсов

Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним.

Дальнейшие действия

Из этого краткого руководства вы узнали, как использовать библиотеку Content Moderator Python для выполнения задач модерации. Далее узнайте больше о модерации изображений или других носителей, прочитав концептуальное руководство.

Приступайте к работе с Azure Content Moderator REST API.

Content Moderator — это служба искусственного интеллекта, которая позволяет обрабатывать содержимое, потенциально опасное или нежелательное. Используйте службу модерации содержимого с поддержкой ИИ для автоматического сканирования текста, изображения и видео и автоматического применения флагов содержимого. Создайте программное обеспечение фильтрации содержимого в приложении, чтобы соответствовать нормативным требованиям или поддерживать предназначенную среду для пользователей.

Используйте REST API Content Moderator, чтобы:

  • Умеренный текст
  • Умеренные изображения

Необходимые условия

  • подписка Azure — Создайте учетную запись бесплатно
  • После получения подписки Azure создайте ресурс Content Moderator на портале Azure, чтобы получить ключ и конечную точку. Дождитесь развертывания и нажмите кнопку "Перейти к ресурсу ".
    • Вам потребуется ключ и конечная точка из ресурса, создаваемого для подключения приложения к Content Moderator. Вы вставите ключ и конечную точку URL в код, приведенный ниже в этом кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
  • PowerShell версии 6.0+ или аналогичное приложение командной строки.

Умеренный текст

Для вызова Content Moderator API, чтобы проанализировать текст и вывести результаты на консоль, используйте следующую команду.

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"

Скопируйте команду в текстовый редактор и внесите следующие изменения:

  1. Назначьте действительный ключ подписки Face на Ocp-Apim-Subscription-Key.

    Важно

    Не забудьте удалить ключ из кода после завершения и никогда не публиковать его публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Azure Key Vault. Дополнительные сведения см. в статье Azure AI services security.

  2. Измените первую часть URL-адреса запроса, чтобы она соответствовала конечной точке, соответствующей ключу подписки.

    Примечание

    Новые ресурсы, созданные после 1 июля 2019 г., будут использовать пользовательские имена поддомена. Дополнительные сведения и полный список региональных конечных точек см. в разделе "Пользовательские имена поддомена" для средств Foundry.

  3. При необходимости измените текст запроса на любую строку текста, которую вы хотите проанализировать.

После внесения изменений откройте командную строку и введите новую команду.

Изучение результатов

Результаты модерации текста отображаются в виде данных JSON в окне консоли. Например:

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

Дополнительные сведения о текстовых атрибутах, которые проверяются Content Moderator, см. в руководстве «Концепции модерации текста».

Умеренные изображения

Чтобы модерировать удаленное изображение и распечатать результаты в консоли, вы используете следующую команду.

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

Скопируйте команду в текстовый редактор и внесите следующие изменения:

  1. Назначьте действительный ключ подписки Face на Ocp-Apim-Subscription-Key.
  2. Измените первую часть URL-адреса запроса, чтобы она соответствовала конечной точке, соответствующей ключу подписки.
  3. При необходимости измените "Value" URL-адрес в тексте запроса на любое удаленное изображение, которое вы хотите модерировать.

Совет

Вы также можете модерировать локальные изображения, передав их байтовые данные в текст запроса. См. справочную документацию , чтобы узнать, как это сделать.

После внесения изменений откройте командную строку и введите новую команду.

Изучение результатов

Результаты модерации изображений должны отображаться в виде данных 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>"
}

Для получения дополнительной информации об атрибутах изображения, которые проверяет Content Moderator, см. руководство по модерации изображений.

Очистка ресурсов

Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним.

Дальнейшие действия

Из этого краткого руководства вы узнали, как использовать REST API Content Moderator для выполнения задач модерации. Далее узнайте больше о модерации изображений или других носителей, прочитав концептуальное руководство.