Início Rápido: Usar a biblioteca de clientes do Content Moderator

Importante

O Content Moderator do Azure está sendo preterido em fevereiro de 2024 e será desativado até fevereiro de 2027. Ele está sendo substituído pelo Azure AI Content Safety, que oferece recursos avançados de IA e desempenho aprimorado.

A Segurança de Conteúdo de IA do Azure é uma solução abrangente projetada para detectar conteúdo gerado pelo usuário prejudicial e gerado por IA em aplicativos e serviços. A Segurança de Conteúdo de IA do Azure é adequada para muitos cenários, como marketplaces online, empresas de jogos, plataformas de mensagens sociais, empresas de mídia corporativa e provedores de soluções de educação K-12. Aqui está uma visão geral de seus recursos e funcionalidades:

  • APIs de detecção de texto e imagem: examina texto e imagens em busca de conteúdo sexual, violência, ódio e automutilação com vários níveis de gravidade.
  • Content Safety Studio: uma ferramenta online projetada para lidar com conteúdo potencialmente ofensivo, arriscado ou indesejável usando nossos mais recentes modelos de ML de moderação de conteúdo. Ele fornece modelos e fluxos de trabalho personalizados que permitem aos usuários criar seus próprios sistemas de moderação de conteúdo.
  • Suporte a idiomas: a Segurança de Conteúdo do IA do Azure dá suporte a mais de 100 idiomas e é especificamente treinado em inglês, alemão, japonês, espanhol, francês, italiano, português e chinês.

A Segurança de Conteúdo de IA do Azure fornece uma solução robusta e flexível para suas necessidades de moderação de conteúdo. Ao alternar do Content Moderator para a Segurança de Conteúdo de IA do Azure, você pode aproveitar as ferramentas e tecnologias mais recentes para garantir que seu conteúdo seja sempre moderado às suas especificações exatas.

Saiba mais sobre a Segurança de Conteúdo de IA do Azure e explore como ela pode elevar sua estratégia de moderação de conteúdo.

Introdução à biblioteca de clientes do Content Moderator do Azure para .NET. Siga essas etapas para instalar o pacote do NuGet e testar o código de exemplo para tarefas básicas.

O Content Moderator é um serviço de IA que permite que você lide com conteúdos potencialmente ofensivos, arriscados ou, de alguma outra forma, indesejáveis. Use o serviço de moderação de conteúdo baseado em IA para digitalizar texto, imagem e vídeos e aplicar sinalizadores de conteúdo automaticamente. Insira software de filtragem de conteúdo em seu aplicativo para obedecer a regulamentos ou manter o ambiente pretendido para seus usuários.

Use a biblioteca de clientes do Content Moderator para .NET para:

  • Moderar texto
  • Moderar imagens

Documentação de referência | Código-fonte da biblioteca | Pacote (NuGet) | Exemplos

Pré-requisitos

  • Assinatura do Azure – Criar uma gratuitamente
  • O IDE do Visual Studio ou a versão atual do .NET Core.
  • Depois de obter uma assinatura do Azure, crie um recurso do Content Moderator no portal do Azure para obter uma chave e um ponto de extremidade. Aguarde até que ele seja implantado e clique no botão Ir para o recurso.
    • Será necessário obter uma chave e um ponto de extremidade do recurso criado para conectar o aplicativo ao Content Moderator. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um aplicativo em C#

Usando o Visual Studio, crie um aplicativo .NET Core.

Instalar a biblioteca de clientes

Depois de criar um projeto, instale a biblioteca de clientes clicando com o botão direito do mouse na solução do projeto no Gerenciador de Soluções e selecionando Gerenciar Pacotes NuGet. No gerenciador de pacotes aberto, selecione Procurar, marque Incluir pré-lançamento e pesquise Microsoft.Azure.CognitiveServices.ContentModerator. Selecione a versão 2.0.0 e, em seguida, Instalar.

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

No diretório do projeto, abra o arquivo Program.cs no IDE ou no editor de sua preferência. Adicione as seguintes declarações de 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;

Na classe Program, crie variáveis para a chave e o ponto de extremidade do recurso.

Importante

Acesse o portal do Azure. Caso o recurso do Content Moderator criado na seção Pré-requisitos tenha sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave e o ponto de extremidade na página da chave e do ponto de extremidade do recurso, em gerenciamento de recursos.

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

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.

