Snabbstart: Använda Content Moderator klientbibliotek

Kom igång med Azure Content Moderator klientbibliotek för .NET. Följ de här stegen för att installera NuGet-paketet och prova exempelkoden för grundläggande uppgifter.

Content Moderator är en AI-tjänst som gör att du kan hantera innehåll som är potentiellt stötande, riskabelt eller på annat sätt oönskat. Använd den AI-baserade innehållsmodereringstjänsten för att söka igenom text, bilder och videor och tillämpa innehållsflaggor automatiskt. Integrera sedan din app med granskningsverktyget, en onlinemodermiljö för ett team med mänskliga granskare. Skapa programvara för innehållsfiltrering i din app för att följa regler eller underhålla den avsedda miljön för dina användare.

Använd Content Moderator för .NET för att:

  • Moderera text
  • Moderera bilder
  • Skapa en granskning

Referensdokumentation | Bibliotekskällkod | Paket (NuGet) | Exempel

Förutsättningar

  • Azure-prenumeration – Skapa en utan kostnad
  • Den Visual Studio IDE eller den aktuella versionen av .NET Core.
  • När du har din Azure-prenumeration skapar du Content Moderator resurs för att skapa Content Moderator resurs i Azure Portal för att hämta din nyckel och slutpunkt. Vänta tills den har distribuerats och klicka på knappen Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Content Moderator. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Skapa ett nytt C#-program

Använd Visual Studio skapa ett nytt .NET Core-program.

Installera klientbiblioteket

När du har skapat ett nytt projekt installerar du klientbiblioteket genom att högerklicka på projektlösningen i Solution Explorer och välja Hantera NuGet-paket. I pakethanteraren som öppnas väljer du Bläddra, markerar Inkludera förhandsversion och söker efter Microsoft.Azure.CognitiveServices.ContentModerator . Välj version 2.0.0 och sedan Installera.

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Öppna filen Program.cs i önskad redigerare eller IDE från projektkatalogen. Lägg till följande using-uttryck:

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;

I klassen Program skapar du variabler för resursens nyckel och slutpunkt.

Viktigt

Gå till Azure-portalen. Om den Content Moderator som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din nyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering .

Kom ihåg att ta bort nyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Mer information finns i artikeln Cognitive Services säkerhet.

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

I programmets -metod main() lägger du till anrop för de metoder som används i den här snabbstarten. Du kommer att skapa dessa senare.

// 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);
// Create image reviews for human reviewers
CreateReviews(clientReviews, IMAGE_URLS_FOR_REVIEW, TEAM_NAME, ReviewsEndpoint);

Objektmodell

Följande klasser hanterar några av de viktigaste funktionerna i Content Moderator .NET-klientbiblioteket.

Name Beskrivning
ContentModeratorClient Den här klassen behövs för alla Content Moderator funktioner. Du instansierar den med din prenumerationsinformation och använder den för att skapa instanser av andra klasser.
ImageModeration Den här klassen innehåller funktioner för att analysera bilder för vuxet innehåll, personlig information eller mänskliga ansikten.
TextModeration Den här klassen innehåller funktioner för att analysera text för språk, svordomar, fel och personlig information.
Omdömen Den här klassen innehåller funktionerna i gransknings-API:erna, inklusive metoder för att skapa jobb, anpassade arbetsflöden och mänskliga granskningar.

Kodexempel

Dessa kodfragment visar hur du utför följande uppgifter med Content Moderator klientbibliotek för .NET:

Autentisera klienten

I en ny metod instansierar du klientobjekt med din slutpunkt och nyckel.

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

    return client;
}

Moderera text

Följande kod använder en Content Moderator-klient för att analysera en texttext och skriva ut resultatet till konsolen. Definiera indata- och utdatafilerna i roten för klassen 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";

Lägg sedan till enTextFile.txt projektroten. Lägg till din egen text i den här filen eller använd följande exempeltext:

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

Definiera sedan textmodereringsmetoden någonstans i klassen 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();
}

Moderera bilder

I följande kod används en Content Moderator klient, tillsammans med ett ImageModeration-objekt, för att analysera fjärrbilder efter vuxet och oanständigt innehåll.

Anteckning

Du kan också analysera innehållet i en lokal bild. Se referensdokumentationen för metoder och åtgärder som fungerar med lokala avbildningar.

Hämta exempelbilder

Definiera dina indata- och utdatafiler i roten för klassen 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";

Skapa sedan indatafilen, ImageFiles.txt, i roten av projektet. I den här filen lägger du till url:erna för bilder för att — analysera en URL på varje rad. Du kan använda följande exempelbilder:

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

Definiera hjälpklass

