Quickstart: استخدم مكتبة عميل Content Moderator

هام

يتم إهمال Azure Content Moderator في فبراير 2024، وسيتم إيقافه بحلول فبراير 2027. يتم استبداله بمحتوى Azure الذكاء الاصطناعي خزينة ty، والذي يوفر ميزات الذكاء الاصطناعي متقدمة وأداء محسنا.

Azure الذكاء الاصطناعي Content خزينة ty هو حل شامل مصمم للكشف عن المحتوى الضار الذي ينشئه المستخدم وينشأ الذكاء الاصطناعي في التطبيقات والخدمات. يعد Azure الذكاء الاصطناعي Content خزينة ty مناسبا للعديد من السيناريوهات مثل الأسواق عبر الإنترنت وشركات الألعاب ومنصات المراسلة الاجتماعية وشركات وسائط المؤسسات وموفري حلول التعليم K-12. فيما يلي نظرة عامة على ميزاته وقدراته:

  • واجهات برمجة التطبيقات للكشف عن النصوص والصور: فحص النصوص والصور بحثا عن المحتوى الجنسي والعنف والكراهية وإيذاء الذات مع مستويات خطورة متعددة.
  • المحتوى خزينة استوديو: أداة عبر الإنترنت مصممة للتعامل مع المحتوى الذي يحتمل أن يكون مسيئا أو محفوفا بالمخاطر أو غير مرغوب فيه باستخدام أحدث نماذج التعلم الآلي الخاصة بنا وضع الخيمة ration. يوفر قوالب ومهام سير عمل مخصصة تمكن المستخدمين من إنشاء أنظمة con وضع الخيمة ration الخاصة بهم.
  • دعم اللغة: يدعم Azure الذكاء الاصطناعي Content خزينة ty أكثر من 100 لغة ويتم تدريبه بشكل خاص على اللغة الإنجليزية والألمانية واليابانية والإسبانية والفرنسية والإيطالية والبرتغالية والصينية.

يوفر azure الذكاء الاصطناعي Content خزينة ty حلا قويا ومرنا لاحتياجات con وضع الخيمة ration الخاصة بك. بالتبديل من Content Moderator إلى Azure الذكاء الاصطناعي Content خزينة ty، يمكنك الاستفادة من أحدث الأدوات والتقنيات للتأكد من أن المحتوى الخاص بك يتم الإشراف عليه دائما إلى المواصفات الدقيقة.

تعرف على المزيد حول Azure الذكاء الاصطناعي Content خزينة واستكشف كيف يمكن أن يرفع من مستوى استراتيجية con وضع الخيمة ration الخاصة بك.

ابدأ مع مكتبة عميل Azure Content Moderator لـ .NET. اتبع هذه الخطوات لتثبيت حزمة NuGet وجرب مثال التعليمات البرمجية للمهام الأساسية.

Content Moderator هي خدمة ذكاء اصطناعي تتيح لك التعامل مع المحتوى الذي يُحتمل أن يكون مسيئاً أو محفوفاً بالمخاطر أو غير مرغوب فيه بأي شكل آخر. استخدم خدمة الإشراف على المحتوى المدعومة بالذكاء الاصطناعي لمسح النص والصورة ومقاطع الفيديو ضوئياً وتطبيق علامات المحتوى تلقائياً. يمكنك إنشاء برنامج لتصفية المحتوى في تطبيقك للامتثال للوائح أو الحفاظ على البيئة المقصودة للمستخدمين.

استخدم مكتبة عميل Content Moderator لـ .NET من أجل:

  • نص معتدل
  • إدارة الصور

الوثائق المرجعية | التعليمات البرمجية لمصدر المكتبة | حزمة (NuGet) | نماذج

المتطلبات الأساسية

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • إصدار Visual Studio IDE أو الإصدار الحالي من .NET Core.
  • بمجرد حصولك على اشتراك Azure، أنشئ مورد Content Moderator في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
    • ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لربط تطبيقك بمشرف المحتوى. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.

الإعداد

إنشاء تطبيق C# جديد

باستخدام Visual Studio، قم بإنشاء تطبيق .NET Core جديد.