No método main() do aplicativo, adicione chamadas para os métodos usados neste início rápido. Elas serão criadas posteriormente.

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

Modelo de objeto

As classes a seguir tratam de alguns dos principais recursos da biblioteca de clientes do .NET do Content Moderator.

Nome Descrição
ContentModeratorClient Essa classe é necessária para toda a funcionalidade do Content Moderator. Você a instancia com suas informações de assinatura e a usa para produzir instâncias de outras classes.
ImageModeration Essa classe fornece a funcionalidade para analisar imagens de conteúdo para adulto, informações pessoais ou rostos humanos.
TextModeration Essa classe fornece a funcionalidade para analisar o texto de idioma, profanação, erros e informações pessoais.

Exemplos de código

Estes snippets de códigos mostram como realizar as seguintes tarefas com a biblioteca de clientes do Content Moderator para .NET:

Autenticar o cliente

Em um novo método, crie uma instância de objetos do cliente com o ponto de extremidade e a chave.

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

    return client;
}

Moderar texto

O código a seguir usa um cliente do Content Moderator para analisar um corpo de texto e imprimir os resultados no console. Na raiz de sua classe Program, defina os arquivos de entrada e saída:

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

Depois, na raiz do projeto, adicione um arquivo TextFile.txt. Adicione seu próprio texto a este arquivo ou use o seguinte texto de exemplo:

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

Em seguida, defina o método de moderação de texto em algum lugar de sua classe 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();
}

Moderar imagens

O seguinte código usa um cliente do Content Moderator, em conjunto com um objeto ImageModeration, para analisar imagens remotas para detectar conteúdo adulto e obsceno.

Observação

Você também pode analisar o conteúdo de uma imagem local. Consulte a documentação de referência para ver métodos e operações que funcionam com imagens locais.

Obter imagens de exemplo

Defina os arquivos de entrada e saída na raiz da classe 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";

Em seguida, crie o arquivo de entrada, ImageFiles.txt, na raiz do projeto. Nesse arquivo, você adiciona as URLs de imagens a serem analisadas. Uma URL em cada linha. Use as seguintes imagens de exemplo:

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

Definir a classe auxiliar

Adicione a seguinte definição de classe dentro da classe Program. Essa classe interna manipulará os resultados da moderação de imagem.

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

Definir o método de moderação de imagem

O método a seguir itera as URLs de imagem em um arquivo de texto, cria uma instância de EvaluationData e analisa a imagem para detectar conteúdo adulto/erótico, texto e rostos humanos. Em seguida, ele adiciona a instância final de EvaluationData a uma lista e grava a lista completa de dados retornados no console.

Iterar as imagens

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

Analisar conteúdo

Para obter mais informações sobre os atributos de imagem que o Content Moderator avalia, consulte o guia Conceitos de moderação de imagem.

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

Gravar os resultados da moderação em arquivo

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

Executar o aplicativo

Execute o aplicativo clicando no botão Depurar na parte superior da janela do IDE.

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços de IA do Azure, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste início rápido, você aprendeu a usar a biblioteca .NET do Content Moderator para realizar tarefas de moderação. Em seguida, saiba mais sobre a moderação de imagens ou outra mídia lendo um guia conceitual.

Introdução à biblioteca de clientes do Content Moderator do Azure para Java. Siga essas etapas para instalar o pacote do Maven e testar o código de exemplo para tarefas básicas.

O Content Moderator é um serviço de IA que permite que você lide com conteúdos potencialmente ofensivos, arriscados ou, de alguma outra forma, indesejáveis. Use o serviço de moderação de conteúdo baseado em IA para digitalizar texto, imagem e vídeos e aplicar sinalizadores de conteúdo automaticamente. Insira software de filtragem de conteúdo em seu aplicativo para obedecer a regulamentos ou manter o ambiente pretendido para seus usuários.

Use a biblioteca de clientes do Content Moderator para Java para:

  • Moderar texto
  • Moderar imagens