Lägg till följande klassdefinition i klassen Program. Den här inre klassen hanterar bildmodereringsresultat.

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

Definiera bildmodereringsmetoden

Följande metod itererar genom bild-URL:erna i en textfil, skapar en EvaluationData-instans och analyserar bilden för vuxet/racy-innehåll, text och mänskliga ansikten. Sedan lägger den till den slutliga EvaluationData-instansen i en lista och skriver den fullständiga listan över returnerade data till konsolen.

Iterera genom bilder

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

Analysera innehåll

Mer information om de bildattribut som Content Moderator skärmar för finns i guiden Begrepp för bildmoderering.

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

Skriva modereringsresultat till fil

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

Skapa en granskning

Du kan använda Content Moderator .NET-klientbiblioteket för att mata in innehåll i granskningsverktyget att mänskliga moderatorer kan granska det. Mer information om granskningsverktyget finns i begreppsguiden för granskningsverktyget.

Metoden i det här avsnittet använder klassen Reviews för att skapa en granskning, hämta dess ID och kontrollera dess information när den har fått mänsklig information via granskningsverktygets webbportal. Den loggar all den här informationen i en utdatatextfil.

Hämta exempelbilder

Deklarera följande matris i roten för klassen Program. Den här variabeln refererar till en exempelbild som ska användas för att skapa granskningen.

// The list of URLs of the images to create review jobs for.
private static readonly string[] IMAGE_URLS_FOR_REVIEW = new string[] { "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png" };

Hämta autentiseringsuppgifter för granskning

Logga in på granskningsverktyget och hämta ditt teamnamn. Tilldela den sedan till lämplig variabel i klassen Program. Du kan också konfigurera en återanropsslutpunkt för att ta emot uppdateringar av granskningsaktiviteten.

// The name of the team to assign the review to. Must be the team name used to create your Content Moderator website account. 
// If you do not yet have an account, follow this: https://docs.microsoft.com/en-us/azure/cognitive-services/content-moderator/quick-start
// Select the gear symbol (settings)-->Credentials to retrieve it. Your team name is the Id associated with your subscription.
private static readonly string TEAM_NAME = "CONTENT_MODERATOR_TEAM_NAME";
// The callback endpoint for completed human reviews.
// For example: https://westus.api.cognitive.microsoft.com/contentmoderator/review/v1.0
// As reviewers complete reviews, results are sent using an HTTP POST request.
private static readonly string ReviewsEndpoint = "CONTENT_MODERATOR_REVIEWS_ENDPOINT";

Definiera hjälpklass

Lägg till följande klassdefinition i klassen Program. Den här klassen används för att representera en enda granskningsinstans som skickas till granskningsverktyget.

// Associates the review ID (assigned by the service) to the internal.
public class ReviewItem
{
    // The media type for the item to review. 
    public string Type;
    // The URL of the item to review.
    public string Url;
    // The internal content ID for the item to review.
    public string ContentId;
    // The ID that the service assigned to the review.
    public string ReviewId;
}

Definiera hjälpmetod

Lägg till följande metod i klassen Program. Den här metoden skriver resultatet av granskningsfrågor till utdatatextfilen.

// Helper function that writes a message to the log file, and optionally to the console.
// If echo is set to true, details will be written to the console.
private static void WriteLine(TextWriter writer, string message = null, bool echo = true)
{
    writer.WriteLine(message ?? String.Empty);
    if (echo) { Console.WriteLine(message ?? String.Empty); }
}

Definiera metoden för att skapa granskning

Nu är du redo att definiera den metod som ska hantera skapande och frågegranskning. Lägg till en ny metod, CreateReviews, och definiera följande lokala variabler.

