Rychlý Start: použití klientské knihovny Content Moderator

Začněte s klientskou knihovnou Azure Content Moderator pro .NET. Postupujte podle těchto kroků a nainstalujte balíček NuGet a vyzkoušejte ukázkový kód pro základní úlohy.

Content Moderator je služba AI, která umožňuje zpracovávat obsah, který je potenciálně urážlivý, rizikové nebo jinak nežádoucí. Použijte službu pro moderování obsahu s AI ke skenování textu, obrázku a videí a automatické použití příznaků obsahu. Potom Integrujte svoji aplikaci pomocí nástroje pro kontrolu online, což je prostředí moderátora pro tým pro lidské kontrolory. Sestavujte software pro filtrování obsahu do vaší aplikace, abyste vyhověli předpisům nebo zachovali zamýšlené prostředí pro vaše uživatele.

Pomocí klientské knihovny Content Moderator pro .NET:

  • Střední text
  • Střední obrázky
  • Vytvořit recenzi

Referenční dokumentace | Zdrojový kód knihovny | Balíček (NuGet) | Ukázky

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma .
  • Integrované vývojové prostředí (IDE) sady Visual Studio nebo aktuální verze .NET Core.
  • Jakmile budete mít předplatné Azure, Content Moderator v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k Content Moderator budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Svůj klíč a koncový bod vložíte do níže uvedeného kódu později v rychlém startu.
    • K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.

Nastavení

Vytvoření nové aplikace v C#

Pomocí sady Visual Studio vytvořte novou aplikaci .NET Core.

Instalace klientské knihovny

Po vytvoření nového projektu nainstalujte knihovnu klienta tak, že kliknete pravým tlačítkem na řešení projektu v Průzkumník řešení a vyberete Spravovat balíčky NuGet. Ve Správci balíčků, který se otevře, vyberte Procházet, zaškrtněte políčko Zahrnout předprodejní a vyhledejte Microsoft.Azure.CognitiveServices.ContentModerator . Vyberte verzi 2.0.0 a pak nainstalujte.

Tip

Chcete zobrazit celý soubor kódu pro rychlý Start najednou? Můžete ji najít na GitHubu, který obsahuje příklady kódu v tomto rychlém startu.

V adresáři projektu otevřete soubor program. cs v preferovaném editoru nebo integrovaném vývojovém prostředí (IDE). Přidejte následující příkazy 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;

Ve třídě program vytvořte proměnné pro klíč a koncový bod prostředku.

Důležité

Přejděte na Azure Portal. Pokud se prostředek Content Moderator, který jste vytvořili v části předpoklady , se úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíč a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.

Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v článku o zabezpečení Cognitive Services.

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

V main() metodě aplikace přidejte volání metod používaných v rámci tohoto rychlého startu. Budete je vytvářet později.

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

Objektový model

Následující třídy zpracovávají některé hlavní funkce klientské knihovny Content Moderator .NET.

Název Description
ContentModeratorClient Tato třída je potřebná pro všechny funkce Content Moderator. Vytvoří se jeho instance s informacemi o předplatném a Vy ho použijete k vytvoření instancí jiných tříd.
ImageModeration Tato třída poskytuje funkce pro analýzu obrázků pro obsah pro dospělé, osobní údaje nebo lidské obličeje.
TextModeration Tato třída poskytuje funkce pro analýzu textu pro jazyk, vulgární výrazy, chyby a osobní údaje.
Recenze Tato třída poskytuje funkce v rozhraních API pro revize, včetně metod vytváření úloh, vlastních pracovních postupů a lidských recenzí.

Příklady kódu

Tyto fragmenty kódu ukazují, jak provádět následující úlohy pomocí klientské knihovny Content Moderator pro .NET:

Ověření klienta

V nové metodě vytvořte instanci objektů klienta s vaším koncovým bodem a klíčem.

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

    return client;
}

Střední text

Následující kód používá klienta Content Moderator k analýze textu a k vytištění výsledků do konzoly. V kořenovém adresáři třídy programu definujte vstupní a výstupní soubory:

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

Potom v kořenovém adresáři projektu přidejte soubor TextFile.txt . Přidejte do tohoto souboru vlastní text nebo použijte následující vzorový 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 4255550111

Pak definujte metodu moderování textu někde ve vaší třídě programu :

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

Střední obrázky