Documentação de referência | Código-fonte da biblioteca |Artefato (Maven) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • A versão atual do JDK (Java Development Kit)
  • A ferramenta de build Gradle ou outro gerenciador de dependência.
  • Depois de obter uma assinatura do Azure, crie um recurso do Content Moderator no portal do Azure para obter uma chave e um ponto de extremidade. Aguarde até que ele seja implantado e clique no botão Ir para o recurso.
    • Será necessário obter uma chave e um ponto de extremidade do recurso criado para conectar o aplicativo ao Content Moderator. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um novo projeto Gradle

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele.

mkdir myapp && cd myapp

Execute o comando gradle init em seu diretório de trabalho. Esse comando criará arquivos de build essenciais para o Gradle, incluindo o build.gradle.kts, que é usado no runtime para criar e configurar seu aplicativo.

gradle init --type basic

Quando solicitado a escolher uma DSL, escolha Kotlin.

Instalar a biblioteca de clientes

Localize o build.gradle.kts e abra-o com seu IDE ou editor de texto preferencial. Depois copie nessa configuração de build a seguir. Essa configuração define o projeto como um aplicativo Java cujo ponto de entrada é a classe ContentModeratorQuickstart. Ela importa a biblioteca de clientes do Content Moderator e o SDK do GSON para a serialização 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")
}

Criar um arquivo Java

Em seu diretório de trabalho, execute o comando a seguir para criar uma pasta de origem do projeto:

mkdir -p src/main/java

Navegue até a nova pasta e crie um arquivo chamado ContentModeratorQuickstart.java. Abra-a no editor ou IDE de sua preferência e adicione as seguintes instruções 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.*;

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Na classe ContentModeratorQuickstart do aplicativo, crie variáveis para a chave e o ponto de extremidade do recurso.

Importante

Acesse o portal do Azure. Caso o recurso do Content Moderator criado na seção Pré-requisitos tenha sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave e o ponto de extremidade na página da chave e do ponto de extremidade do recurso, em gerenciamento de recursos.

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

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.

No método main do aplicativo, adicione chamadas para os métodos usados neste guia de início rápido. Você definirá esses métodos mais tarde.

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

Modelo de objeto

As classes a seguir tratam de alguns dos principais recursos da biblioteca de clientes do Java do Content Moderator.

Nome Descrição
ContentModeratorClient Essa classe é necessária para toda a funcionalidade do Content Moderator. Você a instancia com suas informações de assinatura e a usa para produzir instâncias de outras classes.
ImageModeration Essa classe fornece a funcionalidade para analisar imagens de conteúdo para adulto, informações pessoais ou rostos humanos.
TextModerations Essa classe fornece a funcionalidade para analisar o texto de idioma, profanação, erros e informações pessoais.

Exemplos de código

Estes snippets de códigos mostram como realizar as seguintes tarefas com a biblioteca de clientes do Content Moderator para Java:

Autenticar o cliente

No método main do aplicativo, crie um objeto ContentModeratorClient usando o valor do ponto de extremidade da assinatura e a chave de assinatura.

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

Moderar texto

Configurar texto de exemplo

Na parte superior da classe ContentModeratorQuickstart, defina uma referência a um arquivo de texto local. Adicione um arquivo .txt ao diretório do projeto e insira o texto que você deseja analisar.

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

Analisar o texto

Crie um método que leia o arquivo .txt e chame o método screenText em cada linha.

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

Adicione o código a seguir para imprimir os resultados de moderação em um arquivo .JSON no diretório do projeto.

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

Feche try e adicione uma instrução catch para concluir o método.

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

Moderar imagens

Configurar imagem de exemplo

Em um novo método, crie um objeto BodyModelModel com determinada cadeia de caracteres que aponte para uma imagem.

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

Definir a classe auxiliar

Em seguida, no seu arquivo ContentModeratorQuickstart.java, adicione a seguinte definição de classe dentro da classe ContentModeratorQuickstart. Essa classe interna é usada no processo de moderação da imagem.

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

Analisar conteúdo

Essa linha de código verifica a imagem na URL fornecida quanto a conteúdo para adulto ou erótico. Consulte o guia conceitual de moderação de imagem para obter informações sobre esses termos.

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

Verificar se há texto

Essa linha de código verifica a imagem quanto a texto visível.

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

Verificar se há rostos

Essa linha de código verifica a imagem quanto a rostos humanos.

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

Por fim, armazene as informações retornadas na lista EvaluationData.