// Create the reviews using the fixed list of images.
private static void CreateReviews(ContentModeratorClient client, string[] ImageUrls, string teamName, string endpoint)
{
    Console.WriteLine("--------------------------------------------------------------");
    Console.WriteLine();
    Console.WriteLine("CREATE HUMAN IMAGE REVIEWS");

    // The minimum amount of time, in milliseconds, to wait between calls to the Image List API.
    const int throttleRate = 2000;
    // The number of seconds to delay after a review has finished before getting the review results from the server.
    const int latencyDelay = 45;

    // The name of the log file to create. Relative paths are relative to the execution directory.
    const string OutputFile = "OutputLog.txt";

    // The optional name of the subteam to assign the review to. Not used for this example.
    const string Subteam = null;

    // The media type for the item to review. Valid values are "image", "text", and "video".
    const string MediaType = "image";

    // The metadata key to initially add to each review item. This is short for 'score'.
    // It will enable the keys to be 'a' (adult) and 'r' (racy) in the response,
    // with a value of true or false if the human reviewer marked them as adult and/or racy.
    const string MetadataKey = "sc";
    // The metadata value to initially add to each review item.
    const string MetadataValue = "true";

    // A static reference to the text writer to use for logging.
    TextWriter writer;

    // The cached review information, associating a local content ID to the created review ID for each item.
    List<ReviewItem> reviewItems = new List<ReviewItem>();

Publicera granskningar i granskningsverktyget

Lägg sedan till följande kod för att iterera genom de angivna exempelbilderna, lägga till metadata och skicka dem till granskningsverktyget i en enda batch.

using (TextWriter outputWriter = new StreamWriter(OutputFile, false))
{
    writer = outputWriter;
    WriteLine(writer, null, true);
    WriteLine(writer, "Creating reviews for the following images:", true);

    // Create the structure to hold the request body information.
    List<CreateReviewBodyItem> requestInfo = new List<CreateReviewBodyItem>();

    // Create some standard metadata to add to each item.
    List<CreateReviewBodyItemMetadataItem> metadata =
        new List<CreateReviewBodyItemMetadataItem>(new CreateReviewBodyItemMetadataItem[]
        { new CreateReviewBodyItemMetadataItem(MetadataKey, MetadataValue) });

    // Populate the request body information and the initial cached review information.
    for (int i = 0; i < ImageUrls.Length; i++)
    {
        // Cache the local information with which to create the review.
        var itemInfo = new ReviewItem()
        {
            Type = MediaType,
            ContentId = i.ToString(),
            Url = ImageUrls[i],
            ReviewId = null
        };

        WriteLine(writer, $" {Path.GetFileName(itemInfo.Url)} with id = {itemInfo.ContentId}.", true);

        // Add the item informaton to the request information.
        requestInfo.Add(new CreateReviewBodyItem(itemInfo.Type, itemInfo.Url, itemInfo.ContentId, endpoint, metadata));

        // Cache the review creation information.
        reviewItems.Add(itemInfo);
    }

    var reviewResponse = client.Reviews.CreateReviewsWithHttpMessagesAsync("application/json", teamName, requestInfo);

Objektet som returneras från API-anropet innehåller unika ID-värden för varje bild som laddas upp. Följande kod parsar dessa ID:er och använder dem sedan för Content Moderator frågar efter status för varje avbildning i batchen.

// Update the local cache to associate the created review IDs with the associated content.
var reviewIds = reviewResponse.Result.Body;
for (int i = 0; i < reviewIds.Count; i++) { reviewItems[i].ReviewId = reviewIds[i]; }

WriteLine(outputWriter, JsonConvert.SerializeObject(reviewIds, Formatting.Indented));
Thread.Sleep(throttleRate);

// Get details of the reviews created that were sent to the Content Moderator website.
WriteLine(outputWriter, null, true);
WriteLine(outputWriter, "Getting review details:", true);
foreach (var item in reviewItems)
{
    var reviewDetail = client.Reviews.GetReviewWithHttpMessagesAsync(teamName, item.ReviewId);
    WriteLine(outputWriter, $"Review {item.ReviewId} for item ID {item.ContentId} is " +
        $"{reviewDetail.Result.Body.Status}.", true);
    WriteLine(outputWriter, JsonConvert.SerializeObject(reviewDetail.Result.Body, Formatting.Indented));
    Thread.Sleep(throttleRate);
}

Hämta granskningsinformation

Följande kod gör att programmet väntar på användarindata. När du kommer till det här steget vid körningen kan du gå till granskningsverktyget själv, kontrollera att exempelavbildningen har laddats upp och interagera med den. Information om hur du interagerar med en granskning finns i guiden Granska. När du är klar kan du trycka på valfri tangent för att fortsätta programmet och hämta resultatet av granskningsprocessen.

        Console.WriteLine();
        Console.WriteLine("Perform manual reviews on the Content Moderator site.");
        Console.WriteLine("Then, press any key to continue.");
        Console.ReadKey();

        // After the human reviews, the results are confirmed.
        Console.WriteLine();
        Console.WriteLine($"Waiting {latencyDelay} seconds for results to propagate.");
        Thread.Sleep(latencyDelay * 1000);

        // Get details from the human review.
        WriteLine(writer, null, true);
        WriteLine(writer, "Getting review details:", true);
        foreach (var item in reviewItems)
        {
            var reviewDetail = client.Reviews.GetReviewWithHttpMessagesAsync(teamName, item.ReviewId);
            WriteLine(writer, $"Review {item.ReviewId} for item ID {item.ContentId} is " + $"{reviewDetail.Result.Body.Status}.", true);
            WriteLine(outputWriter, JsonConvert.SerializeObject(reviewDetail.Result.Body, Formatting.Indented));

            Thread.Sleep(throttleRate);
        }

        Console.WriteLine();
        Console.WriteLine("Check the OutputLog.txt file for results of the review.");

        writer = null;
        outputWriter.Flush();
        outputWriter.Close();
    }
    Console.WriteLine("--------------------------------------------------------------");
}