Následující kód používá klienta Content Moderator společně s objektem ImageModeration k analýze vzdálených imagí pro dospělé a pikantní obsah.

Poznámka

Můžete také analyzovat obsah místní image. V referenční dokumentaci najdete metody a operace, které fungují s místními imagemi.

Získat ukázkové obrázky

Definujte vstupní a výstupní soubory v kořenovém adresáři vaší třídy programu :

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

Pak vytvořte vstupní soubor ImageFiles.txt v kořenu projektu. V tomto souboru přidáte adresy URL obrázků k analýze — jedné adresy URL na každém řádku. Můžete použít následující ukázkové obrázky:

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

Definovat pomocnou třídu

Do třídy program přidejte následující definici třídy. Tato vnitřní třída zpracuje výsledky moderování obrázku.

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

Definovat metodu moderování obrázku

Následující metoda prochází pomocí adres URL obrázků v textovém souboru, vytvoří instanci EvaluationData a analyzuje obrázek pro dospělé/pikantní obsah, text a lidské obličeje. Pak přidá poslední instanci EvaluationData do seznamu a zapíše úplný seznam vrácených dat do konzoly.

Iterovat prostřednictvím imagí

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

Analýza obsahu

Další informace o atributech obrázků, které Content Moderator obrazovky pro, najdete v příručce Koncepty pro moderování imagí .

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

Zapsat výsledky moderování do souboru

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

Vytvořit recenzi

Můžete použít knihovnu klienta Content Moderator .NET k zakládání obsahu do Nástroje pro revize , aby ho mohli recenzenti prohlížet. Další informace o nástroji pro kontrolu najdete v koncepční příručce k nástroji pro kontrolu.

Metoda v tomto oddílu používá třídu Reviews k vytvoření revize, načtení jeho ID a kontrolu jeho podrobností po přijetí lidského vstupu prostřednictvím webového portálu nástroje pro kontrolu. Protokoluje všechny tyto informace ve výstupním textovém souboru.

Získat ukázkové obrázky

Deklarujete následující pole v kořenovém adresáři vaší třídy programu . Tato proměnná odkazuje na vzorový obrázek, který se má použít k vytvoření revize.

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

Získat pověření pro kontrolu

Přihlaste se k nástroji pro revizi a načtěte název svého týmu. Pak ji přiřaďte příslušné proměnné ve třídě program . Volitelně můžete nastavit koncový bod zpětného volání pro příjem aktualizací aktivity revize.

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

Definovat pomocnou třídu

Do třídy programu přidejte následující definici třídy. Tato třída bude sloužit k reprezentaci jedné instance revize, která je odeslána do nástroje pro revize.

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

Definovat pomocnou metodu

Do třídy Program přidejte následující metodu. Tato metoda zapíše výsledky kontroly dotazů do výstupního textového souboru.

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

Definice metody vytváření Revize

Nyní jste připraveni definovat metodu, která bude zpracovávat vytváření a dotazování na revizi. Přidejte novou metodu, CreateReviews a definujte následující místní proměnné.

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

Zveřejnění revizí nástroje pro kontrolu

Pak přidejte následující kód pro iteraci pomocí daných ukázkových imagí, přidejte metadata a odešlete je do nástroje pro kontrolu v rámci jedné dávky.

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

Objekt vrácený voláním rozhraní API bude obsahovat jedinečné hodnoty ID pro každý nahraný obrázek. Následující kód analyzuje tato ID a pak je používá k dotazování Content Moderator pro stav jednotlivých imagí v dávce.

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

Získat podrobnosti o kontrole

Následující kód způsobí, že program čeká na vstup uživatele. Když do tohoto kroku přejdete za běhu, můžete přejít na nástroj pro kontrolu sami, ověřit, jestli se ukázková image nahrála, a s ní pracovat. Informace o tom, jak pracovat s revizí, najdete v příručcek recenzi. Až budete hotovi, můžete stisknutím libovolné klávesy pokračovat v programu a načíst výsledky procesu kontroly.

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

Pokud jste v tomto scénáři použili koncový bod zpětného volání, měla by se zobrazit událost v tomto formátu:

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

Spuštění aplikace

Spusťte aplikaci kliknutím na tlačítko ladění v horní části okna IDE.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny další prostředky, které jsou k ní přidružené.

Další kroky