resultsList.add(imageData);

Após o loop while, adicione o código a seguir, que imprime os resultados no console e em um arquivo de saída, 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();

Feche a instrução try e adicione uma instrução catch para concluir o método.

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

Executar o aplicativo

É possível criar o aplicativo com:

gradle build

Execute o aplicativo com o comando gradle run:

gradle run

Em seguida, navegue até o arquivo src/main/resources/ModerationOutput.json e exiba os resultados da sua moderação de conteúdo.

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços de IA do Azure, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a usar a biblioteca Java do Content Moderator para realizar tarefas de moderação. Em seguida, saiba mais sobre a moderação de imagens ou outra mídia lendo um guia conceitual.

Introdução à biblioteca de clientes do Content Moderator do Azure para Python. Siga essas etapas para instalar o pacote PiPy e testar o código de exemplo para tarefas básicas.

O Content Moderator é um serviço de IA que permite que você lide com conteúdos potencialmente ofensivos, arriscados ou, de alguma outra forma, indesejáveis. Use o serviço de moderação de conteúdo baseado em IA para digitalizar texto, imagem e vídeos e aplicar sinalizadores de conteúdo automaticamente. Insira software de filtragem de conteúdo em seu aplicativo para obedecer a regulamentos ou manter o ambiente pretendido para seus usuários.

Use a biblioteca de clientes do Content Moderator para Python para:

  • Moderar texto
  • Usar uma lista de termos personalizados
  • Moderar imagens
  • Usar uma lista de imagem personalizada

Documentação de referência | Código-fonte da biblioteca | Pacote (PiPy) | Exemplos

Pré-requisitos

  • Assinatura do Azure – Criar uma gratuitamente
  • Python 3.x
    • A instalação do Python deve incluir o pip. Você pode executar pip --version na linha de comando para verificar se o pip está instalado. Instale a versão mais recente do Python para obter o pip.
  • Depois de obter uma assinatura do Azure, crie um recurso do Content Moderator no portal do Azure para obter uma chave e um ponto de extremidade. Aguarde até que ele seja implantado e clique no botão Ir para o recurso.
    • Será necessário obter uma chave e um ponto de extremidade do recurso criado para conectar o aplicativo ao Content Moderator. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Instalar a biblioteca de clientes

Após instalar o Python, você pode instalar a biblioteca de clientes do Content Moderator com o seguinte comando:

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

Criar um novo aplicativo Python

Crie um novo script do Python e abra-o em seu IDE ou editor preferido. Depois, adicione as seguintes instruções import à parte superior do arquivo.

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

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Em seguida, crie variáveis para a localização do ponto de extremidade do recurso e a chave.

Importante

Acesse o portal do Azure. Caso o recurso do Content Moderator criado na seção Pré-requisitos tenha sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave e o ponto de extremidade na página da chave e do ponto de extremidade do recurso, em gerenciamento de recursos.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.

Modelo de objeto

As classes a seguir tratam de alguns dos principais recursos da biblioteca de clientes do Python do Content Moderator.

Nome Descrição
ContentModeratorClient Essa classe é necessária para toda a funcionalidade do Content Moderator. Você a instancia com suas informações de assinatura e a usa para produzir instâncias de outras classes.
ImageModerationOperations Essa classe fornece a funcionalidade para analisar imagens de conteúdo para adulto, informações pessoais ou rostos humanos.
TextModerationOperations Essa classe fornece a funcionalidade para analisar o texto de idioma, profanação, erros e informações pessoais.

Exemplos de código

Estes snippets de códigos mostram como realizar as seguintes tarefas com a biblioteca de clientes do Content Moderator para Python:

Autenticar o cliente

Instancie um cliente com o ponto de extremidade e a chave. Crie um objeto CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials com sua chave e use-o com o ponto de extremidade para criar um objeto ContentModeratorClient.

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

Moderar texto

O código a seguir usa um cliente do Content Moderator para analisar um corpo de texto e imprimir os resultados no console. Primeiro, crie uma pasta text_files/ na raiz do seu projeto e adicione um arquivo content_moderator_text_moderation. txt. Adicione seu próprio texto a este arquivo ou use o seguinte texto de exemplo:

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

Adicione uma referência à nova pasta.

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