Om du använde en återanropsslutpunkt i det här scenariot bör den ta emot en händelse i det här formatet:

{'callback_endpoint': 'https://requestb.in/qmsakwqm',
 'content': '',
 'content_id': '3ebe16cb-31ed-4292-8b71-1dfe9b0e821f',
 'created_by': 'cspythonsdk',
 'metadata': [{'key': 'sc', 'value': 'True'}],
 'review_id': '201901i14682e2afe624fee95ebb248643139e7',
 'reviewer_result_tags': [{'key': 'a', 'value': 'True'},
                          {'key': 'r', 'value': 'True'}],
 'status': 'Complete',
 'sub_team': 'public',
 'type': 'Image'}

Kör programmet

Kör programmet genom att klicka på knappen Felsök längst upp i IDE-fönstret.

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du använder Content Moderator .NET-biblioteket för att utföra modereringsuppgifter. Härnäst kan du läsa mer om moderering av bilder eller andra media genom att läsa en konceptuell guide.

Kom igång med Azure Content Moderator klientbibliotek för Java. Följ de här stegen för att installera Maven-paketet och prova exempelkoden för grundläggande uppgifter.

Content Moderator är en AI-tjänst som gör att du kan hantera innehåll som är potentiellt stötande, riskabelt eller på annat sätt oönskat. Använd den AI-baserade innehållsmodereringstjänsten för att söka igenom text, bilder och videor och tillämpa innehållsflaggor automatiskt. Skapa programvara för innehållsfiltrering i din app för att följa regler eller underhålla den avsedda miljön för dina användare.

Använd Content Moderator för Java för att:

  • Moderera text
  • Moderera bilder

Referensdokumentation | Bibliotekskällkod | Artefakt (Maven) | Exempel

Förutsättningar

  • En Azure-prenumeration – Skapa en utan kostnad
  • Den aktuella versionen av Java Development Kit (JDK)
  • Gradle-byggverktyget, eller någon annan beroendehanterare.
  • När du har din Azure-prenumeration skapar du Content Moderator resurs för att skapa Content Moderator resurs i Azure Portal för att hämta din nyckel och slutpunkt. Vänta tills den har distribuerats och klicka på knappen Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Content Moderator. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och uppgradera senare till en betald nivå för produktion.

Inrätta

Skapa ett nytt Gradle-projekt

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) skapar du en ny katalog för din app och navigerar till den.

mkdir myapp && cd myapp

Kör kommandot gradle init från arbetskatalogen. Det här kommandot skapar viktiga byggfiler för Gradle, inklusive build.gradle.kts, som används vid körning för att skapa och konfigurera ditt program.

gradle init --type basic

Välj en DSL när du uppmanas till det och välj Kotlin.

Installera klientbiblioteket

Hitta build.gradle.kts och öppna det med önskad IDE eller textredigerare. Kopiera sedan följande byggkonfiguration. Den här konfigurationen definierar projektet som ett Java-program vars startpunkt är klassen ContentModeratorQuickstart. Den importerar Content Moderator klientbiblioteket och GSON SDK för JSON-serialisering.

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

Skapa en Java-fil

Kör följande kommando från arbetskatalogen för att skapa en projektkällmapp:

mkdir -p src/main/java

Navigera till den nya mappen och skapa en fil med namnet ContentModeratorQuickstart.java. Öppna den i önskad redigerare eller IDE och lägg till följande import -instruktioner:

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

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

I programmets ContentModeratorQuickstart-klass skapar du variabler för resursens nyckel och slutpunkt.

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

Viktigt

Gå till Azure-portalen. Om den Content Moderator som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din nyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering .

Kom ihåg att ta bort nyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Mer information finns i artikeln Cognitive Services säkerhet.

I programmets main-metod lägger du till anrop för de metoder som används i den här snabbstarten. Du definierar dessa metoder senare.

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

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

Objektmodell

Följande klasser hanterar några av de viktigaste funktionerna i Content Moderator Java-klientbiblioteket.

Name Beskrivning
ContentModeratorClient Den här klassen behövs för alla Content Moderator funktioner. Du instansierar den med din prenumerationsinformation och använder den för att skapa instanser av andra klasser.
ImageModeration Den här klassen innehåller funktioner för att analysera bilder för vuxet innehåll, personlig information eller mänskliga ansikten.
TextModerations Den här klassen innehåller funktioner för att analysera text för språk, svordomar, fel och personlig information.
Omdömen Den här klassen innehåller funktionerna i gransknings-API:erna, inklusive metoder för att skapa jobb, anpassade arbetsflöden och mänskliga granskningar.