V tomto rychlém startu jste zjistili, jak pomocí knihovny Content Moderator .NET provádět úlohy moderování. V dalším kroku se dozvíte další informace o moderování imagí nebo jiných médií. Přečtěte si koncepční průvodce.

Začněte s klientskou knihovnou Azure Content Moderator pro Java. Pomocí těchto kroků nainstalujete balíček Maven a vyzkoušíte ukázkový kód pro základní úlohy.

Content Moderator je služba AI, která umožňuje zpracovávat obsah, který je potenciálně urážlivý, rizikové nebo jinak nežádoucí. Použijte službu pro moderování obsahu s AI ke skenování textu, obrázku a videí a automatické použití příznaků obsahu. Sestavujte software pro filtrování obsahu do vaší aplikace, abyste vyhověli předpisům nebo zachovali zamýšlené prostředí pro vaše uživatele.

Pomocí klientské knihovny Content Moderator pro jazyk Java:

  • Střední text
  • Střední obrázky

Referenční dokumentace | Zdrojový kód knihovny | Artefakt (Maven) | Ukázky

Požadavky

  • Předplatné Azure – můžete ho vytvořit zdarma .
  • Aktuální verze sady Java Development Kit (JDK)
  • Nástroj Gradle Buildnebo jiný správce závislostí.
  • Jakmile budete mít předplatné Azure, Content Moderator v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k Content Moderator budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Svůj klíč a koncový bod vložíte do níže uvedeného kódu později v rychlém startu.
    • K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.

Nastavení

Vytvořit nový projekt Gradle

V okně konzoly (například cmd, PowerShell nebo bash) vytvořte nový adresář pro vaši aplikaci a přejděte na něj.

mkdir myapp && cd myapp

Spusťte gradle init příkaz z pracovního adresáře. Tento příkaz vytvoří základní soubory sestavení pro Gradle, včetně Build. Gradle. kts, který se používá za běhu k vytvoření a konfiguraci vaší aplikace.

gradle init --type basic

Po zobrazení výzvy k výběru DSL vyberte Kotlin.

Instalace klientské knihovny

Vyhledejte Build. Gradle. kts a otevřete ho pomocí vašeho preferovaného integrovaného vývojového prostředí (IDE) nebo textového editoru. Pak zkopírujte do následující konfigurace sestavení. Tato konfigurace definuje projekt jako aplikaci Java, jejíž vstupní bod je třídou ContentModeratorQuickstart. Importuje knihovnu klienta Content Moderator a sadu GSON SDK pro serializaci 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")
}

Vytvoření souboru Java

V pracovním adresáři spusťte následující příkaz, který vytvoří zdrojovou složku projektu:

mkdir -p src/main/java

Přejděte do nové složky a vytvořte soubor s názvem ContentModeratorQuickstart. Java. Otevřete ho v preferovaném editoru nebo integrovaném vývojovém prostředí a přidejte následující import příkazy:

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

Tip

Chcete zobrazit celý soubor kódu pro rychlý Start najednou? Můžete ji najít na GitHubu, který obsahuje příklady kódu v tomto rychlém startu.

V třídě ContentModeratorQuickstart aplikace vytvořte proměnné pro klíč a koncový bod prostředku.

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

Důležité

Přejděte na Azure Portal. Pokud se prostředek Content Moderator, který jste vytvořili v části předpoklady , se úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíč a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.

Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v článku o zabezpečení Cognitive Services.

V metodě Main aplikace přidejte volání metod používaných v rámci tohoto rychlého startu. Tyto metody budete definovat později.

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

Objektový model

Následující třídy zpracovávají některé hlavní funkce klientské knihovny Content Moderator Java.

Název Description
ContentModeratorClient Tato třída je potřebná pro všechny funkce Content Moderator. Vytvoří se jeho instance s informacemi o předplatném a Vy ho použijete k vytvoření instancí jiných tříd.
ImageModeration Tato třída poskytuje funkce pro analýzu obrázků pro obsah pro dospělé, osobní údaje nebo lidské obličeje.
TextModerations Tato třída poskytuje funkce pro analýzu textu pro jazyk, vulgární výrazy, chyby a osobní údaje.
Recenze Tato třída poskytuje funkce v rozhraních API pro revize, včetně metod vytváření úloh, vlastních pracovních postupů a lidských recenzí.

Příklady kódu

Tyto fragmenty kódu ukazují, jak provádět následující úlohy pomocí Content Moderator klientské knihovny pro Java:

Ověření klienta

V main metodě aplikace vytvořte objekt ContentModeratorClient pomocí hodnoty koncového bodu předplatného a klíče předplatného.

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

Střední text

Nastavení ukázkového textu

V horní části třídy ContentModeratorQuickstart definujte odkaz na místní textový soubor. Přidejte soubor. txt do adresáře projektu a zadejte text, který se má analyzovat.

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

Analyzovat text

Vytvořte novou metodu, která přečte soubor. txt a zavolá metodu screenText na každém řádku.

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

Přidejte následující kód pro vytištění výsledků moderování do souboru. JSON v adresáři projektu.

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

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

try catch Pro dokončení metody zavřete příkaz a.

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

Střední obrázky

Nastavit ukázkovou bitovou kopii

V nové metodě Sestavte objekt BodyModelModel s daným řetězcem URL, který odkazuje na obrázek.

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

Definovat pomocnou třídu

Potom v souboru ContentModeratorQuickstart. Java přidejte do třídy ContentModeratorQuickstart následující definici třídy. Tato vnitřní třída se používá v procesu moderování imagí.

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

Analýza obsahu

Tento řádek kódu kontroluje obrázek na dané adrese URL pro dospělé nebo pikantní obsah. Informace o těchto pojmech najdete v koncepční příručce pro moderování obrázků.

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

Kontrolovat text

Tento řádek kódu kontroluje obrázek pro viditelný text.

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

Kontrolovat obličeje

Tento řádek kódu kontroluje obrázek pro lidské obličeje.

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

Nakonec uložte vrácené informace v EvaluationData seznamu.

resultsList.add(imageData);

Po while smyčce přidejte následující kód, který vytiskne výsledky do konzoly a do výstupního souboru, Src/Main/Resources/ModerationOutput.jsv.

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

Zavřete try příkaz a přidejte catch příkaz pro dokončení metody.

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

Spuštění aplikace

Aplikaci můžete vytvořit pomocí:

gradle build

Spusťte aplikaci pomocí gradle run příkazu:

gradle run

Pak přejděte k souboru Src/Main/Resources/ModerationOutput.jsna soubor a podívejte se na výsledky Moderování obsahu.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny další prostředky, které jsou k ní přidružené.

Další kroky

V tomto rychlém startu jste zjistili, jak používat knihovnu Content Moderator Java k provádění úloh moderování. V dalším kroku se dozvíte další informace o moderování imagí nebo jiných médií. Přečtěte si koncepční průvodce.

Začněte s klientskou knihovnou Azure Content Moderator pro Python. Pomocí těchto kroků nainstalujete balíček PiPy a vyzkoušíte ukázkový kód pro základní úlohy.

Content Moderator je služba AI, která umožňuje zpracovávat obsah, který je potenciálně urážlivý, rizikové nebo jinak nežádoucí. Použijte službu pro moderování obsahu s AI ke skenování textu, obrázku a videí a automatické použití příznaků obsahu. Potom Integrujte svoji aplikaci pomocí nástroje pro kontrolu online, což je prostředí moderátora pro tým pro lidské kontrolory. Sestavujte software pro filtrování obsahu do vaší aplikace, abyste vyhověli předpisům nebo zachovali zamýšlené prostředí pro vaše uživatele.

Použití klientské knihovny Content Moderator pro Python pro:

  • Střední text
  • Použití vlastního seznamu podmínek
  • Střední obrázky
  • Použití vlastního seznamu obrázků
  • Vytvořit recenzi

Referenční dokumentace | Zdrojový kód knihovny | Balíček (PiPy) | Ukázky

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma .
  • Python 3.x
    • Instalace Pythonu by měla zahrnovat PIP. Pomocí příkazu na příkazovém řádku můžete zjistit, jestli máte službu PIP nainstalovanou pip --version . Získejte PIP instalací nejnovější verze Pythonu.
  • Jakmile budete mít předplatné Azure, Content Moderator v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k Content Moderator budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Svůj klíč a koncový bod vložíte do níže uvedeného kódu později v rychlém startu.
    • K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.

Nastavení

Instalace klientské knihovny

Po instalaci Pythonu můžete nainstalovat knihovnu klienta Content Moderator pomocí následujícího příkazu:

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

Vytvoření nové aplikace v Pythonu