Depois, adicione o seguinte código ao script do 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())

Usar uma lista de termos personalizados

O código a seguir mostra como gerenciar uma lista de termos personalizados para moderação de texto. Você pode usar a classe ListManagementTermListsOperations para criar uma lista de termos, gerenciar os termos individuais e a tela de outros corpos de texto em relação a ela.

Obter texto de exemplo

Para usar este exemplo, crie uma pasta text_files/ na raiz do seu projeto e adicione um arquivo content_moderator_term_list.txt. Esse arquivo deve conter um texto orgânico que será verificado em relação à lista de termos. Você pode usar o seguinte texto de exemplo:

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

Adicione uma referência à pasta se você ainda não tiver definido uma.

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

Cria uma lista

Adicione o seguinte código ao seu script do Python para criar uma lista de termos personalizados e salvar seu valor de ID.

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

Definir detalhes da lista

Você pode usar a ID da lista para editar seu nome e sua descrição.

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

Adicionar um termo à lista

O código a seguir adiciona os termos "term1" e "term2" à lista.

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

Obter todos os termos da lista

Você pode usar a ID da lista para retornar todos os termos da lista.

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

Atualizar o índice da lista

Sempre que adicionar ou remover termos da lista, você deverá atualizar o índice antes de poder usar a lista atualizada.

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

Texto da tela em relação à lista

A principal funcionalidade da lista de termos personalizados é comparar um corpo de texto com a lista e descobrir se há termos correspondentes.

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

Remover um termo de uma lista

O seguinte código remove o termo "term1" da lista.

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

Excluir todos os termos de uma lista

Use o seguinte código para limpar uma lista de todos os seus termos.

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

Excluir uma lista

Use o código a seguir para excluir uma lista de termos personalizados.

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

Moderar imagens

O seguinte código usa um cliente do Content Moderator, juntamente com um objeto ImageModerationOperations, para analisar imagens de conteúdo adulto e obsceno.

Obter imagens de exemplo

Defina uma referência a algumas imagens para analisar.

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

Depois, adicione o seguinte código para iterar pelas imagens. O restante do código nesta seção entrará nesse loop.

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

Verificar se há conteúdo adulto ou erótico

O seguinte código verifica a imagem na URL fornecida para conteúdo adulto ou obsceno e imprime os resultados no console. Consulte o guia de Conceitos de moderação de imagem para obter informações sobre o que esses termos significam.

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

Verificar texto visível

O código a seguir verifica a imagem em busca de conteúdo de texto visível e imprime os resultados no console.

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

Verificar se há rostos

O código a seguir verifica a imagem em busca de rostos humanos e imprime os resultados no console.

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

Usar uma lista de imagem personalizada

O código a seguir mostra como gerenciar uma lista personalizada de imagens para moderação de imagem. Esse recurso será útil se a plataforma receber com frequência instâncias do mesmo conjunto de imagens que você deseja eliminar. Ao manter uma lista dessas imagens específicas, você pode melhorar o desempenho. A classe ListManagementImageListsOperations permite que você crie uma lista de imagens, gerencie as imagens individuais na lista e compare outras imagens com ela.

Crie as variáveis de texto a seguir para armazenar as URLs de imagem que você usará nesse cenário.

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

Observação

Essa não é a própria lista em si, mas uma lista informal de imagens que será adicionada na seção add images do código.

Criar uma lista de imagens

Adicione o código a seguir para criar uma lista de imagens e salvar uma referência à sua ID.

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

Adicionar imagens a uma lista

O código a seguir adiciona todas as suas imagens à lista.

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

Defina a função auxiliar add_images em outro lugar no seu script.

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

Obter imagens na lista

O código a seguir imprime os nomes de todas as imagens na sua lista.

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

Atualizar detalhes da lista

Você pode usar a ID da lista para atualizar o nome e a descrição da lista.

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

Obter detalhes da lista

Use o código a seguir para imprimir os detalhes atuais da sua lista.

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

Atualizar o índice da lista

Depois de adicionar ou remover imagens, você deve atualizar o índice da lista antes de poder usá-lo para fazer a triagem de imagens.

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

Corresponder as imagens em relação à lista

A função principal das listas de imagens é comparar novas imagens e ver se há quaisquer correspondências.

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