Kodexempel

Dessa kodfragment visar hur du utför följande uppgifter med Content Moderator klientbibliotek för Java:

Autentisera klienten

I programmets -metod main skapar du ett ContentModeratorClient-objekt med ditt prenumerationsslutpunktsvärde och prenumerationsnyckel.

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

Moderera text

Konfigurera exempeltext

Längst upp i klassen ContentModeratorQuickstart definierar du en referens till en lokal textfil. Lägg till en .txt-fil i projektkatalogen och ange den text som du vill analysera.

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

Analysera text

Skapa en ny metod som läser .txt-filen och anropar metoden screenText på varje rad.

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

Lägg till följande kod för att skriva ut modereringsresultatet till en .json-fil i projektkatalogen.

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

Stäng - och try catch -instruktionen för att slutföra -metoden.

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

Moderera bilder

Konfigurera exempelbild

I en ny metod skapar du ett BodyModelModel-objekt med en viss URL-sträng som pekar på en bild.

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

Definiera hjälpklass

I filen ContentModeratorQuickstart.java lägger du sedan till följande klassdefinition i klassen ContentModeratorQuickstart. Den här inre klassen används i bildmodereringsprocessen.

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

Analysera innehåll

Den här kodraden kontrollerar om bilden på den angivna URL:en innehåller innehåll som är vuxet eller inte. Se konceptuell guide för bildmoderering för information om dessa termer.

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

Sök efter text

Den här kodraden söker efter synlig text i bilden.

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

Söka efter ansikten

Den här kodraden kontrollerar bilden efter ansikten.

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

Lagra slutligen den returnerade informationen i EvaluationData listan.

resultsList.add(imageData);

Efter loopen lägger du till följande kod, som skriver ut resultatet till konsolen och till en while utdatafil, src/main/resources/ModerationOutput.jspå.

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

Stäng try -instruktionen och lägg till en catch -instruktion för att slutföra metoden.

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

Kör programmet

Du kan skapa appen med:

gradle build

Kör programmet med gradle run kommandot :

gradle run

Gå sedan till filen src/main/resources/ModerationOutput.js och visa resultatet av innehållsmodereringen.

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du använder Content Moderator Java-biblioteket för att utföra modereringsuppgifter. Härnäst kan du läsa mer om moderering av bilder eller andra media genom att läsa en konceptuell guide.

Kom igång med Azure Content Moderator-klient biblioteket för python. Följ dessa steg om du vill installera PiPy-paketet och prova exempel koden för grundläggande uppgifter.

Content Moderator är en AI-tjänst som låter dig hantera innehåll som är potentiellt stötande, riskfylld eller på annat sätt olämpligt. Använd den AI-drivna Content moderatoring-tjänsten för att söka igenom text, bild och videor och tillämpa innehålls flaggor automatiskt. Sedan integrerar du din app med gransknings verktyget, en online moderator miljö för ett team av mänsklig granskare. Bygg program vara för innehålls filtrering i din app för att följa regler eller underhålla användarnas avsedda miljö.

Använd Content Moderator klient bibliotek för python för att:

  • Måttlig text
  • Använda en anpassad villkors lista
  • Måttliga bilder
  • Använd en anpassad avbildnings lista
  • Skapa en granskning

Referens dokumentation | Biblioteks käll kod | Paket (PiPy) | Exempel

Förutsättningar

  • Azure-prenumeration – skapa en kostnads fritt
  • Python 3.x
    • Din python-installation ska innehålla pip. Du kan kontrol lera om du har pip installerat genom pip --version att köra på kommando raden. Hämta pip genom att installera den senaste versionen av python.
  • När du har en Azure-prenumeration skapa en Content moderator resurs i Azure Portal för att hämta din nyckel och slut punkt. Vänta tills den har distribuerats och klicka på knappen gå till resurs .
    • Du behöver nyckeln och slut punkten från den resurs som du skapar för att ansluta ditt program till Content Moderator. Du klistrar in nyckeln och slut punkten i koden nedan i snabb starten.
    • Du kan använda den kostnads fria pris nivån ( F0 ) för att testa tjänsten och senare uppgradera till en betald nivå för produktion.

Konfigurera

Installera klient biblioteket

När du har installerat python kan du installera Content Moderator klient biblioteket med följande kommando:

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

Skapa ett nytt python-program

Skapa ett nytt Python-skript och öppna det i önskat redigerings program eller IDE. Lägg sedan till följande- import instruktioner överst i filen.

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

Tips