Vytvořte nový skript Pythonu a otevřete ho v preferovaném editoru nebo integrovaném vývojovém prostředí (IDE). Pak na import začátek souboru přidejte následující příkazy.

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

Tip

Chcete zobrazit celý soubor kódu pro rychlý Start najednou? Můžete ji najít na GitHubu, který obsahuje příklady kódu v tomto rychlém startu.

Dále vytvořte proměnné pro umístění a klíč koncového bodu prostředku.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Důležité

Přejděte na Azure Portal. Pokud se prostředek Content Moderator, který jste vytvořili v části předpoklady , se úspěšně nasadil, klikněte v části Další kroky na tlačítko Přejít k prostředku . Klíč a koncový bod můžete najít na stránce klíč a koncový bod prostředku v části Správa prostředků.

Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho zveřejnit. V případě produkčního prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Například Trezor klíčů Azure.

Objektový model

Následující třídy zpracovávají některé hlavní funkce klientské knihovny Content Moderator Pythonu.

Název Description
ContentModeratorClient Tato třída je potřebná pro všechny funkce Content Moderator. Vytvoří se jeho instance s informacemi o předplatném a Vy ho použijete k vytvoření instancí jiných tříd.
ImageModerationOperations Tato třída poskytuje funkce pro analýzu obrázků pro obsah pro dospělé, osobní údaje nebo lidské obličeje.
TextModerationOperations Tato třída poskytuje funkce pro analýzu textu pro jazyk, vulgární výrazy, chyby a osobní údaje.
ReviewsOperations Tato třída poskytuje funkce v rozhraních API pro revize, včetně metod vytváření úloh, vlastních pracovních postupů a lidských recenzí.

Příklady kódu

Tyto fragmenty kódu ukazují, jak provádět následující úlohy pomocí Content Moderator klientské knihovny pro Python:

Ověření klienta

Vytvořte instanci klienta s vaším koncovým bodem a klíčem. Vytvořte objekt CognitiveServicesCredentials s klíčem a použijte ho u svého koncového bodu k vytvoření objektu ContentModeratorClient .

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

Střední text

Následující kód používá klienta Content Moderator k analýze textu a k vytištění výsledků do konzoly. Nejprve vytvořte text_files nebo složku v kořenovém adresáři projektu a přidejte soubor content_moderator_text_moderation.txt . Přidejte do tohoto souboru vlastní text nebo použijte následující vzorový 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

Přidejte odkaz do nové složky.

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

Potom do skriptu Pythonu přidejte následující kód.

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

Použití vlastního seznamu podmínek

Následující kód ukazuje, jak spravovat seznam vlastních podmínek pro moderování textu. Pomocí třídy ListManagementTermListsOperations můžete vytvořit seznam podmínek, spravovat jednotlivé výrazy a na základě nich zobrazit další těla textu.

Získat vzorový text

Chcete-li použít tuto ukázku, je nutné vytvořit text_files nebo složku v kořenovém adresáři projektu a přidat content_moderator_term_list.txt soubor. Tento soubor by měl obsahovat organický text, který se bude kontrolovat podle seznamu podmínek. Můžete použít následující vzorový text:

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

Přidejte odkaz na složku, pokud jste ji ještě nedefinovali.

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

Vytvoří seznam.

Do skriptu Pythonu přidejte následující kód, který vytvoří vlastní seznam podmínek a uloží jeho hodnotu 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

Definovat podrobnosti seznamu

Pomocí ID seznamu můžete upravit jeho název a popis.

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

Přidat termín do seznamu

Následující kód přidá výrazy "term1" a "term2" do seznamu.

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

Získat všechny výrazy v seznamu

K vrácení všech podmínek v seznamu můžete použít ID seznamu.

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

Aktualizovat index seznamu

Kdykoli v seznamu přidáte nebo odeberete výrazy, je nutné index aktualizovat, aby bylo možné použít aktualizovaný seznam.

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

Text obrazovky na seznamu

Hlavní funkcí seznamu vlastních podmínek je porovnat tělo textu se seznamem a zjistit, jestli existují nějaké vyhovující výrazy.

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

Odebrání termínu ze seznamu

Následující kód odstraní termín "term1" ze seznamu.

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

Odebere všechny výrazy ze seznamu.

Pomocí následujícího kódu vymažte seznam všech jeho podmínek.

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

Odstraní seznam.