تثبيت مكتبة العميل

بمجرد إنشاء مشروع جديد، تثبيت مكتبة العميل بالنقر بزر الماوس الأيمن فوق حل المشروع في "Solution Explorer" وتحديد "Manage NuGet Packages". في إدارة الحزمة التي يتم فتحها، حدد تصفح، وحدد تضمين الإصدار التجريبي، وابحث عن Microsoft.Azure.CognitiveServices.ContentModerator. حدد الإصدار 2.0.0، ثم حدد Install.

تلميح

هل تريد عرض ملف التعليمات البرمجية للبدء السريع بالكامل في الحال؟ يُمكن العثور على GitHub، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.

من دليل المشروع، افتح الملف ⁧⁧Program.cs في المحرر المفضل لديك أو IDE. أضف عبارات 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;

في فئة البرنامج، أنشئ متغيرات لمفتاح المورد ونقطة النهاية.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد منسق المحتوى الذي أنشأته في قسم المتطلبات الأساسية بنجاح، فانقر فوق الزر Go to resource ضمن الخطوات التالية. يمكنك العثور على مفتاحك ونقطة النهاية في صفحة المفتاح ونقطة النهاية للمورد ضمن إدارة المورد.

// 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 الذكاء الاصطناعي للحصول على مزيد من المعلومات.

في أسلوب 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);

نموذج الكائن

تتعامل الفئات التالية مع بعض الميزات الرئيسية لمكتبة عميل .NET Moderator.

الاسم ‏‏الوصف
عميل منسق المحتوى هذا الفصل مطلوب لجميع وظائف منسق المحتوى. تنشئ مثيل لها باستخدام معلومات الاشتراك خاصتك، وتستخدمها لإنتاج مثيلات فئات أخرى.
تعديل الصورة توفر هذه الفئة وظيفة تحليل الصور لمحتوى البالغين أو المعلومات الشخصية أو الوجوه البشرية.
TextModeration يوفر هذا الفصل وظيفة لتحليل النص للغة والألفاظ النابية والأخطاء والمعلومات الشخصية.

أمثلة على التعليمات البرمجية

توضح لك مقتطفات التعليمات البرمجية هذه كيفية القيام بالمهام التالية باستخدام مكتبة عميل Content Moderator لـ .NET:

مصادقة العميل

في طريقة جديدة، قم بإنشاء مثيل كائنات العميل بنقطة النهاية والمفتاح.

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

    return client;
}

نص معتدل

تستخدم التعليمات البرمجية التالية عميل Content Moderator لتحليل نص وطباعة النتائج إلى وحدة التحكم. في جذر فئة البرنامج، حدد input and output files:

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

ثم حدد the text moderation method somewhere in your Program class:

/*
 * 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، لتحليل الصور البعيدة لمحتوى البالغين والمحتوى البالغ.

إشعار

يمكنك أيضاً تحليل محتوى الصورة المحلية. راجع الوثائق المرجعية للتعرف على الأساليب والعمليات التي تعمل مع الصور المحلية.

الحصول على عينة من الصور

حدد input and output files في جذر فئة 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

تحديد فئة المساعد

أضف تعريف الفئة التالي داخل فئة البرنامج. ستتعامل هذه الفئة الداخلية مع نتائج الاعتدال في الصور.

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

حدد the image moderation method

تتكرر الطريقة التالية من خلال عناوين 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());

تحليل المحتوى

لمزيد من المعلومات حول سمات الصورة التي يقوم منسق المحتوى بشاشاتها، راجع دليل مفاهيم تعديل الصور.

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

شغّل التطبيق

قم بتشغيل التطبيق بنقر الزر Debug أعلى نافذة IDE.

تنظيف الموارد

إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

الخطوات التالية

في هذه البداية السريعة، تعلمت كيفية استخدام مكتبة Content Moderator .NET للقيام بمهام الإشراف. بعد ذلك، تعرف على المزيد حول الاعتدال في الصور أو الوسائط الأخرى من خلال قراءة دليل مفاهيمي.

ابدأ مع مكتبة عميل Azure Content Moderator لـ Java. اتبع هذه الخطوات لتثبيت حزمة Maven وجرب مثال التعليمات البرمجية للمهام الأساسية.

Content Moderator هي خدمة ذكاء اصطناعي تتيح لك التعامل مع المحتوى الذي يُحتمل أن يكون مسيئاً أو محفوفاً بالمخاطر أو غير مرغوب فيه بأي شكل آخر. استخدم خدمة الإشراف على المحتوى المدعومة بالذكاء الاصطناعي لمسح النص والصورة ومقاطع الفيديو ضوئياً وتطبيق علامات المحتوى تلقائياً. يمكنك إنشاء برنامج لتصفية المحتوى في تطبيقك للامتثال للوائح أو الحفاظ على البيئة المقصودة للمستخدمين.

استخدم مكتبة عميل Content Moderator لـ Java من أجل:

  • نص معتدل
  • إدارة الصور

المرجع | رمز مصدر المكتبة |عينات من برنامج | (Maven)

المتطلبات الأساسية

  • اشتراك Azure - إنشاء اشتراك مجاناً
  • الإصدار الحالي من Java Development Kit (JDK)
  • أداة إنشاء Gradleأو مدير تبعية آخر.
  • بمجرد حصولك على اشتراك Azure، أنشئ مورد Content Moderator في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
    • ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لربط تطبيقك بمشرف المحتوى. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (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 المفضل لديك أو محرر النصوص. ثم انسخ في تكوين البناء التالي. يعرّف هذا التكوين المشروع على أنه تطبيق Java نقطة دخوله هي الفئة ContentModeratorQuickstart. يقوم باستيراد مكتبة عميل Content Moderator وGSON sdk لتسلسل JSON.

plugins {
    java
    application
}

application{ 
    mainClassName = "ContentModeratorQuickstart"
}

repositories{
    mavenCentral()
}

dependencies{
    compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-contentmoderator", version = "1.0.2-beta")
    compile(group = "com.google.code.gson", name = "gson", version = "2.8.5")
}

إنشاء ملف Java

من دليل العمل الخاص بك، قم بتشغيل الأمر التالي لإنشاء مجلد مصدر المشروع:

mkdir -p src/main/java

انتقل إلى المجلد الجديد وأنشئ ملفاً يسمى ContentModeratorQuickstart.java. افتحه في المحرر المفضل لديك أو 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، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.

في فئة التطبيق ContentModeratorQuickstart قم بإنشاء متغيرات للمفتاح ونقطة النهاية للمورد الخاص بك.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد منسق المحتوى الذي أنشأته في قسم المتطلبات الأساسية بنجاح، فانقر فوق الزر Go to resource ضمن الخطوات التالية. يمكنك العثور على مفتاحك ونقطة النهاية في صفحة المفتاح ونقطة النهاية للمورد ضمن إدارة المورد.

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

هام

تذكر إزالة المفتاح من التعليمة البرمجية عند الانتهاء، وعدم توزيعها علناً. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.

في أسلوب التطبيق الرئيسيأضف المكالمات للأساليب المستخدمة في التشغيل السريع. ستحدد هذه الطرق لاحقاً.

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

نموذج الكائن

تتعامل الفئات التالية مع بعض الميزات الرئيسية لمكتبة عميل Java لـ Content Moderator.

الاسم ‏‏الوصف
عميل منسق المحتوى هذا الفصل مطلوب لجميع وظائف منسق المحتوى. تنشئ مثيل لها باستخدام معلومات الاشتراك خاصتك، وتستخدمها لإنتاج مثيلات فئات أخرى.
تعديل الصورة توفر هذه الفئة وظيفة تحليل الصور لمحتوى البالغين أو المعلومات الشخصية أو الوجوه البشرية.
TextModerations يوفر هذا الفصل وظيفة لتحليل النص للغة والألفاظ النابية والأخطاء والمعلومات الشخصية.

أمثلة على التعليمات البرمجية

توضح لك مقتطفات التعليمات البرمجية هذه كيفية القيام بالمهام التالية باستخدام مكتبة عميل Content Moderator لـ Java:

مصادقة العميل

في طريقة التطبيق main قم بإنشاء كائن ContentModeratorClient باستخدام قيمة نقطة نهاية الاشتراك ومفتاح الاشتراك.

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

نص معتدل

إعداد نص عينة

في الجزء العلوي من فئة Content Moderator Quickstart حدد مرجعاً لملف نصي محلي. أضف ملف .txt إلى دليل مشروعك وأدخل النص الذي ترغب في تحليله.

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

تحليل النص

قم بإنشاء طريقة جديدة لقراءة ملف .txt واستدعاء طريقة screenText في كل سطر.

public static void moderateText(ContentModeratorClient client) {
    System.out.println("---------------------------------------");
    System.out.println("MODERATE TEXT");
    System.out.println();

    try (BufferedReader inputStream = new BufferedReader(new FileReader(textFile))) {
        String line;
        Screen textResults = null;
        // For formatting the printed results
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        while ((line = inputStream.readLine()) != null) {
            if (line.length() > 0) {
                textResults = client.textModerations().screenText("text/plain", line.getBytes(), null);
                // Uncomment below line to print in console
                // System.out.println(gson.toJson(textResults).toString());
            }
        }

أضف التعليمات البرمجية التالية لطباعة نتائج الإشراف إلى ملف .json في دليل المشروع الخاص بك.

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

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

أغلق العبارة try وcatch لإكمال الطريقة.

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

إدارة الصور

إعداد صورة العينة

في طريقة جديدة، أنشئ كائن BodyModelModel بسلسلة عنوان URL محددة تشير إلى صورة.

public static void moderateImages(ContentModeratorClient client, List<EvaluationData> resultsList) {
    System.out.println();
    System.out.println("---------------------------------------");
    System.out.println("MODERATE IMAGES");
    System.out.println();

    try {
        String urlString = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
        // Evaluate each line of text
        BodyModelModel url = new BodyModelModel();
        url.withDataRepresentation("URL");
        url.withValue(urlString);
        // Save to EvaluationData class for later
        EvaluationData imageData = new EvaluationData();
        imageData.ImageUrl = url.value();

تحديد فئة المساعد

بعد ذلك، في ملف ContentModeratorQuickstart.java أضف تعريف الفئة التالي داخل فئة ContentModeratorQuickstart. يتم استخدام هذه الفئة الداخلية في عملية تعديل الصورة.

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

تحليل المحتوى

يتحقق هذا السطر من التعليمات البرمجية من الصورة على عنوان URL المحدد لمحتوى للبالغين أو محتوى للبالغين. راجع الدليل المفاهيمي لتعديل الصور للحصول على معلومات حول هذه المصطلحات.

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

تحقق من وجود نص

هذا السطر من التعليمات البرمجية يتحقق من الصورة بحثاً عن نص مرئي.

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

التحقق من وجود وجوه

هذا السطر من التعليمات البرمجية يتحقق من صورة الوجوه البشرية.

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

أخيراً، قم بتخزين المعلومات التي تم إرجاعها في قائمة EvaluationData.

resultsList.add(imageData);

بعد الحلقة while أضف التعليمة البرمجية التالية، الذي يطبع النتائج إلى وحدة التحكم وإلى ملف الإخراج، src / main / resources / ModerationOutput.json.

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

writer.write(gson.toJson(resultsList).toString());
System.out.println("Check ImageModerationOutput.json to see printed results.");
writer.close();

أغلق عبارة tryوأضف عبارةcatch لإكمال الطريقة.

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

شغّل التطبيق

يمكنك إنشاء التطبيق باستخدام:

gradle build

قم بتشغيل التطبيق باستخدام الأمر gradle run:

gradle run

ثم انتقل إلى ملف ModerationOutput.json واعرض نتائج الإشراف على المحتوى الخاص بك.

تنظيف الموارد

إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

الخطوات التالية

في هذه البداية السريعة، تعلمت كيفية استخدام مكتبة Java لمدير المحتوى لأداء مهام الإشراف. بعد ذلك، تعرف على المزيد حول الاعتدال في الصور أو الوسائط الأخرى من خلال قراءة دليل مفاهيمي.

ابدأ باستخدام مكتبة عميل Azure Content Moderator لـ Python. اتبع هذه الخطوات لتثبيت الحزمة PiPy وتجربة نموذج تعليمات البرمجة للمهام الأساسية.

Content Moderator هي خدمة ذكاء اصطناعي تتيح لك التعامل مع المحتوى الذي يُحتمل أن يكون مسيئاً أو محفوفاً بالمخاطر أو غير مرغوب فيه بأي شكل آخر. استخدم خدمة الإشراف على المحتوى المدعومة بالذكاء الاصطناعي لمسح النص والصورة ومقاطع الفيديو ضوئياً وتطبيق علامات المحتوى تلقائياً. يمكنك إنشاء برنامج لتصفية المحتوى في تطبيقك للامتثال للوائح أو الحفاظ على البيئة المقصودة للمستخدمين.

استخدام مكتبة عميل Content Moderator لـ Python من أجل:

  • نص معتدل
  • Use a custom terms list
  • إدارة الصور
  • Use a custom image list

Reference documentation | Library source code | Package (PiPy) | Samples

المتطلبات الأساسية

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • Python 3.x
    • يجب أن يتضمن تثبيت Python خاصتك pip. يمكنك التحقق مما إذا كانت لديك نقطة مثبتة عن طريق تشغيل pip --version على سطر الأوامر. الحصول على نقطة عن طريق تثبيت أحدث إصدار من Python.
  • بمجرد حصولك على اشتراك Azure، أنشئ مورد Content Moderator في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
    • ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لربط تطبيقك بمشرف المحتوى. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.

الإعداد

تثبيت مكتبة العميل

بعد تثبيت Python، يمكنك تثبيت مكتبة العميل Content Moderator بالأوامر التالية:

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

إنشاء تطبيق Python جديد

إنشاء نص Python جديد في المحرر المفضل لديك أو IDE. ثم قم بإضافة 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، والذي يحتوي على أمثلة التعليمات البرمجية في التشغيل السريع.

إنشاء متغيرات لنقطة نهاية Microsoft Azure الخاصة بالمورد والمفتاح.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد منسق المحتوى الذي أنشأته في قسم المتطلبات الأساسية بنجاح، فانقر فوق الزر Go to resource ضمن الخطوات التالية. يمكنك العثور على مفتاحك ونقطة النهاية في صفحة المفتاح ونقطة النهاية للمورد ضمن إدارة المورد.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

هام

تذكر إزالة المفتاح من التعليمة البرمجية عند الانتهاء، وعدم توزيعها علناً. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.

نموذج الكائن

تتعامل الفئات التالية مع بعض الميزات الرئيسية لمكتبة عميل Content Moderator Python.

الاسم ‏‏الوصف
عميل منسق المحتوى هذا الفصل مطلوب لجميع وظائف منسق المحتوى. تنشئ مثيل لها باستخدام معلومات الاشتراك خاصتك، وتستخدمها لإنتاج مثيلات فئات أخرى.
ImageModerationOperations توفر هذه الفئة وظيفة تحليل الصور لمحتوى البالغين أو المعلومات الشخصية أو الوجوه البشرية.
TextModerationOperations يوفر هذا الفصل وظيفة لتحليل النص للغة والألفاظ النابية والأخطاء والمعلومات الشخصية.

أمثلة على التعليمات البرمجية

توضح لك أجزاء الرموز هذه كيفية تنفيذ المهام التالية باستخدام مكتبة عميل Content Moderator لـ Python:

مصادقة العميل

إنشاء مثيل لعميل باستخدام نقطة النهاية والمفتاح. إنشاء كائن CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials باستخدام المفتاح الخاص بك، واستخدامه مع نقطة النهاية لإنشاء كائن ContentModeratorClient .

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

نص معتدل

تستخدم التعليمات البرمجية التالية عميل Content Moderator لتحليل نص وطباعة النتائج إلى وحدة التحكم. أولا، إنشاء text_files/ في جذر المشروع وإضافة ملف content_moderator_text_moderation.txt. أضف النص الخاص بك إلى هذا الملف، أو استخدم النص النموذجي التالي:

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

إضافة مرجع إلى مكتبة new folder.

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

Use a custom terms list

توضح التعليمات البرمجية التالية كيفية إدارة قائمة المصطلحات المخصصة لاعتدال النص. يمكنك استخدام 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 المحدد للمحتوى البالغ أو المحتوى الناضج وطباعة النتائج إلى وحدة التحكم. راجع دليل Image moderation concepts على الصورة للحصول على معلومات حول ما تعنيه هذه المصطلحات.

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

Use a custom image list

توضح التعليمات البرمجية التالية كيفية إدارة قائمة مخصصة من الصور لإدارة صورة الإشراف. هذه الميزة مفيدة إذا كان النظام الأساسي الخاص بك يتلقى بشكل متكرر صور مماثلة من نفس مجموعة الصور التي تريد فرزها. فمن خلال الاحتفاظ بقائمة بهذه الصور المحددة، يمكنك تحسين الأداء. تسمح لك 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 في مكان آخر في البرنامج النصي الخاص بك.

#
# Add images
#
def add_images(list_id, image_url, label):
    """Generic add_images from url and label."""
    print("\nAdding image {} to list {} with label {}.".format(
        image_url, list_id, label))
    try:
        added_image = client.list_management_image.add_image_url_input(
            list_id=list_id,
            content_type="application/json",
            data_representation="URL",
            value=image_url,
            label=label
        )
    except APIErrorException as err:
        # sample4 will fail
        print("Unable to add image to list: {}".format(err))
    else:
        assert isinstance(added_image, Image)
        pprint(added_image.as_dict())
        return added_image

الحصول على الصور في القائمة

تطبع التعليمات البرمجية التالية أسماء جميع الصور في القائمة.

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

تحديث تفاصيل القائمة

يمكنك استخدام معرف القائمة لتحديث اسم ووصف القائمة.

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

الحصول على تفاصيل القائمة

استخدم التعليمات البرمجية التالية لطباعة التفاصيل الحالية للقائمة.

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

تحديث فهرس القائمة

بعد إضافة الصور أو إزالتها، يجب تحديث فهرس القائمة قبل أن تتمكن من استخدامه لعرض صور أخرى.

#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_image_lists.refresh_index_method(
    list_id=list_id)
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())

print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
    LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)

مطابقة الصور مع القائمة

الوظيفة الرئيسية لقوائم الصور هي مقارنة الصور الجديدة ومعرفة ما إذا كانت هناك أي تطابقات.

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

إزالة صورة من القائمة

التعليمات البرمجية التالية إزالة المصطلح من القائمة. في هذه الحالة، تكون الصورة غير متطابقة مع فئة القائمة.

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

إزالة جميع الصور من قائمة

استخدم التعليمات البرمجية التالية لمسح قائمة الصور.

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

حذف قائمة الصور

استخدم التعليمات البرمجية التالية لمسح قائمة الصور.

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

شغّل التطبيق

شغّل التطبيق باستخدام الأمر python المُتاح على ملف التشغيل السريع.

python quickstart-file.py

تنظيف الموارد

إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

الخطوات التالية

في هذا التشغيل السريع، تعلمت كيفية استخدام مكتبة Content Moderator Python للقيام بمهام الإشراف. بعد ذلك، تعرف على المزيد حول الاعتدال في الصور أو الوسائط الأخرى من خلال قراءة دليل مفاهيمي.

البدء في استخدام واجهة برمجة التطبيقات REST الخاص بـ Azure Content Moderator.

Content Moderator هي خدمة ذكاء اصطناعي تتيح لك التعامل مع المحتوى الذي يُحتمل أن يكون مسيئاً أو محفوفاً بالمخاطر أو غير مرغوب فيه بأي شكل آخر. استخدم خدمة الإشراف على المحتوى المدعومة بالذكاء الاصطناعي لمسح النص والصورة ومقاطع الفيديو ضوئياً وتطبيق علامات المحتوى تلقائياً. يمكنك إنشاء برنامج لتصفية المحتوى في تطبيقك للامتثال للوائح أو الحفاظ على البيئة المقصودة للمستخدمين.

استخدم واجهة برمجة تطبيقات REST لـ Content Moderator فيما يلي:

  • نص معتدل
  • إدارة الصور

المتطلبات الأساسية

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • بمجرد حصولك على اشتراك Azure، أنشئ مورد Content Moderator في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق زرالانتقال إلى المورد.
    • ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لربط تطبيقك بمشرف المحتوى. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • الإصدار 6.0+ من PowerShell، أو تطبيق سطر أوامر مشابهة.

نص معتدل

ستستخدم أمراً مثل ما يلي لاستدعاء واجهة برمجة التطبيقات في Content Moderator لتحليل نص وطباعة النتائج إلى وحدة التحكم.

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

نسخ الأمر إلى محرر نصوص وإجراء التغييرات التالية:

  1. عيّن Ocp-Apim-Subscription-Key لمفتاح اشتراك Face صالح.

    هام

    تذكر إزالة المفتاح من التعليمة البرمجية عند الانتهاء، وعدم توزيعها علناً. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. راجع مقالة أمان خدمات Azure الذكاء الاصطناعي للحصول على مزيد من المعلومات.

  2. غيّر الجزء الأول من عنوان URL للاستعلام لمطابقة نقطة النهاية التي تتوافق مع مفتاح اشتراكك.

    إشعار

    الموارد الجديدة التي تم إنشاؤها بعد 1 يوليو 2019 ستستخدم أسماء النطاقات الفرعية المخصصة. لمزيد من المعلومات وقائمة كاملة بنقاط النهاية الإقليمية، راجع أسماء النطاقات الفرعية المخصصة لخدمات Azure الذكاء الاصطناعي.

  3. يمكنك اختيارياً تغيير نص الطلب إلى أي تسلسل نصي تود تحليله.

بمجرد إجراء التغييرات، افتح موجه الأوامر وأدخل الأمر الجديد.

فحص النتائج

يجب أن تشاهد معلومات مراجعة النص معروضة كبيانات JSON في نافذة وحدة التحكم. على سبيل المثال:

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

لمزيد من المعلومات حول سمات المعروضة على شاشات Content Moderator، راجع دليل مفاهيم الإشراف على النص.

إدارة الصور

ستستخدم أمراً مثل ما يلي لاستدعاء واجهة برمجة التطبيقات في Content Moderator لتحليل صورة بعيدة وطباعة النتائج إلى وحدة التحكم.

curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessImage/Evaluate?CacheImage={boolean}" 
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}" 
--data-ascii "{\"DataRepresentation\":\"URL\", \"Value\":\"https://moderatorsampleimages.blob.core.windows.net/samples/sample.jpg\"}"

نسخ الأمر إلى محرر نصوص وإجراء التغييرات التالية:

  1. عيّن Ocp-Apim-Subscription-Key لمفتاح اشتراك Face صالح.
  2. غيّر الجزء الأول من عنوان URL للاستعلام لمطابقة نقطة النهاية التي تتوافق مع مفتاح اشتراكك.
  3. يمكنك اختياريا تغيير رابط URL "Value" في نص الطلب إلى أي صورة بعيدة تود إدارتها.

تلميح

يمكنك أيضاً إدارة الصور المحلية عن طريق تمرير بيانات البايت الخاصة بها ضمن نص الطلب. اطلع على الوثائق المرجعية لمعرفة المزيد حول هذا.

بمجرد إجراء التغييرات، افتح موجه الأوامر وأدخل الأمر الجديد.

فحص النتائج

يجب أن ترى نتائج إدارة الصورة معروضة كبيانات 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>"
}

لمزيد من المعلومات حول سمات الصورة التي يقوم منسق المحتوى بشاشاتها، راجع دليل مفاهيم تعديل الصور.

تنظيف الموارد

إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا.

الخطوات التالية

في هذا التشغيل السريع، تعلمت كيفية استخدام واجهة برمجة التطبيقات REST في Content Moderator للقيام بمهام الإشراف. بعد ذلك، تعرف على المزيد حول الاعتدال في الصور أو الوسائط الأخرى من خلال قراءة دليل مفاهيمي.