Vill du Visa hela snabb starts kod filen samtidigt? Du kan hitta den på GitHub, som innehåller kod exemplen i den här snabb starten.

Skapa sedan variabler för resursens slut punkts plats och nyckel.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Viktigt

Gå till Azure-portalen. Om Content Moderator resursen som du skapade i avsnittet krav har distribuerats, klickar du på knappen gå till resurs under Nästa steg. Du hittar din nyckel och slut punkt i resursens nyckel och slut punkts sida under resurs hantering.

Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion bör du överväga att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter. Till exempel Azure Key Vault.

Objekt modell

Följande klasser hanterar några av de viktigaste funktionerna i Content Moderator python-klient biblioteket.

Name Beskrivning
ContentModeratorClient Den här klassen krävs för alla Content Moderator-funktioner. Du instansierar det med din prenumerations information och använder den för att skapa instanser av andra klasser.
ImageModerationOperations Den här klassen innehåller funktioner för att analysera bilder för innehåll som är olämpligt för barn, personlig information eller mänskliga ansikten.
TextModerationOperations Den här klassen innehåller funktioner för att analysera text för språk, svordomar, fel och personlig information.
ReviewsOperations Den här klassen innehåller funktionerna i gransknings-API: erna, inklusive metoder för att skapa jobb, anpassade arbets flöden och mänsklig granskning.

Kodexempel

De här kodfragmenten visar hur du utför följande uppgifter med Content Moderator klient biblioteket för python:

Autentisera klienten

Instansiera en klient med din slut punkt och nyckel. Skapa ett CognitiveServicesCredentials -objekt med din nyckel och Använd den med slut punkten för att skapa ett ContentModeratorClient -objekt.

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

Måttlig text

I följande kod används en Content Moderator-klient för att analysera text texten och skriva ut resultatet till-konsolen. Skapa först en text_files/- mapp i projekt roten och Lägg till en content_moderator_text_moderation.txt -fil. Lägg till din egen text i filen eller Använd följande exempel text:

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

Lägg till en referens till den nya mappen.

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

Lägg sedan till följande kod i python-skriptet.

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

Använda en anpassad villkors lista

Följande kod visar hur du hanterar en lista med anpassade villkor för text redigering. Du kan använda klassen ListManagementTermListsOperations för att skapa en villkors lista, hantera enskilda villkor och Visa andra text texter mot den.

Hämta exempel text

Om du vill använda det här exemplet måste du skapa en text_files/- mapp i projekt roten och lägga till en content_moderator_term_list.txt -fil. Den här filen ska innehålla organisk text som ska kontrol leras mot listan med villkor. Du kan använda följande exempel text:

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

Lägg till en referens till mappen om du inte redan har definierat en.

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

Skapa en lista

Lägg till följande kod i python-skriptet för att skapa en anpassad villkors lista och spara dess ID-värde.

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

Definiera List information

Du kan använda en listas ID för att redigera dess namn och beskrivning.

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

Lägg till en term i listan

Följande kod lägger till villkoren "term1" och "term2" i listan.

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

Hämta alla villkor i listan

Du kan använda List-ID: t för att returnera alla villkor i listan.

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

Uppdatera List indexet

När du lägger till eller tar bort villkor från listan måste du uppdatera indexet innan du kan använda den uppdaterade listan.

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

Skärm text mot listan

Huvud funktionerna i listan med anpassade villkor är att jämföra en text text mot listan och se om det finns några matchande villkor.

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

Ta bort en term från en lista

Följande kod tar bort termen "term1" från listan.

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

Ta bort alla villkor från en lista

Använd följande kod för att ta bort en lista över alla dess villkor.

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

Ta bort en lista

Använd följande kod för att ta bort en anpassad villkors lista.

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

Måttliga bilder

I följande kod används en Content Moderator-klient, tillsammans med ett ImageModerationOperations -objekt, för att analysera bilder för vuxen och vågat innehåll.

Hämta exempel bilder

Definiera en referens till några bilder som ska analyseras.

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

Lägg sedan till följande kod för att iterera igenom dina avbildningar. Resten av koden i det här avsnittet hamnar inuti den här slingan.

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

Sök efter vuxen/vågat innehåll

Följande kod kontrollerar avbildningen på den angivna URL: en för vuxen eller vågat innehåll och skriver ut resultaten till-konsolen. Mer information om vad dessa villkor innebär finns i hand boken för bild moderator .

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

Sök efter synlig text

Följande kod kontrollerar bilden för synligt text innehåll och skriver ut resultaten till-konsolen.

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

Sök efter ansikten

Följande kod kontrollerar bilden för mänskliga ansikten och skriver ut resultatet i-konsolen.

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

Använd en anpassad avbildnings lista