Pomocí následujícího kódu odstraňte vlastní seznam podmínek.

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

Střední obrázky

Následující kód používá klienta Content Moderator společně s objektem ImageModerationOperations k analýze imagí pro dospělé a pikantní obsah.

Získat ukázkové obrázky

Definujte odkaz na některé obrázky, které chcete analyzovat.

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

Pak přidejte následující kód k iterování imagí. Zbytek kódu v této části se bude nacházet uvnitř této smyčky.

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

Kontrolovat obsah pro dospělé/pikantní

Následující kód zkontroluje obrázek na dané adrese URL pro dospělé nebo pikantní obsah a vytiskne výsledky do konzoly. Informace o tom, co znamenají, najdete v příručce Koncepty pro moderování imagí .

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

Kontrolovat viditelný text

Následující kód zkontroluje obrázek pro viditelný textový obsah a vytiskne výsledky do konzoly.

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

Kontrolovat obličeje

Následující kód zkontroluje obrázek pro lidské obličeje a vytiskne výsledky do konzoly.

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

Použití vlastního seznamu obrázků

Následující kód ukazuje, jak spravovat vlastní seznam imagí pro moderování obrázku. Tato funkce je užitečná v případě, že vaše platforma často přijímá instance stejné sady imagí, které chcete vymonitorovat. Udržováním seznamu těchto konkrétních imagí můžete zlepšit výkon. Třída ListManagementImageListsOperations vám umožňuje vytvořit seznam obrázků, spravovat jednotlivé obrázky v seznamu a porovnat ostatní image.

Vytvořte následující textové proměnné pro uložení adres URL imagí, které budete používat v tomto scénáři.

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

Poznámka

Toto není správný seznam, ale neoficiální seznam imagí, který bude přidán do add images části kódu.

Vytvoření seznamu obrázků

Přidejte následující kód k vytvoření seznamu obrázků a uložte odkaz na jeho 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

Přidání obrázků do seznamu

Následující kód přidá všechny vaše obrázky do seznamu.

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

V rámci skriptu definujte funkci pomocné funkce add_images jinde.

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

Získat obrázky v seznamu

Následující kód vytiskne názvy všech obrázků v seznamu.

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

Aktualizovat podrobnosti seznamu

K aktualizaci názvu a popisu seznamu můžete použít ID seznamu.

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

Získat podrobnosti o seznamu

Chcete-li vytisknout aktuální podrobnosti o seznamu, použijte následující kód.

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

Aktualizovat index seznamu

Po přidání nebo odebrání obrázků je potřeba aktualizovat index seznamu, abyste ho mohli použít k zobrazení dalších imagí.

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

Porovná obrázky se seznamem.

Hlavní funkcí seznamů obrázků je porovnání nových imagí a zjištění, zda existují žádné shody.

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

Odebrání obrázku ze seznamu

Následující kód odstraní položku ze seznamu. V tomto případě se jedná o obrázek, který se neshoduje s kategorií seznamu.

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

Odebere všechny obrázky ze seznamu.

Pomocí následujícího kódu vymažte seznam obrázků.

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

Odstranit seznam obrázků

Pomocí následujícího kódu odstraňte daný seznam obrázků.

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

Vytvořit recenzi

Můžete použít knihovnu klienta Content Moderator Pythonu k zakládání obsahu do Nástroje pro kontrolu , aby ho lidé mohli zkontrolovat. Další informace o nástroji pro kontrolu najdete v koncepční příručce k nástroji pro kontrolu.

Následující kód používá třídu ReviewsOperations k vytvoření revize, načtení jeho ID a kontrolu jeho podrobností po přijetí lidského vstupu prostřednictvím webového portálu nástroje pro kontrolu.

Získat pověření pro kontrolu

Nejdřív se přihlaste k nástroji pro revizi a načtěte název svého týmu. Pak ji přiřaďte příslušné proměnné v kódu. Volitelně můžete nastavit koncový bod zpětného volání pro příjem aktualizací aktivity revize.

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

Vytvoření revize obrázku

Přidejte následující kód k vytvoření a odeslání revize pro danou adresu URL obrázku. Kód uloží odkaz na ID revize.

# 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

Získat podrobnosti o kontrole

