添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

試用 Azure AI 內容安全性 ,其提供進階 AI 功能和增強效能。

Azure AI 內容安全性是一個全方位的解決方案,旨在偵測應用程式和服務中有害的使用者產生和 AI 產生的內容。 Azure AI 內容安全適用于許多案例,例如線上市集、遊戲公司、社交訊息平臺、企業媒體公司,以及 K-12 教育解決方案提供者。 以下是其特性和功能的概觀:

  • 文字和影像偵測 API :掃描文字和影像中是否有多個嚴重性層級的性內容、暴力、暴力、暴力和自我傷害。
  • Content Safety Studio :一種線上工具,其設計目的是使用我們最新的內容仲裁 ML 模型來處理潛在冒犯性、有風險或不想要的內容。 它提供範本和自訂工作流程,讓使用者能夠建置自己的內容仲裁系統。
  • 語言支援 :Azure AI 內容安全性支援超過 100 種語言,並特別針對英文、德文、日文、西班牙文、法文、義大利文、葡萄牙文和中文進行訓練。
  • Azure AI 內容安全性為您的內容仲裁需求提供健全且彈性的解決方案。 藉由從 Content Moderator 切換至 Azure AI 內容安全性,您可以利用最新的工具和技術,以確保您的內容一律會仲裁為確切的規格。

    深入瞭解 Azure AI 內容安全性 ,並探索其如何提升內容仲裁策略。

    開始使用適用于 .NET 的 Azure AI Content Moderator 用戶端程式庫。 請遵循下列步驟來安裝 NuGet 套件,並試用基本工作的程式碼範例。

    Content Moderator 是一種 AI 服務,可讓您處理可能具冒犯意味、有風險或不當的資料。 使用 AI 驅動的內容審核服務來掃描文字、影像和影片,並自動套用內容旗標。 在應用程式中建置內容篩選軟體,以遵循法規或維護使用者應有的環境。

    使用適用於 .NET 的 Content Moderator 用戶端程式庫可以:

    參考文件 | 程式庫來源程式碼 | 套件 (NuGet) | 範例

  • Azure 訂用帳戶 - 建立免費帳戶
  • Visual Studio IDE 或目前版本的 .NET Core
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中 建立 Content Moderator 資源 ,以取得您的金鑰和端點。 部署完成後,按一下 [移至資源] 按鈕。
  • 您需要來自所建立資源的金鑰和端點,以將應用程式連線至 Content Moderator。 您稍後會在快速入門中將金鑰和端點貼到下列程式碼中。
  • 您可以使用免費定價層 ( F0 ) 來試用服務,之後可升級至付費層以用於實際執行環境。
  • 建立新的 C# 應用程式

    Visual Studio IDE

    在主控台視窗中 (例如 cmd、PowerShell 或 Bash),使用 dotnet new 命令建立名為 content-moderator-quickstart 的新主控台應用程式。 此命令會建立簡單的 "Hello World" C# 專案,內含單一原始程式檔: Program.cs

    dotnet new console -n content-moderator-quickstart
    

    將目錄變更為新建立的應用程式資料夾。 您可以使用下列命令來建置應用程式:

    dotnet build
    

    建置輸出應該不會有警告或錯誤。

    Build succeeded. 0 Warning(s) 0 Error(s)

    安裝用戶端程式庫

    在應用程式目錄中,使用下列命令安裝適用於 .NET 的 Content Moderator 用戶端程式庫:

    dotnet add package Microsoft.Azure.CognitiveServices.ContentModerator --version 2.0.0
    

    想要立刻檢視整個快速入門程式碼檔案嗎? 您可以在 GitHub 上找到該檔案,其中包含本快速入門中的程式碼範例。

    從專案目錄,在慣用的編輯器或 IDE 中開啟 Program.cs 檔案。 新增下列 using 陳述式:

    using Microsoft.Azure.CognitiveServices.ContentModerator;
    using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using System.Threading;
    

    Program 類別中,為資源的金鑰和端點建立變數。

    前往 Azure 入口網站。 如果您在 [必要條件] 區段中建立的 Content Moderator 資源成功部署,請按一下 [後續步驟] 底下的 [前往資源] 按鈕。 您可以在 [資源管理] 底下的 [金鑰和端點] 頁面中找到金鑰和端點。

    // Your Content Moderator subscription key is found in your Azure portal resource on the 'Keys' page.
    private static readonly string SubscriptionKey = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE";
    // Base endpoint URL. Found on 'Overview' page in Azure resource. For example: https://westus.api.cognitive.microsoft.com
    private static readonly string Endpoint = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE";
    

    完成時,請記得從程式碼中移除金鑰,且不要公開張貼金鑰。 在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需詳細資訊,請參閱 Azure AI 服務安全性一文。

    在應用程式的 main() 方法中,針對本快速入門中使用的方法新增呼叫。 您稍後會建立這些呼叫。

    // Create an image review client
    ContentModeratorClient clientImage = Authenticate(SubscriptionKey, Endpoint);
    // Create a text review client
    ContentModeratorClient clientText = Authenticate(SubscriptionKey, Endpoint);
    // Create a human reviews client
    ContentModeratorClient clientReviews = Authenticate(SubscriptionKey, Endpoint);
    
    // Moderate text from text in a file
    ModerateText(clientText, TextFile, TextOutputFile);
    
    // Moderate images from list of image URLs
    ModerateImages(clientImage, ImageUrlFile, ImageOutputFile);
    

    下列類別會處理 Content Moderator .NET 用戶端程式庫的一些主要功能。

    驗證用戶端

    在新方法中,使用端點和金鑰來具現化用戶端物件。

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

    下列程式碼會使用 Content Moderator 用戶端來分析文字主體,並將結果列印到主控台。 在 Program 類別的根目錄中,定義輸入和輸出檔案:

    // TEXT MODERATION
    // Name of the file that contains text
    private static readonly string TextFile = "TextFile.txt";
    // The name of the file to contain the output from the evaluation.
    private static string TextOutputFile = "TextModerationOutput.txt";
    

    然後,在專案的根目錄中新增 TextFile.txt 檔案。 將您自己的文字新增至此檔案,或使用下列範例文字:

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

    然後,在 Program 類別中的某處定義文字仲裁方法:

    * TEXT MODERATION * This example moderates text from file. public static void ModerateText(ContentModeratorClient client, string inputFile, string outputFile) Console.WriteLine("--------------------------------------------------------------"); Console.WriteLine(); Console.WriteLine("TEXT MODERATION"); Console.WriteLine(); // Load the input text. string text = File.ReadAllText(inputFile); // Remove carriage returns text = text.Replace(Environment.NewLine, " "); // Convert string to a byte[], then into a stream (for parameter in ScreenText()). byte[] textBytes = Encoding.UTF8.GetBytes(text); MemoryStream stream = new MemoryStream(textBytes); Console.WriteLine("Screening {0}...", inputFile); // Format text // Save the moderation results to a file. using (StreamWriter outputWriter = new StreamWriter(outputFile, false)) using (client) // Screen the input text: check for profanity, classify the text into three categories, // do autocorrect text, and check for personally identifying information (PII) outputWriter.WriteLine("Autocorrect typos, check for matching terms, PII, and classify."); // Moderate the text var screenResult = client.TextModeration.ScreenText("text/plain", stream, "eng", true, true, null, true); outputWriter.WriteLine(JsonConvert.SerializeObject(screenResult, Formatting.Indented)); outputWriter.Flush(); outputWriter.Close(); Console.WriteLine("Results written to {0}", outputFile); Console.WriteLine();

    下列程式碼會使用 Content Moderator 用戶端以及 ImageModeration 物件,來分析遠端影像中是否有成人和猥褻內容。

    您也可以分析本機影像的內容。 如需適用於本機影像的方法和作業,請參閱參考文件

    取得範例影像

    Program 類別的根目錄中,定義輸入和輸出檔案:

    // IMAGE MODERATION
    //The name of the file that contains the image URLs to evaluate.
    private static readonly string ImageUrlFile = "ImageFiles.txt";
    // The name of the file to contain the output from the evaluation.
    private static string ImageOutputFile = "ImageModerationOutput.json";
    

    然後,在專案的根目錄中建立輸入檔 ImageFiles.txt。 在此檔案中,您會新增要分析之影像的 URL — 每行一個 URL。 您可以使用下列範例影像:

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

    定義協助程式類別

    Program 類別中新增下列類別定義。 這個內部類別將會處理影像仲裁結果。

    // Contains the image moderation results for an image, 
    // including text and face detection results.
    public class EvaluationData
        // The URL of the evaluated image.
        public string ImageUrl;
        // The image moderation results.
        public Evaluate ImageModeration;
        // The text detection results.
        public OCR TextDetection;
        // The face detection results;
        public FoundFaces FaceDetection;
    

    定義影像仲裁方法

    下列方法會逐一查看文字檔中的影像 URL、建立 EvaluationData 執行個體,並分析影像中是否有成人/猥褻內容、文字和人臉。 然後,它會將最終的 EvaluationData 執行個體新增至清單,並將傳回資料的完整清單寫入至主控台。

    逐一查看影像

    * IMAGE MODERATION * This example moderates images from URLs. public static void ModerateImages(ContentModeratorClient client, string urlFile, string outputFile) Console.WriteLine("--------------------------------------------------------------"); Console.WriteLine(); Console.WriteLine("IMAGE MODERATION"); Console.WriteLine(); // Create an object to store the image moderation results. List<EvaluationData> evaluationData = new List<EvaluationData>(); using (client) // Read image URLs from the input file and evaluate each one. using (StreamReader inputReader = new StreamReader(urlFile)) while (!inputReader.EndOfStream) string line = inputReader.ReadLine().Trim(); if (line != String.Empty) Console.WriteLine("Evaluating {0}...", Path.GetFileName(line)); var imageUrl = new BodyModel("URL", line.Trim());

    若要進一步了解 Content Moderator 所過濾的影像屬性,請參閱影像仲裁概念指南。

                var imageData = new EvaluationData
                    ImageUrl = imageUrl.Value,
                    // Evaluate for adult and racy content.
                    ImageModeration =
                    client.ImageModeration.EvaluateUrlInput("application/json", imageUrl, true)
                Thread.Sleep(1000);
                // Detect and extract text.
                imageData.TextDetection =
                    client.ImageModeration.OCRUrlInput("eng", "application/json", imageUrl, true);
                Thread.Sleep(1000);
                // Detect faces.
                imageData.FaceDetection =
                    client.ImageModeration.FindFacesUrlInput("application/json", imageUrl, true);
                Thread.Sleep(1000);
                // Add results to Evaluation object
                evaluationData.Add(imageData);
    

    將仲裁結果寫入至檔案

            // Save the moderation results to a file.
            using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
                outputWriter.WriteLine(JsonConvert.SerializeObject(
                    evaluationData, Formatting.Indented));
                outputWriter.Flush();
                outputWriter.Close();
            Console.WriteLine();
            Console.WriteLine("Image moderation results written to output file: " + outputFile);
            Console.WriteLine();
    

    執行應用程式

    Visual Studio IDE

    開始使用適用于 JAVA 的 Azure AI Content Moderator 用戶端程式庫。 請遵循下列步驟來安裝 Maven 套件,並試用基本工作的程式碼範例。

    Content Moderator 是一種 AI 服務,可讓您處理可能具冒犯意味、有風險或不當的資料。 使用 AI 驅動的內容審核服務來掃描文字、影像和影片,並自動套用內容旗標。 在應用程式中建置內容篩選軟體,以遵循法規或維護使用者應有的環境。

    使用適用於 Java 的 Content Moderator 用戶端程式庫可以:

    參考文件 | 程式庫原始程式碼 |成品 (Maven) | 範例

  • Azure 訂用帳戶 - 建立免費帳戶
  • 最新版的 Java Development Kit (JDK)
  • Gradle 建置工具,或其他相依性管理員。
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Content Moderator 資源,以取得您的金鑰和端點。 部署完成後,按一下 [移至資源] 按鈕。
  • 您需要來自所建立資源的金鑰和端點,以將應用程式連線至 Content Moderator。 您稍後會在快速入門中將金鑰和端點貼到下列程式碼中。
  • 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。
  • 建立新的 Gradle 專案

    在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。

    mkdir myapp && cd myapp
    

    從您的工作目錄執行 gradle init 命令。 此命令會建立 Gradle 的基本組建檔案,包括 build.gradle.kts,此檔案將在執行階段用來建立及設定您的應用程式。

    gradle init --type basic
    

    出現選擇 DSL 的提示時,請選取 [Kotlin]。

    安裝用戶端程式庫

    找出 build.gradle.kts,並使用您慣用的 IDE 或文字編輯器加以開啟。 然後,在其中複製下列組建組態。 此組態會將專案定義為進入點為 ContentModeratorQuickstart 類別的 Java 應用程式。 這會匯入 Content Moderator 用戶端程式庫和 GSON SDK,以進行 JSON 序列化。

    plugins {
        application
    application{ 
        mainClassName = "ContentModeratorQuickstart"
    repositories{
        mavenCentral()
    dependencies{
        compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-contentmoderator", version = "1.0.2-beta")
        compile(group = "com.google.code.gson", name = "gson", version = "2.8.5")
    

    建立 Java 檔案

    在您的工作目錄中執行下列命令,以建立專案來源資料夾:

    mkdir -p src/main/java
    

    瀏覽至新的資料夾,並建立名為 ContentModeratorQuickstart.java 的檔案。 在您慣用的編輯器或 IDE 中開啟該檔案,並新增下列 import 陳述式:

    import com.google.gson.*;
    import com.microsoft.azure.cognitiveservices.vision.contentmoderator.*;
    import com.microsoft.azure.cognitiveservices.vision.contentmoderator.models.*;
    import java.io.*;
    import java.util.*;
    import java.util.concurrent.*;
    

    想要立刻檢視整個快速入門程式碼檔案嗎? 您可以在 GitHub 上找到該檔案,其中包含本快速入門中的程式碼範例。

    In the application's ContentModeratorQuickstart class, create variables for your resource's key and endpoint.

    前往 Azure 入口網站。 如果您在 [必要條件] 區段中建立的 Content Moderator 資源成功部署,請按一下 [後續步驟] 底下的 [前往資源] 按鈕。 您可以在 [資源管理] 底下的 [金鑰和端點] 頁面中找到金鑰和端點。

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

    完成時,請記得從程式碼中移除金鑰,且不要公開張貼金鑰。 在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需詳細資訊,請參閱 Azure AI 服務安全性一文。

    在應用程式的 main 方法中,針對本快速入門中使用的方法新增呼叫。 您稍後將定義這些方法。

    // Create a List in which to store the image moderation results.
    List<EvaluationData> evaluationData = new ArrayList<EvaluationData>();
    // Moderate URL images
    moderateImages(client, evaluationData);
    // Moderate text from file
    moderateText(client);
    // Create a human review
    humanReviews(client);
    

    下列類別會處理 Content Moderator Java 用戶端程式庫的一些主要功能。

    驗證用戶端

    在應用程式的 main 方法中,使用您的訂用帳戶端點值和訂用帳戶金鑰來建立 ContentModeratorClient 物件。

    // Set CONTENT_MODERATOR_SUBSCRIPTION_KEY in your environment settings, with
    // your key as its value.
    // Set COMPUTER_MODERATOR_ENDPOINT in your environment variables with your Azure
    // endpoint.
    ContentModeratorClient client = ContentModeratorManager.authenticate(AzureRegionBaseUrl.fromString(endpoint),
            "CONTENT_MODERATOR_SUBSCRIPTION_KEY");
    

    設定範例文字

    ContentModeratorQuickstart 類別的頂端,定義對本地文字檔的參考。 將 .txt 檔案新增至您的專案目錄,並輸入想要分析的文字。

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

    建立新的方法來讀取 .txt 檔案,並在每一行上呼叫 screenText 方法。

    public static void moderateText(ContentModeratorClient client) {
        System.out.println("---------------------------------------");
        System.out.println("MODERATE TEXT");
        System.out.println();
        try (BufferedReader inputStream = new BufferedReader(new FileReader(textFile))) {
            String line;
            Screen textResults = null;
            // For formatting the printed results
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            while ((line = inputStream.readLine()) != null) {
                if (line.length() > 0) {
                    textResults = client.textModerations().screenText("text/plain", line.getBytes(), null);
                    // Uncomment below line to print in console
                    // System.out.println(gson.toJson(textResults).toString());
    

    新增下列程式碼,將仲裁結果列印到專案目錄中的 .json 檔案。

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

    關閉 trycatch 陳述式以完成此方法。

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

    設定範例影像

    在新的方法中,使用指向影像的指定 URL 字串建立 BodyModelModel 物件。

    public static void moderateImages(ContentModeratorClient client, List<EvaluationData> resultsList) {
        System.out.println();
        System.out.println("---------------------------------------");
        System.out.println("MODERATE IMAGES");
        System.out.println();
        try {
            String urlString = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
            // Evaluate each line of text
            BodyModelModel url = new BodyModelModel();
            url.withDataRepresentation("URL");
            url.withValue(urlString);
            // Save to EvaluationData class for later
            EvaluationData imageData = new EvaluationData();
            imageData.ImageUrl = url.value();
    

    定義協助程式類別

    然後,在您的 ContentModeratorQuickstart.java 檔案中,將下列類別定義新增至 ContentModeratorQuickstart 類別內。 影像仲裁程序將會使用此內部類別。

    // Contains the image moderation results for an image, including text and face
    // detection from the image.
    public static class EvaluationData {
        // The URL of the evaluated image.
        public String ImageUrl;
        // The image moderation results.
        public Evaluate ImageModeration;
        // The text detection results.
        public OCR TextDetection;
        // The face detection results;
        public FoundFaces FaceDetection;
    

    這行程式碼會檢查指定 URL 中的影像是否有成人或猥褻內容。 如需這些字詞的相關資訊,請參閱「影像仲裁概念」指南。

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

    這行程式碼會檢查影像中是否有可見文字。

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

    這行程式碼會檢查影像中是否有人臉。

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

    最後,將傳回的資訊儲存在 EvaluationData 清單中。

    resultsList.add(imageData);
    

    while 迴圈後面新增下列程式碼,以將結果列印至主控台和輸出檔案 src/main/resources/ModerationOutput.json

    // Save the moderation results to a file.
    // ModerationOutput.json contains the output from the evaluation.
    // Relative paths are relative to the execution directory (where pom.xml is
    // located).
    BufferedWriter writer = new BufferedWriter(
            new FileWriter(new File("src\\main\\resources\\ImageModerationOutput.json")));
    // For formatting the printed results
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    writer.write(gson.toJson(resultsList).toString());
    System.out.println("Check ImageModerationOutput.json to see printed results.");
    writer.close();
    

    關閉 try 陳述式,並新增用來完成此方法的 catch 陳述式。

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

    執行應用程式

    您可以使用下列命令來建置應用程式:

    gradle build
    

    使用 gradle run 命令執行應用程式:

    gradle run
    

    然後,瀏覽至 src/main/resources/ModerationOutput.json 檔案,並檢視內容仲裁的結果。

    如果您想要清除和移除 Azure AI 服務訂用帳戶,則可以刪除資源或資源群組。 刪除資源群組也會刪除其關聯的任何其他資源。

  • Azure CLI
  • 在本快速入門中,您已了解如何使用 Content Moderator Java 程式庫來執行仲裁工作。 接下來請閱讀概念性指南,以深入了解影像或其他媒體的仲裁。

    影像仲裁概念

    開始使用適用于 Python 的 Azure AI Content Moderator 用戶端程式庫。 請遵循下列步驟來安裝 PiPy 套件,並試用基本工作的程式碼範例。

    Content Moderator 是一種 AI 服務,可讓您處理可能具冒犯意味、有風險或不當的資料。 使用 AI 驅動的內容審核服務來掃描文字、影像和影片,並自動套用內容旗標。 在應用程式中建置內容篩選軟體,以遵循法規或維護使用者應有的環境。

    使用適用於 Python 的 Content Moderator 用戶端程式庫可以:

  • 使用自訂字詞清單
  • 使用自訂影像清單
  • 參考文件 | 程式庫原始程式碼 | 套件 (PiPy) | 範例

  • Azure 訂用帳戶 - 建立免費帳戶
  • Python 3.x
  • 您安裝的 Python 應包含 pip。 您可以在命令列上執行 pip --version 來檢查是否已安裝 pip。 安裝最新版本的 Python 以取得 pip。
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Content Moderator 資源,以取得您的金鑰和端點。 部署完成後,按一下 [移至資源] 按鈕。
  • 您需要來自所建立資源的金鑰和端點,以將應用程式連線至 Content Moderator。 您稍後會在快速入門中將金鑰和端點貼到下列程式碼中。
  • 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。
  • 安裝用戶端程式庫

    安裝 Python 之後,您可以使用下列命令來安裝 Content Moderator 用戶端程式庫:

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

    建立新的 Python 應用程式

    在您慣用的編輯器或 IDE 中建立新的 Python 指令碼,並加以開啟。 然後,在檔案頂端新增下列 import 陳述式。

    import os.path
    from pprint import pprint
    import time
    from io import BytesIO
    from random import random
    import uuid
    from azure.cognitiveservices.vision.contentmoderator import ContentModeratorClient
    import azure.cognitiveservices.vision.contentmoderator.models
    from msrest.authentication import CognitiveServicesCredentials
    

    想要立刻檢視整個快速入門程式碼檔案嗎? 您可以在 GitHub 上找到該檔案,其中包含本快速入門中的程式碼範例。

    接著,為資源的端點位置和變數建立變數。

    前往 Azure 入口網站。 如果您在 [必要條件] 區段中建立的 Content Moderator 資源成功部署,請按一下 [後續步驟] 底下的 [前往資源] 按鈕。 您可以在 [資源管理] 底下的 [金鑰和端點] 頁面中找到金鑰和端點。

    CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
    subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"
    

    完成時,請記得從程式碼中移除金鑰,且不要公開張貼金鑰。 在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需詳細資訊,請參閱 Azure AI 服務安全性一文。

    下列類別會處理 Content Moderator Python 用戶端程式庫的一些主要功能。

    驗證用戶端

    使用端點和金鑰來具現化用戶端。 使用金鑰建立 CognitiveServicesCredentials 物件,並使用該物件與您的端點建立 ContentModeratorClient 物件。

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

    下列程式碼會使用 Content Moderator 用戶端來分析文字主體,並將結果列印到主控台。 首先,在專案的根目錄建立 text_files/ 資料夾,並新增 content_moderator_text_moderation.txt 檔案。 將您自己的文字新增至此檔案,或使用下列範例文字:

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

    將參考新增至新的資料夾。

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

    然後,將下列程式碼新增至 Python 指令碼。

    # Screen the input text: check for profanity,
    # do autocorrect text, and check for personally identifying
    # information (PII)
    with open(os.path.join(TEXT_FOLDER, 'content_moderator_text_moderation.txt'), "rb") as text_fd:
        screen = client.text_moderation.screen_text(
            text_content_type="text/plain",
            text_content=text_fd,
            language="eng",
            autocorrect=True,
            pii=True
        assert isinstance(screen, Screen)
        pprint(screen.as_dict())
    

    使用自訂字詞清單

    下列程式碼說明如何管理文字仲裁的自訂字詞清單。 您可以使用 ListManagementTermListsOperations 類別建立字詞清單、管理個別字詞,以及根據該清單過濾其他文字主體。

    取得範例文字

    若要使用此範例,您必須在專案的根目錄建立 text_files/ 資料夾,並新增 content_moderator_term_list.txt 檔案。 此檔案應包含將根據字詞清單受到檢查的有機文字。 您可以使用下列範例文字:

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

    將參考新增至資料夾 (如果尚未定義)。

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

    將下列程式碼新增至 Python 指令碼以建立自訂字詞清單,並儲存其識別碼值。

    # Create list print("\nCreating list") custom_list = client.list_management_term_lists.create( content_type="application/json", body={ "name": "Term list name", "description": "Term list description", print("List created:") assert isinstance(custom_list, TermList) pprint(custom_list.as_dict()) list_id = custom_list.id

    定義清單詳細資料

    您可以使用清單的識別碼來編輯其名稱和描述。

    # Update list details print("\nUpdating details for list {}".format(list_id)) updated_list = client.list_management_term_lists.update( list_id=list_id, content_type="application/json", body={ "name": "New name", "description": "New description" assert isinstance(updated_list, TermList) pprint(updated_list.as_dict())

    將字詞新增至清單

    下列程式碼會將字詞 "term1""term2" 新增至清單。

    # Add terms print("\nAdding terms to list {}".format(list_id)) client.list_management_term.add_term( list_id=list_id, term="term1", language="eng" client.list_management_term.add_term( list_id=list_id, term="term2", language="eng"

    取得清單中的所有字詞

    您可以使用清單識別碼傳回清單中的所有字詞。

    # Get all terms ids print("\nGetting all term IDs for list {}".format(list_id)) terms = client.list_management_term.get_all_terms( list_id=list_id, language="eng") assert isinstance(terms, Terms) terms_data = terms.data assert isinstance(terms_data, TermsData) pprint(terms_data.as_dict())

    重新整理清單索引

    每當您在清單中新增或移除字詞時,都必須重新整理索引,才能使用更新的清單。

    # Refresh the index print("\nRefreshing the search index for list {}".format(list_id)) refresh_index = client.list_management_term_lists.refresh_index_method( list_id=list_id, language="eng") assert isinstance(refresh_index, RefreshIndex) pprint(refresh_index.as_dict()) print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format( LATENCY_DELAY)) time.sleep(LATENCY_DELAY * 60)

    根據清單過濾文字

    自訂字詞清單的主要功能是將文字的主體與清單進行比較,並找出任何相符的字詞。

    # Screen text with open(os.path.join(TEXT_FOLDER, 'content_moderator_term_list.txt'), "rb") as text_fd: screen = client.text_moderation.screen_text( text_content_type="text/plain", text_content=text_fd, language="eng", autocorrect=False, pii=False, list_id=list_id assert isinstance(screen, Screen) pprint(screen.as_dict())

    從清單中移除字詞

    下列程式碼會從清單中移除字詞 "term1"

    # Remove terms term_to_remove = "term1" print("\nRemove term {} from list {}".format(term_to_remove, list_id)) client.list_management_term.delete_term( list_id=list_id, term=term_to_remove, language="eng"

    從清單中移除所有字詞

    使用下列程式碼清除所有字詞的清單。

    # Delete all terms print("\nDelete all terms in the image list {}".format(list_id)) client.list_management_term.delete_all_terms( list_id=list_id, language="eng")

    使用下列程式碼刪除自訂字詞清單。

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

    下列程式碼會使用 Content Moderator 用戶端以及 ImageModerationOperations 物件,來分析成人和猥褻內容的影像。

    取得範例影像

    定義要分析之部分影像的參考。

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

    然後,新增下列程式碼以逐一查看您的影像。 本節中的其餘程式碼將在此迴圈內執行。

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

    檢查成人/猥褻內容

    下列程式碼會檢查指定 URL 中的影像是否有成人或猥褻內容,並將結果列印到主控台。 若想了解這些字詞所代表的意義,請參閱影像仲裁概念指南。

    print("\nEvaluate for adult and racy content.")
    evaluation = client.image_moderation.evaluate_url_input(
        content_type="application/json",
        cache_image=True,
        data_representation="URL",
        value=image_url
    assert isinstance(evaluation, Evaluate)
    pprint(evaluation.as_dict())
    

    檢查可見文字

    下列程式碼會檢查影像中是否有可見文字內容,並將結果列印到主控台。

    print("\nDetect and extract text.")
    evaluation = client.image_moderation.ocr_url_input(
        language="eng",
        content_type="application/json",
        data_representation="URL",
        value=image_url,
        cache_image=True,
    assert isinstance(evaluation, OCR)
    pprint(evaluation.as_dict())
    

    下列程式碼會檢查影像中是否有臉部,並將結果列印到主控台。

    print("\nDetect faces.")
    evaluation = client.image_moderation.find_faces_url_input(
        content_type="application/json",
        cache_image=True,
        data_representation="URL",
        value=image_url
    assert isinstance(evaluation, FoundFaces)
    pprint(evaluation.as_dict())
    

    使用自訂影像清單

    下列程式碼說明如何管理影像仲裁的自訂影像清單。 如果您的平台經常收到同一組您想要過濾掉的影像執行個體,此功能將可發揮效用。藉由維護這些特定影像的清單,您將可改善效能。 ListManagementImageListsOperations 類別可讓您建立影像清單、管理清單上的個別影像,以及將其他影像與清單進行比較。

    建立下列文字變數,以儲存您將在此案例中使用的影像 URL。

    IMAGE_LIST = {
        "Sports": [
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample6.png",
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample9.png"
        "Swimsuit": [
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample3.png",
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
            "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
    IMAGES_TO_MATCH = [
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
    

    這本身並不是正確的清單,而是將在程式碼的 add images 區段中新增的非正式影像清單。

    建立影像清單

    新增下列程式碼,以建立影像清單並儲存其識別碼的參考。

    # Create list print("Creating list MyList\n") custom_list = client.list_management_image_lists.create( content_type="application/json", body={ "name": "MyList", "description": "A sample list", "metadata": { "key_one": "Acceptable", "key_two": "Potentially racy" print("List created:") assert isinstance(custom_list, ImageList) pprint(custom_list.as_dict()) list_id = custom_list.id

    將影像新增至清單

    下列程式碼會將您所有的影像新增至清單。

    print("\nAdding images to list {}".format(list_id))
    index = {}  # Keep an index url to id for later removal
    for label, urls in IMAGE_LIST.items():
        for url in urls:
            image = add_images(list_id, url, label)
            if image:
                index[url] = image.content_id
    

    在指令碼中的任一處定義 add_images Helper 函式。

    # 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)) added_image = client.list_management_image.add_image_url_input( list_id=list_id, content_type="application/json", data_representation="URL", value=image_url, label=label except APIErrorException as err: # sample4 will fail print("Unable to add image to list: {}".format(err)) else: assert isinstance(added_image, Image) pprint(added_image.as_dict()) return added_image

    取得清單中的影像

    下列程式碼會列印清單中所有影像的名稱。

    # Get all images ids print("\nGetting all image IDs for list {}".format(list_id)) image_ids = client.list_management_image.get_all_image_ids(list_id=list_id) assert isinstance(image_ids, ImageIds) pprint(image_ids.as_dict())

    更新清單詳細資料

    您可以使用清單識別碼來更新清單的名稱和描述。

    # Update list details print("\nUpdating details for list {}".format(list_id)) updated_list = client.list_management_image_lists.update( list_id=list_id, content_type="application/json", body={ "name": "Swimsuits and sports" assert isinstance(updated_list, ImageList) pprint(updated_list.as_dict())

    取得清單詳細資料

    使用下列程式碼來列印清單目前的詳細資料。

    # Get list details print("\nGetting details for list {}".format(list_id)) list_details = client.list_management_image_lists.get_details( list_id=list_id) assert isinstance(list_details, ImageList) pprint(list_details.as_dict())

    重新整理清單索引

    新增或移除影像之後,您必須先重新整理清單索引,才能用它來過濾其他影像。

    # Refresh the index print("\nRefreshing the search index for list {}".format(list_id)) refresh_index = client.list_management_image_lists.refresh_index_method( list_id=list_id) assert isinstance(refresh_index, RefreshIndex) pprint(refresh_index.as_dict()) print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format( LATENCY_DELAY)) time.sleep(LATENCY_DELAY * 60)

    根據清單比對影像

    影像清單的主要功能是要比較新的影像,並查看是否有任何相符項目。

    # Match images against the image list. for image_url in IMAGES_TO_MATCH: print("\nMatching image {} against list {}".format(image_url, list_id)) match_result = client.image_moderation.match_url_input( content_type="application/json", list_id=list_id, data_representation="URL", value=image_url, assert isinstance(match_result, MatchResponse) print("Is match? {}".format(match_result.is_match)) print("Complete match details:") pprint(match_result.as_dict())

    從清單中移除影像

    下列程式碼會從清單中移除項目。 此案例中的影像是不符合清單類別的影像。

    # Remove images correction = "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png" print("\nRemove image {} from list {}".format(correction, list_id)) client.list_management_image.delete_image( list_id=list_id, image_id=index[correction]

    從清單中移除所有影像

    使用下列程式碼清除影像清單。

    # Delete all images print("\nDelete all images in the image list {}".format(list_id)) client.list_management_image.delete_all_images(list_id=list_id)

    刪除影像清單

    使用下列程式碼刪除指定的影像清單。

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

    執行應用程式

    使用快速入門檔案上使用 python 命令執行應用程式。

    python quickstart-file.py
    

    如果您想要清除和移除 Azure AI 服務訂用帳戶,則可以刪除資源或資源群組。 刪除資源群組也會刪除其關聯的任何其他資源。

  • Azure CLI
  • 在本快速入門中,您已了解如何使用 Content Moderator Python 程式庫來執行仲裁工作。 接下來請閱讀概念性指南,以深入了解影像或其他媒體的仲裁。

    影像仲裁概念

    開始使用 Azure AI Content Moderator REST API。

    Content Moderator 是一種 AI 服務,可讓您處理可能具冒犯意味、有風險或不當的資料。 使用 AI 驅動的內容審核服務來掃描文字、影像和影片,並自動套用內容旗標。 在應用程式中建置內容篩選軟體,以遵循法規或維護使用者應有的環境。

    使用 Content Moderator REST API 執行下列動作:

  • Azure 訂用帳戶 - 建立免費帳戶
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Content Moderator 資源,以取得您的金鑰和端點。 部署完成後,按一下 [移至資源] 按鈕。
  • 您需要來自所建立資源的金鑰和端點,以將應用程式連線至 Content Moderator。 您稍後會在快速入門中將金鑰和端點貼到下列程式碼中。
  • 您可以使用免費定價層 (F0) 來試用服務,之後可升級至付費層以用於實際執行環境。
  • PowerShell 6.0 版以上,或類似的命令列應用程式。
  • 您將使用如下所示的命令呼叫 Content Moderator API 來分析文字主體,並將結果列印到主控台。

    curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessText/Screen?autocorrect=True&PII=True&classify=True&language={string}" -H "Content-Type: text/plain" -H "Ocp-Apim-Subscription-Key: {subscription key}" --data-ascii "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255, 1 Microsoft Way, Redmond, WA 98052"

    將命令複製到文字編輯器,並進行下列變更:

  • Ocp-Apim-Subscription-Key 指派至您的有效臉部訂用帳戶金鑰。

    完成時,請記得從程式碼中移除金鑰,且不要公開張貼金鑰。 在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需詳細資訊,請參閱 Azure AI 服務安全性一文。

  • 變更查詢 URL 的第一個部分,以符合與您訂用帳戶金鑰對應的端點。

    2019 年 7 月 1 日之後建立的新資源會使用自訂的子網域名稱。 如需詳細資訊和區域端點的完整清單,請參閱 Azure AI 服務的自訂子功能變數名稱稱

  • 選擇性地將要求主體變更為您想要分析的任何文字字串。
  • 完成變更之後,請開啟命令提示字元並輸入新的命令。

    您應該會在主控台視窗中看到顯示為 JSON 資料的文字仲裁結果。 例如:

    "OriginalText": "Is this a <offensive word> email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255,\n1 Microsoft Way, Redmond, WA 98052\n", "NormalizedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052", "AutoCorrectedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052", "Misrepresentation": null, "PII": { "Email": [ "Detected": "abcdef@abcd.com", "SubType": "Regular", "Text": "abcdef@abcd.com", "Index": 21 "IPA": [ "SubType": "IPV4", "Text": "255.255.255.255", "Index": 61 "Phone": [ "CountryCode": "US", "Text": "6657789887", "Index": 45 "Address": [ "Text": "1 Microsoft Way, Redmond, WA 98052", "Index": 78 "Classification": { "Category1": "Score": 0.5 "Category2": "Score": 0.6 "Category3": "Score": 0.5 "ReviewRecommended": true "Language": "eng", "Terms": [ "Index": 10, "OriginalIndex": 10, "ListId": 0, "Term": "<offensive word>" "Status": { "Code": 3000, "Description": "OK", "Exception": null "TrackingId": "1717c837-cfb5-4fc0-9adc-24859bfd7fac"

    若要進一步了解 Content Moderator 所過濾的文字屬性,請參閱文字仲裁概念指南。

    您將使用如下所示的命令呼叫 Content Moderator API 來仲裁遠端影像,並將結果列印到主控台。

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

    將命令複製到文字編輯器,並進行下列變更:

  • Ocp-Apim-Subscription-Key 指派至您的有效臉部訂用帳戶金鑰。
  • 變更查詢 URL 的第一個部分,以符合與您訂用帳戶金鑰對應的端點。
  • 選擇性地將要求主體中的 "Value" URL 變更為您想要仲裁的任何遠端影像。
  • 您也可以藉由將其位元組資料傳遞至要求主體,來仲裁本機影像。 若要了解如何執行此操作,請參閱參考文件

    完成變更之後,請開啟命令提示字元並輸入新的命令。

    您應該會在主控台視窗中看到顯示為 JSON 資料的影像仲裁結果。

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

    若要進一步了解 Content Moderator 所過濾的影像屬性,請參閱影像仲裁概念指南。

    如果您想要清除和移除 Azure AI 服務訂用帳戶,則可以刪除資源或資源群組。 刪除資源群組也會刪除其關聯的任何其他資源。

  • Azure CLI
  • 在本快速入門中,您已了解如何使用 Content Moderator REST API 來執行仲裁工作。 接下來請閱讀概念性指南,以深入了解影像或其他媒體的仲裁。

  • 影像仲裁概念
  • 文字仲裁概念
  •