Följande kod visar hur du hanterar en anpassad lista över avbildningar för bild moderator. Den här funktionen är användbar om din plattform ofta tar emot instanser av samma uppsättning avbildningar som du vill ta ut. Genom att underhålla en lista över dessa avbildningar kan du förbättra prestandan. Med klassen ListManagementImageListsOperations kan du skapa en avbildnings lista, hantera enskilda bilder i listan och jämföra andra bilder mot den.

Skapa följande textvariabler för att lagra de bild-URL: er som du kommer att använda i det här scenariot.

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

Anteckning

Detta är inte själva listan, men en informellt lista med avbildningar som ska läggas till i add images avsnittet i koden.

Skapa en bild lista

Lägg till följande kod för att skapa en avbildnings lista och spara en referens till dess 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

Lägga till avbildningar i en lista

Följande kod lägger till alla dina avbildningar i listan.

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

Definiera add_images Helper-funktionen någon annan stans i skriptet.

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

Hämta bilder i listan

Följande kod skriver ut namnen på alla avbildningar i listan.

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

Uppdatera List information

Du kan använda List-ID: t för att uppdatera namn och beskrivning för listan.

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

Hämta List information

Använd följande kod för att skriva ut den aktuella informationen om listan.

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

Uppdatera List indexet

När du har lagt till eller tagit bort avbildningar måste du uppdatera List indexet innan du kan använda det för att visa andra bilder.

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

Matcha bilder mot listan

Huvud funktionen i bild listor är att jämföra nya avbildningar och se om det finns några matchningar.

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

Ta bort en bild från listan

Följande kod tar bort ett objekt från listan. I det här fallet är det en bild som inte matchar List kategorin.

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

Ta bort alla avbildningar från en lista

Använd följande kod för att rensa en avbildnings lista.

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

Ta bort bild listan

Använd följande kod för att ta bort en avbildnings lista.

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

Skapa en granskning

Du kan använda Content Moderator python-klient biblioteket för att mata in innehåll i gransknings verktyget så att de mänskliga moderatorerna kan granska det. Mer information om gransknings verktyget finns i konceptuell guide för gransknings verktyget.

Följande kod använder klassen ReviewsOperations för att skapa en granskning, hämta dess ID och kontrol lera informationen efter att ha tagit emot mänsklig indata via gransknings verktygets webb Portal.

Hämta granska autentiseringsuppgifter

Logga först in på gransknings verktyget och hämta ditt grupp namn. Tilldela den sedan den aktuella variabeln i koden. Alternativt kan du skapa en slut punkt för återanrop för att ta emot uppdateringar om granskningens aktivitet.

# The name of the team to assign the job to.
# This must be the team name you used to create your Content Moderator account. You can
# retrieve your team name from the Review tool web site. Your team name is the Id
# associated with your subscription.
team_name = "<insert your team name here>"

# An image to review
image_url = "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png"

# Where you want to receive the approval/refuse event. This is the only way to get this information.
call_back_endpoint = "https://requestb.in/qmsakwqm"

Skapa en bild granskning

Lägg till följande kod för att skapa och publicera en granskning för den angivna bild-URL: en. Koden sparar en referens till gransknings-ID: t.

# Create review
print("Create review for {}.\n".format(image_url))
review_item = {
    "type": "Image",             # Possible values include: 'Image', 'Text'
    "content": image_url,        # How to download the image
    "content_id": uuid.uuid4(),  # Random id
    "callback_endpoint": call_back_endpoint,
    "metadata": [{
        "key": "sc",
        "value": True  # will be sent to Azure as "str" cast.
    }]
}

reviews = client.reviews.create_reviews(
    url_content_type="application/json",
    team_name=team_name,
    create_review_body=[review_item]  # As many review item as you need
)

# Get review ID
review_id = reviews[0]  # Ordered list of string of review ID

Visa gransknings information

Använd följande kod för att kontrol lera informationen om en specifik granskning. När du har skapat granskningen kan du gå till gransknings verktyget själv och interagera med innehållet. Information om hur du gör detta finns i instruktionen gransknings anvisningar. När du är klar kan du köra den här koden igen så hämtas resultatet från gransknings processen.

print("\nGet review details")
review_details = client.reviews.get_review(
    team_name=team_name, review_id=review_id)
pprint(review_details.as_dict())

Om du har använt en callback-slutpunkt i det här scenariot, ska den ta emot en händelse i följande format:

{'callback_endpoint': 'https://requestb.in/qmsakwqm',
 'content': '',
 'content_id': '3ebe16cb-31ed-4292-8b71-1dfe9b0e821f',
 'created_by': 'cspythonsdk',
 'metadata': [{'key': 'sc', 'value': 'True'}],
 'review_id': '201901i14682e2afe624fee95ebb248643139e7',
 'reviewer_result_tags': [{'key': 'a', 'value': 'True'},
                          {'key': 'r', 'value': 'True'}],
 'status': 'Complete',
 'sub_team': 'public',
 'type': 'Image'}