Pomocí následujícího kódu zkontrolujte podrobnosti dané recenze. Po vytvoření recenze můžete přejít k nástroji pro kontrolu sami a interagovat s obsahem. Informace o tom, jak to provést, najdete v příručce k recenzi. Až budete hotovi, můžete znovu spustit tento kód a načte výsledky procesu kontroly.

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

Pokud jste v tomto scénáři použili koncový bod zpětného volání, měla by se zobrazit událost v tomto formátu:

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

Spuštění aplikace

Spusťte aplikaci pomocí python příkazu v souboru rychlého startu.

python quickstart-file.py

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny další prostředky, které jsou k ní přidružené.

Další kroky

V tomto rychlém startu jste zjistili, jak pomocí Content Moderator knihovny Pythonu provádět úlohy moderování. V dalším kroku se dozvíte další informace o moderování imagí nebo jiných médií. Přečtěte si koncepční průvodce.

Začněte s REST API Azure Content Moderator.

Content Moderator je služba AI, která umožňuje zpracovávat obsah, který je potenciálně urážlivý, rizikové nebo jinak nežádoucí. Použijte službu pro moderování obsahu s AI ke skenování textu, obrázku a videí a automatické použití příznaků obsahu. Potom Integrujte svoji aplikaci pomocí nástroje pro kontrolu online, což je prostředí moderátora pro tým pro lidské kontrolory. Sestavujte software pro filtrování obsahu do vaší aplikace, abyste vyhověli předpisům nebo zachovali zamýšlené prostředí pro vaše uživatele.

REST API Content Moderator použijte k těmto akcím:

  • Střední text
  • Střední obrázky

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma .
  • Jakmile budete mít předplatné Azure, Content Moderator v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k Content Moderator budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Svůj klíč a koncový bod vložíte do níže uvedeného kódu později v rychlém startu.
    • K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.
  • PowerShell verze 6.0 +nebo podobná aplikace příkazového řádku.

Střední text

Použijete příkaz podobný následujícímu pro volání rozhraní API Content Moderator k analýze textu a k vytištění výsledků do konzoly.

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"

Zkopírujte příkaz do textového editoru a proveďte následující změny:

  1. Přiřaďte Ocp-Apim-Subscription-Key svůj platný klíč předplatného obličeje.
  2. Změňte první část adresy URL dotazu tak, aby odpovídala koncovému bodu, který odpovídá vašemu klíči předplatného.

    Poznámka

    Nové prostředky vytvořené po 1. červenci 2019 budou používat názvy vlastních subdomén. Další informace a úplný seznam regionálních koncových bodů najdete v tématu názvy vlastních subdomén pro Cognitive Services.

  3. Volitelně můžete změnit text požadavku na libovolný řetězec textu, který chcete analyzovat.

Po provedení změn otevřete příkazový řádek a zadejte nový příkaz.

Prozkoumání výsledků

V okně konzoly by se měly zobrazit výsledky moderování textu jako data JSON. Například:

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

Další informace o atributech textu, které Content Moderator obrazovky pro, najdete v příručce Koncepty pro moderování textu .

Střední obrázky

Použijete příkaz podobný následujícímu pro volání rozhraní Content Moderator API pro střední vzdálenou bitovou kopii a k vytištění výsledků do konzoly.

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

Zkopírujte příkaz do textového editoru a proveďte následující změny:

  1. Přiřaďte Ocp-Apim-Subscription-Key svůj platný klíč předplatného obličeje.
  2. Změňte první část adresy URL dotazu tak, aby odpovídala koncovému bodu, který odpovídá vašemu klíči předplatného.
  3. Volitelně můžete změnit "Value" adresu URL v textu požadavku na libovolnou vzdálenou image, kterou chcete střední.

Tip

Střední místní image můžete také předat do textu žádosti. V referenční dokumentaci se dozvíte, jak to udělat.

Po provedení změn otevřete příkazový řádek a zadejte nový příkaz.

Prozkoumání výsledků

V okně konzoly byste měli vidět výsledky moderování obrázků, které se zobrazují jako data JSON.

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

Další informace o atributech obrázků, které Content Moderator obrazovky pro, najdete v příručce Koncepty pro moderování imagí .

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny další prostředky, které jsou k ní přidružené.

Další kroky

V tomto rychlém startu jste zjistili, jak používat REST API Content Moderator k provádění úloh moderování. V dalším kroku se dozvíte další informace o moderování imagí nebo jiných médií. Přečtěte si koncepční průvodce.