Remover uma imagem da lista

O seguinte código remove um item da lista. Nesse caso, é uma imagem que não corresponde à categoria da lista.

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

Excluir todas as imagens de uma lista

Use o código a seguir para limpar uma lista de imagens.

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

Excluir a lista de imagens

Use o código a seguir para excluir uma determinada lista de imagens.

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

Executar o aplicativo

Execute o aplicativo com o comando python no seu arquivo de início rápido.

python quickstart-file.py

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços de IA do Azure, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a usar a biblioteca Python do Content Moderator para realizar tarefas de moderação. Em seguida, saiba mais sobre a moderação de imagens ou outra mídia lendo um guia conceitual.

Introdução à API REST do Azure Content Moderator.

O Content Moderator é um serviço de IA que permite que você lide com conteúdos potencialmente ofensivos, arriscados ou, de alguma outra forma, indesejáveis. Use o serviço de moderação de conteúdo baseado em IA para digitalizar texto, imagem e vídeos e aplicar sinalizadores de conteúdo automaticamente. Insira software de filtragem de conteúdo em seu aplicativo para obedecer a regulamentos ou manter o ambiente pretendido para seus usuários.

Use a API REST do Content Moderator para:

  • Moderar texto
  • Moderar imagens

Pré-requisitos

  • Assinatura do Azure – Criar uma gratuitamente
  • Depois de obter uma assinatura do Azure, crie um recurso do Content Moderator no portal do Azure para obter uma chave e um ponto de extremidade. Aguarde até que ele seja implantado e clique no botão Ir para o recurso.
    • Será necessário obter uma chave e um ponto de extremidade do recurso criado para conectar o aplicativo ao Content Moderator. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.
  • PowerShell versão 6.0+ ou um aplicativo de linha de comando semelhante.

Moderar texto

Você usará um comando como este a seguir para chamar a API do Content Moderator para analisar um corpo de texto e imprimir os resultados no console.

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"

Copie o comando para um editor de texto e faça as seguintes alterações:

  1. Atribua Ocp-Apim-Subscription-Key à sua chave de assinatura de Detecção Facial válida.

    Importante

    Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.

  2. Altere a primeira parte da URL de consulta para que ela corresponda ao ponto de extremidade referente à sua chave de assinatura.

    Observação

    Os novos recursos criados após 1º de julho de 2019 usarão nomes de subdomínio personalizados. Para obter mais informações e uma lista completa de pontos de extremidade regionais, confira Nomes de subdomínio personalizados para os serviços de IA do Azure.

  3. Opcionalmente, altere o corpo da solicitação para qualquer cadeia de caracteres de texto que você queira analisar.

Depois de fazer suas alterações, abra um prompt de comando e digite o novo comando.

Examinar os resultados

Você verá os resultados de moderação de texto exibidos como dados JSON na janela do console. Por exemplo:

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

Para obter mais informações sobre os atributos de texto que o Content Moderator avalia, confira o guia Conceitos de moderação de texto.

Moderar imagens

Você usará um comando como este a seguir para chamar a API do Content Moderator para moderar uma imagem remota e imprimir os resultados no console.

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

Copie o comando para um editor de texto e faça as seguintes alterações:

  1. Atribua Ocp-Apim-Subscription-Key à sua chave de assinatura de Detecção Facial válida.
  2. Altere a primeira parte da URL de consulta para que ela corresponda ao ponto de extremidade referente à sua chave de assinatura.
  3. Opcionalmente, altere a URL de "Value" no corpo da solicitação para qualquer imagem remota que você gostaria de moderar.

Dica

Você também pode moderar imagens locais, passando os dados de byte para o corpo da solicitação. Confira a documentação de referência para saber mais sobre como fazer isso.

Depois de fazer suas alterações, abra um prompt de comando e digite o novo comando.

Examinar os resultados

Você verá os resultados de moderação de imagem exibidos como dados JSON na janela do console.

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

Para obter mais informações sobre os atributos de imagem que o Content Moderator avalia, consulte o guia Conceitos de moderação de imagem.

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços de IA do Azure, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a usar a API REST do Content Moderator para realizar tarefas de moderação. Em seguida, saiba mais sobre a moderação de imagens ou outra mídia lendo um guia conceitual.