Kör programmet

Kör programmet med python kommandot på snabb starts filen.

python quickstart-file.py

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är kopplade till den.

Nästa steg

I den här snabb starten har du lärt dig hur du använder det Content Moderator python-biblioteket för att utföra redigerings uppgifter. Läs sedan mer om hur du använder avbildningen eller andra media genom att läsa en konceptuell guide.

Kom igång med Azure Content Moderator-REST API.

Content Moderator är en AI-tjänst som låter dig hantera innehåll som är potentiellt stötande, riskfylld eller på annat sätt olämpligt. Använd den AI-drivna Content moderatoring-tjänsten för att söka igenom text, bild och videor och tillämpa innehålls flaggor automatiskt. Integrera sedan din app med gransknings verktyget, en online moderator miljö för ett team av mänskliga granskare. Bygg program vara för innehålls filtrering i din app för att följa regler eller underhålla användarnas avsedda miljö.

Använd Content Moderator REST API för att:

  • Måttlig text
  • Måttliga bilder

Förutsättningar

  • Azure-prenumeration – skapa en kostnads fritt
  • När du har en Azure-prenumeration skapa en Content moderator resurs i Azure Portal för att hämta din nyckel och slut punkt. Vänta tills den har distribuerats och klicka på knappen gå till resurs .
    • Du behöver nyckeln och slut punkten från den resurs som du skapar för att ansluta ditt program till Content Moderator. Du klistrar in nyckeln och slut punkten i koden nedan i snabb starten.
    • Du kan använda den kostnads fria pris nivån ( F0 ) för att testa tjänsten och senare uppgradera till en betald nivå för produktion.
  • PowerShell version 6.0 +eller liknande kommando rads program.

Måttlig text

Du använder ett kommando som följande för att anropa Content Moderator-API: et för att analysera text texten och skriva ut resultatet i-konsolen.

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"

Kopiera kommandot till en text redigerare och gör följande ändringar:

  1. Tilldela Ocp-Apim-Subscription-Key din giltiga prenumerations nyckel för ansikts.
  2. Ändra den första delen av fråge-URL: en så att den matchar slut punkten som motsvarar din prenumerations nyckel.

    Anteckning

    Nya resurser som skapats efter den 1 juli 2019 kommer att använda anpassade under domän namn. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.

  3. Du kan också ändra bröd texten i begäran till den text sträng som du vill analysera.

När du har gjort dina ändringar öppnar du en kommandotolk och anger det nya kommandot.

Granska resultaten

Du bör se de text redigerings resultat som visas som JSON-data i konsol fönstret. Exempel:

{
  "OriginalText": "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255,\n1 Microsoft Way, Redmond, WA 98052\n",
  "NormalizedText": "Is this a crap email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
  "AutoCorrectedText": "Is this a crap 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": "crap"
    }
  ],
  "Status": {
    "Code": 3000,
    "Description": "OK",
    "Exception": null
  },
  "TrackingId": "1717c837-cfb5-4fc0-9adc-24859bfd7fac"
}

Mer information om textattributen som Content Moderator skärmar för finns i begrepps hand boken för text redigering .

Måttliga bilder

Du använder ett kommando som följande för att anropa Content Moderator-API: et för att använda en fjärravbildning och skriva ut resultatet till-konsolen.

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

Kopiera kommandot till en text redigerare och gör följande ändringar:

  1. Tilldela Ocp-Apim-Subscription-Key din giltiga prenumerations nyckel för ansikts.
  2. Ändra den första delen av fråge-URL: en så att den matchar slut punkten som motsvarar din prenumerations nyckel.
  3. Alternativt kan du ändra "Value" URL: en i begär ande texten till vilken fjärravbildning som du vill måttlig.

Tips

Du kan också måttligt lokala bilder genom att skicka sina byte-data till begär ande texten. Mer information om hur du gör detta finns i referens dokumentationen .

När du har gjort dina ändringar öppnar du en kommandotolk och anger det nya kommandot.

Granska resultaten

Du bör se de bild moderator resultat som visas som JSON-data i konsol fönstret.

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

Mer information om bildattributen som Content Moderator skärmar för finns i hand boken för bild moderator .

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är kopplade till den.

Nästa steg

I den här snabb starten har du lärt dig hur du använder Content Moderator REST API för att göra redigerings uppgifter. Läs sedan mer om hur du använder avbildningen eller andra media genom att läsa en konceptuell guide.