التشغيل السريع: استخدام ملخص النص والمستند والمحادثة

هام

تعرض منطقة المعاينة الخاصة بنا، سويد سنترال، أحدث تقنيات ضبط LLM المتطورة باستمرار استنادا إلى نماذج GPT. نرحب بتجربتها باستخدام مورد Language في منطقة وسط السويد.

لا يتوفر ملخص المحادثة إلا باستخدام:

  • واجهة برمجة تطبيقات REST
  • Python
  • C#‎

استخدم هذا التشغيل السريع لإنشاء تطبيق تلخيص نصي مع مكتبة العميل لـ .NET. في المثال التالي، ستقوم بإنشاء تطبيق C# يمكنه تلخيص المستندات أو محادثات خدمة العملاء المستندة إلى النص.

تلميح

يمكنك استخدام Language Studio لتجربة تلخيص النص دون الحاجة إلى كتابة التعليمات البرمجية.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • Visual Studio IDE
  • بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Language في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • سوف تحتاج المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك إلى API. يمكنك لصق المفتاح ونقطة النهاية في التعليمات البرمجية لاحقا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (Free F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • لاستخدام ميزة التحليل، سوف تحتاج إلى مورد اللغة مع مستوى التسعير القياسي (S).

الإعداد

إنشاء متغيرات البيئة

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

تلميح

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

لتعيين متغير البيئة لمفتاح مورد Language، افتح نافذة وحدة تحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  1. لتعيين LANGUAGE_KEY متغير البيئة، استبدل your-key بأحد مفاتيح المورد الخاص بك.
  2. لتعيين LANGUAGE_ENDPOINT متغير البيئة، استبدل your-endpoint بنقطة النهاية للمورد الخاص بك.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

إشعار

إذا كنت بحاجة فقط إلى الوصول إلى متغيرات البيئة في وحدة التحكم الحالية قيد التشغيل، يمكنك تعيين متغير البيئة باستخدام set بدلا من setx.

بعد إضافة متغيرات البيئة، قد تحتاج إلى إعادة تشغيل أي برامج قيد التشغيل ستحتاج إلى قراءة متغيرات البيئة، بما في ذلك نافذة وحدة التحكم. على سبيل المثال، إذا كنت تستخدم Visual Studio كمحرر، فأعد تشغيل Visual Studio قبل تشغيل المثال.

إنشاء تطبيق .NET Core جديد

باستخدام Visual Studio IDE، قم بإنشاء تطبيق وحدة تحكم .NET Core جديد. يؤدي هذا إلى إنشاء مشروع "مرحبًا بالعالم" مع ملف مصدر C# واحد: program.cs.

تثبيت مكتبة العميل بالنقر بزر الماوس الأيمن فوق الحل في "Solution Explorer" وتحديد "Manage NuGet Packages". في إدارة الحزمة التي تفتح، حدد "Browse" وابحث عن Azure.AI.TextAnalytics. تأكد من تحديد "Include prerelease". حدد الإصدار 5.3.0، ثم حدد Install. يمكنك أيضاً استخدام Package Manager Console.

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

انسخ التعليمة البرمجية التالية إلى ملفprogram.cs. ثم قم بتشغيل التعليمة البرمجية.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد اللغة الذي أنشأته في قسمPrerequisites بنجاح، فانقر فوق الزر Go to Resource ضمن Next Steps. يمكنك العثور على المفتاح ونقطة النهاية بالانتقال إلى صفحة Keys and Endpoint ضمن Resource Management.

هام

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

using Azure;
using System;
using Azure.AI.TextAnalytics;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace Example
{
    class Program
    {
        // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");

        private static readonly AzureKeyCredential credentials = new AzureKeyCredential(languageKey);
        private static readonly Uri endpoint = new Uri(languageEndpoint);

        // Example method for summarizing text
        static async Task TextSummarizationExample(TextAnalyticsClient client)
        {
            string document = @"The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document. 
                These sentences collectively convey the main idea of the document. This feature is provided as an API for developers. 
                They can use it to build intelligent solutions based on the relevant information extracted to support various use cases. 
                Extractive summarization supports several languages. It is based on pretrained multilingual transformer models, part of our quest for holistic representations. 
                It draws its strength from transfer learning across monolingual and harness the shared nature of languages to produce models of improved quality and efficiency." ;
        
            // Prepare analyze operation input. You can add multiple documents to this list and perform the same
            // operation to all of them.
            var batchInput = new List<string>
            {
                document
            };
        
            TextAnalyticsActions actions = new TextAnalyticsActions()
            {
                ExtractiveSummarizeActions = new List<ExtractiveSummarizeAction>() { new ExtractiveSummarizeAction() }
            };
        
            // Start analysis process.
            AnalyzeActionsOperation operation = await client.StartAnalyzeActionsAsync(batchInput, actions);
            await operation.WaitForCompletionAsync();
            // View operation status.
            Console.WriteLine($"AnalyzeActions operation has completed");
            Console.WriteLine();
        
            Console.WriteLine($"Created On   : {operation.CreatedOn}");
            Console.WriteLine($"Expires On   : {operation.ExpiresOn}");
            Console.WriteLine($"Id           : {operation.Id}");
            Console.WriteLine($"Status       : {operation.Status}");
        
            Console.WriteLine();
            // View operation results.
            await foreach (AnalyzeActionsResult documentsInPage in operation.Value)
            {
                IReadOnlyCollection<ExtractiveSummarizeActionResult> summaryResults = documentsInPage.ExtractiveSummarizeResults;
        
                foreach (ExtractiveSummarizeActionResult summaryActionResults in summaryResults)
                {
                    if (summaryActionResults.HasError)
                    {
                        Console.WriteLine($"  Error!");
                        Console.WriteLine($"  Action error code: {summaryActionResults.Error.ErrorCode}.");
                        Console.WriteLine($"  Message: {summaryActionResults.Error.Message}");
                        continue;
                    }
        
                    foreach (ExtractiveSummarizeResult documentResults in summaryActionResults.DocumentsResults)
                    {
                        if (documentResults.HasError)
                        {
                            Console.WriteLine($"  Error!");
                            Console.WriteLine($"  Document error code: {documentResults.Error.ErrorCode}.");
                            Console.WriteLine($"  Message: {documentResults.Error.Message}");
                            continue;
                        }
        
                        Console.WriteLine($"  Extracted the following {documentResults.Sentences.Count} sentence(s):");
                        Console.WriteLine();
        
                        foreach (ExtractiveSummarySentence sentence in documentResults.Sentences)
                        {
                            Console.WriteLine($"  Sentence: {sentence.Text}");
                            Console.WriteLine();
                        }
                    }
                }
            }
        }

        static async Task Main(string[] args)
        {
            var client = new TextAnalyticsClient(endpoint, credentials);
            await TextSummarizationExample(client);
        }
    }
}

المخرجات

AnalyzeActions operation has completed

Created On   : 9/16/2021 8:04:27 PM +00:00
Expires On   : 9/17/2021 8:04:27 PM +00:00
Id           : 2e63fa58-fbaa-4be9-a700-080cff098f91
Status       : succeeded

Extracted the following 3 sentence(s):

Sentence: The extractive summarization feature in uses natural language processing techniques to locate key sentences in an unstructured text document.

Sentence: This feature is provided as an API for developers.

Sentence: They can use it to build intelligent solutions based on the relevant information extracted to support various use cases.

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

استخدم هذا التشغيل السريع لإنشاء تطبيق تلخيص نصي مع مكتبة العميل لـ Java. في المثال التالي، ستقوم بإنشاء تطبيق Java يمكنه تلخيص المستندات.

تلميح

يمكنك استخدام Language Studio لتجربة تلخيص النص دون الحاجة إلى كتابة التعليمات البرمجية.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • Java Development Kit (SDK) الإصدار 8 أو أعلى.
  • بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Language في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • سوف تحتاج المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك إلى API. يمكنك لصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (Free F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • لاستخدام ميزة التحليل، سوف تحتاج إلى مورد اللغة مع مستوى التسعير القياسي (S).

الإعداد

إضافة مكتبة العميل

إنشاء مشروع Maven في IDE أو بيئة التطوير المفضلة لديك. ثم أضف التبعية التالية إلى ملف pom.xml الخاص بمشروعك. يمكنك العثور على بنية التنفيذ لأدوات البناء الأخرى عبر الإنترنت.

<dependencies>
     <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-textanalytics</artifactId>
        <version>5.3.0</version>
    </dependency>
</dependencies>

إنشاء متغيرات البيئة

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

تلميح

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

لتعيين متغير البيئة لمفتاح مورد Language، افتح نافذة وحدة تحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  1. لتعيين LANGUAGE_KEY متغير البيئة، استبدل your-key بأحد مفاتيح المورد الخاص بك.
  2. لتعيين LANGUAGE_ENDPOINT متغير البيئة، استبدل your-endpoint بنقطة النهاية للمورد الخاص بك.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

إشعار

إذا كنت بحاجة فقط إلى الوصول إلى متغيرات البيئة في وحدة التحكم الحالية قيد التشغيل، يمكنك تعيين متغير البيئة باستخدام set بدلا من setx.

بعد إضافة متغيرات البيئة، قد تحتاج إلى إعادة تشغيل أي برامج قيد التشغيل ستحتاج إلى قراءة متغيرات البيئة، بما في ذلك نافذة وحدة التحكم. على سبيل المثال، إذا كنت تستخدم Visual Studio كمحرر، فأعد تشغيل Visual Studio قبل تشغيل المثال.

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

إنشاء ملف Java باسم Example.java. افتح الملف وانسخ التعليمات البرمجية أدناه. ثم قم بتشغيل التعليمة البرمجية.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد اللغة الذي أنشأته في قسمPrerequisites بنجاح، فانقر فوق الزر Go to Resource ضمن Next Steps. يمكنك العثور على المفتاح ونقطة النهاية بالانتقال إلى صفحة Keys and Endpoint ضمن Resource Management.

هام

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

import com.azure.core.credential.AzureKeyCredential;
import com.azure.ai.textanalytics.models.*;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.TextAnalyticsClient;
import java.util.ArrayList;
import java.util.List;
import com.azure.core.util.polling.SyncPoller;
import com.azure.ai.textanalytics.util.*;

public class Example {

    // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
    private static String languageKey = System.getenv("LANGUAGE_KEY");
    private static String languageEndpoint = System.getenv("LANGUAGE_ENDPOINT");

    public static void main(String[] args) {
        TextAnalyticsClient client = authenticateClient(languageKey, languageEndpoint);
        summarizationExample(client);
    }
    // Method to authenticate the client object with your key and endpoint
    static TextAnalyticsClient authenticateClient(String key, String endpoint) {
        return new TextAnalyticsClientBuilder()
                .credential(new AzureKeyCredential(key))
                .endpoint(endpoint)
                .buildClient();
    }
    // Example method for summarizing text
    static void summarizationExample(TextAnalyticsClient client) {
        List<String> documents = new ArrayList<>();
        documents.add(
                "The extractive summarization feature uses natural language processing techniques "
                + "to locate key sentences in an unstructured text document. "
                + "These sentences collectively convey the main idea of the document. This feature is provided as an API for developers. "
                + "They can use it to build intelligent solutions based on the relevant information extracted to support various use cases. "
                + "Extractive summarization supports several languages. "
                + "It is based on pretrained multilingual transformer models, part of our quest for holistic representations. "
                + "It draws its strength from transfer learning across monolingual and harness the shared nature of languages "
                + "to produce models of improved quality and efficiency.");
    
        SyncPoller<AnalyzeActionsOperationDetail, AnalyzeActionsResultPagedIterable> syncPoller =
                client.beginAnalyzeActions(documents,
                        new TextAnalyticsActions().setDisplayName("{tasks_display_name}")
                                .setExtractSummaryActions(
                                        new ExtractSummaryAction()),
                        "en",
                        new AnalyzeActionsOptions());
    
        syncPoller.waitForCompletion();
    
        syncPoller.getFinalResult().forEach(actionsResult -> {
            System.out.println("Extractive Summarization action results:");
            for (ExtractSummaryActionResult actionResult : actionsResult.getExtractSummaryResults()) {
                if (!actionResult.isError()) {
                    for (ExtractSummaryResult documentResult : actionResult.getDocumentsResults()) {
                        if (!documentResult.isError()) {
                            System.out.println("\tExtracted summary sentences:");
                            for (SummarySentence summarySentence : documentResult.getSentences()) {
                                System.out.printf(
                                        "\t\t Sentence text: %s, length: %d, offset: %d, rank score: %f.%n",
                                        summarySentence.getText(), summarySentence.getLength(),
                                        summarySentence.getOffset(), summarySentence.getRankScore());
                            }
                        } else {
                            System.out.printf("\tCannot extract summary sentences. Error: %s%n",
                                    documentResult.getError().getMessage());
                        }
                    }
                } else {
                    System.out.printf("\tCannot execute Extractive Summarization action. Error: %s%n",
                            actionResult.getError().getMessage());
                }
            }
        });
    }
}

المخرجات

Extractive Summarization action results:
	Extracted summary sentences:
		 Sentence text: The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document., length: 138, offset: 0, rank score: 1.000000.
		 Sentence text: This feature is provided as an API for developers., length: 50, offset: 206, rank score: 0.510000.
		 Sentence text: Extractive summarization supports several languages., length: 52, offset: 378, rank score: 0.410000.

الوثائق المرجعية | عينات إضافية | الحزمة (npm) | التعليمة البرمجية لمصدر المكتبة

استخدم هذا التشغيل السريع لإنشاء تطبيق تلخيص نصي مع مكتبة العميل لـ Node.js. في المثال التالي، ستقوم بإنشاء تطبيق JavaScript يمكنه تلخيص المستندات.

تلميح

يمكنك استخدام Language Studio لتجربة تلخيص النص دون الحاجة إلى كتابة التعليمات البرمجية.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • Node.js v16 LTS
  • بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Language في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • سوف تحتاج المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك إلى API. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (Free F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • لاستخدام ميزة التحليل، سوف تحتاج إلى مورد اللغة مع مستوى التسعير القياسي (S).

الإعداد

إنشاء متغيرات البيئة

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

تلميح

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

لتعيين متغير البيئة لمفتاح مورد Language، افتح نافذة وحدة تحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  1. لتعيين LANGUAGE_KEY متغير البيئة، استبدل your-key بأحد مفاتيح المورد الخاص بك.
  2. لتعيين LANGUAGE_ENDPOINT متغير البيئة، استبدل your-endpoint بنقطة النهاية للمورد الخاص بك.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

إشعار

إذا كنت بحاجة فقط إلى الوصول إلى متغيرات البيئة في وحدة التحكم الحالية قيد التشغيل، يمكنك تعيين متغير البيئة باستخدام set بدلا من setx.

بعد إضافة متغيرات البيئة، قد تحتاج إلى إعادة تشغيل أي برامج قيد التشغيل ستحتاج إلى قراءة متغيرات البيئة، بما في ذلك نافذة وحدة التحكم. على سبيل المثال، إذا كنت تستخدم Visual Studio كمحرر، فأعد تشغيل Visual Studio قبل تشغيل المثال.

إنشاء تطبيق Node.js جديد

في إطار نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، يمكنك إنشاء دليل جديد لتطبيقك وانتقل إليه.

mkdir myapp 

cd myapp

شغّل الأمر npm init لإنشاء تطبيق node باستخدام ملف package.json.

npm init

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

تثبيت حزم npm:

npm install --save @azure/ai-language-text@1.1.0

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

افتح الملف وانسخ التعليمات البرمجية أدناه. ثم قم بتشغيل التعليمة البرمجية.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد اللغة الذي أنشأته في قسمPrerequisites بنجاح، فانقر فوق الزر Go to Resource ضمن Next Steps. يمكنك العثور على المفتاح ونقطة النهاية بالانتقال إلى صفحة Keys and Endpoint ضمن Resource Management.

هام

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

/**
 * This sample program extracts a summary of two sentences at max from an article.
 * For more information, see the feature documentation: {@link https://learn.microsoft.com/azure/ai-services/language-service/summarization/overview}
 *
 * @summary extracts a summary from an article
 */

const { AzureKeyCredential, TextAnalysisClient } = require("@azure/ai-language-text");

// Load the .env file if it exists
require("dotenv").config();

// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
const endpoint = process.env.LANGUAGE_ENDPOINT;
const apiKey = process.env.LANGUAGE_KEY;

const documents = [
  `
           Windows 365 was in the works before COVID-19 sent companies around the world on a scramble to secure solutions to support employees suddenly forced to work from home, but “what really put the firecracker behind it was the pandemic, it accelerated everything,” McKelvey said. She explained that customers were asking, “’How do we create an experience for people that makes them still feel connected to the company without the physical presence of being there?”
           In this new world of Windows 365, remote workers flip the lid on their laptop, bootup the family workstation or clip a keyboard onto a tablet, launch a native app or modern web browser and login to their Windows 365 account. From there, their Cloud PC appears with their background, apps, settings and content just as they left it when they last were last there – in the office, at home or a coffee shop.
           “And then, when you’re done, you’re done. You won’t have any issues around security because you’re not saving anything on your device,” McKelvey said, noting that all the data is stored in the cloud.
           The ability to login to a Cloud PC from anywhere on any device is part of Microsoft’s larger strategy around tailoring products such as Microsoft Teams and Microsoft 365 for the post-pandemic hybrid workforce of the future, she added. It enables employees accustomed to working from home to continue working from home; it enables companies to hire interns from halfway around the world; it allows startups to scale without requiring IT expertise.
           “I think this will be interesting for those organizations who, for whatever reason, have shied away from virtualization. This is giving them an opportunity to try it in a way that their regular, everyday endpoint admin could manage,” McKelvey said.
           The simplicity of Windows 365 won over Dean Wells, the corporate chief information officer for the Government of Nunavut. His team previously attempted to deploy a traditional virtual desktop infrastructure and found it inefficient and unsustainable given the limitations of low-bandwidth satellite internet and the constant need for IT staff to manage the network and infrastructure.
           We didn’t run it for very long,” he said. “It didn’t turn out the way we had hoped. So, we actually had terminated the project and rolled back out to just regular PCs.”
           He re-evaluated this decision after the Government of Nunavut was hit by a ransomware attack in November 2019 that took down everything from the phone system to the government’s servers. Microsoft helped rebuild the system, moving the government to Teams, SharePoint, OneDrive and Microsoft 365. Manchester’s team recruited the Government of Nunavut to pilot Windows 365. Wells was intrigued, especially by the ability to manage the elastic workforce securely and seamlessly.
           “The impact that I believe we are finding, and the impact that we’re going to find going forward, is being able to access specialists from outside the territory and organizations outside the territory to come in and help us with our projects, being able to get people on staff with us to help us deliver the day-to-day expertise that we need to run the government,” he said.
           “Being able to improve healthcare, being able to improve education, economic development is going to improve the quality of life in the communities.”`,
];

async function main() {
  console.log("== Extractive Summarization Sample ==");

  const client = new TextAnalysisClient(endpoint, new AzureKeyCredential(apiKey));
  const actions = [
    {
      kind: "ExtractiveSummarization",
      maxSentenceCount: 2,
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");

  poller.onProgress(() => {
    console.log(
      `Last time the operation was updated was on: ${poller.getOperationState().modifiedOn}`
    );
  });
  console.log(`The operation was created on ${poller.getOperationState().createdOn}`);
  console.log(`The operation results will expire on ${poller.getOperationState().expiresOn}`);

  const results = await poller.pollUntilDone();

  for await (const actionResult of results) {
    if (actionResult.kind !== "ExtractiveSummarization") {
      throw new Error(`Expected extractive summarization results but got: ${actionResult.kind}`);
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log("Summary:");
      console.log(result.sentences.map((sentence) => sentence.text).join("\n"));
    }
  }
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

module.exports = { main };

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

تلميح

يمكنك استخدام Language Studio لتجربة تلخيص النص دون الحاجة إلى كتابة التعليمات البرمجية.

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

  • اشتراك Azure - إنشاء اشتراك مجانًا
  • Python 3.x
  • بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Language في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • سوف تحتاج المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك إلى API. يمكنك لصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (Free F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
  • لاستخدام ميزة التحليل، سوف تحتاج إلى مورد اللغة مع مستوى التسعير القياسي (S).

الإعداد

إنشاء متغيرات البيئة

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

تلميح

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

لتعيين متغير البيئة لمفتاح مورد Language، افتح نافذة وحدة تحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  1. لتعيين LANGUAGE_KEY متغير البيئة، استبدل your-key بأحد مفاتيح المورد الخاص بك.
  2. لتعيين LANGUAGE_ENDPOINT متغير البيئة، استبدل your-endpoint بنقطة النهاية للمورد الخاص بك.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

إشعار

إذا كنت بحاجة فقط إلى الوصول إلى متغيرات البيئة في وحدة التحكم الحالية قيد التشغيل، يمكنك تعيين متغير البيئة باستخدام set بدلا من setx.

بعد إضافة متغيرات البيئة، قد تحتاج إلى إعادة تشغيل أي برامج قيد التشغيل ستحتاج إلى قراءة متغيرات البيئة، بما في ذلك نافذة وحدة التحكم. على سبيل المثال، إذا كنت تستخدم Visual Studio كمحرر، فأعد تشغيل Visual Studio قبل تشغيل المثال.

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

بعد تثبيت Python، يمكنك تثبيت مكتبة العميل عن طريق:

pip install azure-ai-textanalytics==5.3.0

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

إنشاء ملف Python جديد ونسخ التعليمات البرمجية أدناه. ثم قم بتشغيل التعليمة البرمجية.

هام

انتقل إلى مدخل Azure. إذا تم نشر مورد اللغة الذي أنشأته في قسمPrerequisites بنجاح، فانقر فوق الزر Go to Resource ضمن Next Steps. يمكنك العثور على المفتاح ونقطة النهاية بالانتقال إلى صفحة Keys and Endpoint ضمن Resource Management.

هام

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

# This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
key = os.environ.get('LANGUAGE_KEY')
endpoint = os.environ.get('LANGUAGE_ENDPOINT')

from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

# Authenticate the client using your key and endpoint 
def authenticate_client():
    ta_credential = AzureKeyCredential(key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=endpoint, 
            credential=ta_credential)
    return text_analytics_client

client = authenticate_client()

# Example method for summarizing text
def sample_extractive_summarization(client):
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.textanalytics import (
        TextAnalyticsClient,
        ExtractiveSummaryAction
    ) 

    document = [
        "The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document. "
        "These sentences collectively convey the main idea of the document. This feature is provided as an API for developers. " 
        "They can use it to build intelligent solutions based on the relevant information extracted to support various use cases. "
        "Extractive summarization supports several languages. It is based on pretrained multilingual transformer models, part of our quest for holistic representations. "
        "It draws its strength from transfer learning across monolingual and harness the shared nature of languages to produce models of improved quality and efficiency. "
    ]

    poller = client.begin_analyze_actions(
        document,
        actions=[
            ExtractiveSummaryAction(max_sentence_count=4)
        ],
    )

    document_results = poller.result()
    for result in document_results:
        extract_summary_result = result[0]  # first document, first result
        if extract_summary_result.is_error:
            print("...Is an error with code '{}' and message '{}'".format(
                extract_summary_result.code, extract_summary_result.message
            ))
        else:
            print("Summary extracted: \n{}".format(
                " ".join([sentence.text for sentence in extract_summary_result.sentences]))
            )

sample_extractive_summarization(client)

المخرجات

Summary extracted: 
The extractive summarization feature uses natural language processing techniques to locate key sentences in an unstructured text document. This feature is provided as an API for developers. They can use it to build intelligent solutions based on the relevant information extracted to support various use cases.

استخدم هذا التشغيل السريع لإرسال طلبات تلخيص النص باستخدام واجهة برمجة تطبيقات REST. في المثال التالي، ستستخدم cURL لتلخيص المستندات أو محادثات خدمة العملاء النصية.

تلميح

يمكنك استخدام Language Studio لتجربة تلخيص النص دون الحاجة إلى كتابة التعليمات البرمجية.

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

  • الإصدار الحالي من cURL.
  • بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Language في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. بعد انتشاره، حدد "Go to resource".
    • ستحتاج المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك إلى API. ستلصق المفتاح ونقطة النهاية في التعليمات البرمجية أدناه لاحقًا في التشغيل السريع.
    • يمكنك استخدام مستوى التسعير الحر (Free F0) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.

الإعداد

إنشاء متغيرات البيئة

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

تلميح

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

لتعيين متغير البيئة لمفتاح مورد Language، افتح نافذة وحدة تحكم، واتبع الإرشادات الخاصة بنظام التشغيل وبيئة التطوير.

  1. لتعيين LANGUAGE_KEY متغير البيئة، استبدل your-key بأحد مفاتيح المورد الخاص بك.
  2. لتعيين LANGUAGE_ENDPOINT متغير البيئة، استبدل your-endpoint بنقطة النهاية للمورد الخاص بك.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

إشعار

إذا كنت بحاجة فقط إلى الوصول إلى متغيرات البيئة في وحدة التحكم الحالية قيد التشغيل، يمكنك تعيين متغير البيئة باستخدام set بدلا من setx.

بعد إضافة متغيرات البيئة، قد تحتاج إلى إعادة تشغيل أي برامج قيد التشغيل ستحتاج إلى قراءة متغيرات البيئة، بما في ذلك نافذة وحدة التحكم. على سبيل المثال، إذا كنت تستخدم Visual Studio كمحرر، فأعد تشغيل Visual Studio قبل تشغيل المثال.

عينة طلب

إشعار

  • تستخدم \ مقتطفات BASH التالية حرف متابعة السطر. إذا كانت وحدة التحكم أو المحطة الطرفية تستخدم حرف متابعة سطر مختلف، فاستخدم هذا الحرف.
  • يمكنك العثور على نماذج لغة معينة على GitHub. لاسترجاع واجهة برمجة التطبيقات، تحتاج إلى المعلومات التالية:

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

ميزة ‏‏الوصف
تلخيص النص استخدم تلخيص النص الاستخراجي لإنتاج ملخص للمعلومات الهامة أو ذات الصلة داخل مستند.
تلخيص المحادثة استخدم تلخيص النص المجردة لإنتاج ملخص للمشكلات والحلول في النصوص بين وكلاء خدمة العملاء والعملاء.
المعلمة ‏‏الوصف‬
-X POST <endpoint> تحديد نقطة النهاية للوصول إلى واجهة برمجة التطبيقات.
-H Content-Type: application/json نوع المحتوى لإرسال بيانات JSON.
-H "Ocp-Apim-Subscription-Key:<key> تحديد مفتاح الوصول إلى واجهة برمجة التطبيقات.
-d <documents> يحتوي JSON على المستندات التي تريد إرسالها.

يتم تنفيذ أوامر cURL التالية من BASH shell. قم بتحرير هذه الأوامر باستخدام قيم JSON الخاصة بك.

تلخيص النص

مثال التلخيص الاستخراجي للنص

سيساعدك المثال التالي على البدء في التلخيص الاستخراجي للنص:

  1. انسخ الأمر أدناه إلى محرر نص. يستخدم \ مثال BASH حرف متابعة السطر. إذا كانت وحدة التحكم أو المحطة الطرفية تستخدم حرف متابعة سطر مختلف، فاستخدم هذا الحرف بدلا من ذلك.
curl -i -X POST $LANGUAGE_ENDPOINT/language/analyze-text/jobs?api-version=2023-04-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" \
-d \
' 
{
  "displayName": "Text ext Summarization Task Example",
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "language": "en",
        "text": "At Microsoft, we have been on a quest to advance AI beyond existing techniques, by taking a more holistic, human-centric approach to learning and understanding. As Chief Technology Officer of Azure AI services, I have been working with a team of amazing scientists and engineers to turn this quest into a reality. In my role, I enjoy a unique perspective in viewing the relationship among three attributes of human cognition: monolingual text (X), audio or visual sensory signals, (Y) and multilingual (Z). At the intersection of all three, there’s magic—what we call XYZ-code as illustrated in Figure 1—a joint representation to create more powerful AI that can speak, hear, see, and understand humans better. We believe XYZ-code will enable us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pre-trained models that can jointly learn representations to support a broad range of downstream AI tasks, much in the way humans do today. Over the past five years, we have achieved human performance on benchmarks in conversational speech recognition, machine translation, conversational question answering, machine reading comprehension, and image captioning. These five breakthroughs provided us with strong signals toward our more ambitious aspiration to produce a leap in AI capabilities, achieving multi-sensory and multilingual learning that is closer in line with how humans learn and understand. I believe the joint XYZ-code is a foundational component of this aspiration, if grounded with external knowledge sources in the downstream AI tasks."
      }
    ]
  },
  "tasks": [
    {
      "kind": "ExtractiveSummarization",
      "taskName": "Text Extractive Summarization Task 1",
      "parameters": {
        "sentenceCount": 6
      }
    }
  ]
}
'
  1. افتح نافذة موجه الأوامر (على سبيل المثال: BASH).

  2. الصق الأمر من محرر النص في نافذة موجه الأوامر، ثم قم بتشغيل الأمر.

  3. احصل على operation-location من عنوان الاستجابة. ستبدو القيمة مشابهة لـ URL التالي:

https://<your-language-resource-endpoint>/language/analyze-text/jobs/12345678-1234-1234-1234-12345678?api-version=2023-04-01
  1. للحصول على نتائج الطلب، استخدم الأمر cURL التالي. تأكد من استبدال <my-job-id> بقيمة المعرف الرقمي التي تلقيتها من عنوان الاستجابة السابق operation-location :
curl -X GET $LANGUAGE_ENDPOINT/language/analyze-text/jobs/<my-job-id>?api-version=2023-04-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY"

مثال تلخيص استخراج النص استجابة JSON

{
    "jobId": "56e43bcf-70d8-44d2-a7a7-131f3dff069f",
    "lastUpdateDateTime": "2022-09-28T19:33:43Z",
    "createdDateTime": "2022-09-28T19:33:42Z",
    "expirationDateTime": "2022-09-29T19:33:42Z",
    "status": "succeeded",
    "errors": [],
    "displayName": "Text ext Summarization Task Example",
    "tasks": {
        "completed": 1,
        "failed": 0,
        "inProgress": 0,
        "total": 1,
        "items": [
            {
                "kind": "ExtractiveSummarizationLROResults",
                "taskName": "Text Extractive Summarization Task 1",
                "lastUpdateDateTime": "2022-09-28T19:33:43.6712507Z",
                "status": "succeeded",
                "results": {
                    "documents": [
                        {
                            "id": "1",
                            "sentences": [
                                {
                                    "text": "At Microsoft, we have been on a quest to advance AI beyond existing techniques, by taking a more holistic, human-centric approach to learning and understanding.",
                                    "rankScore": 0.69,
                                    "offset": 0,
                                    "length": 160
                                },
                                {
                                    "text": "In my role, I enjoy a unique perspective in viewing the relationship among three attributes of human cognition: monolingual text (X), audio or visual sensory signals, (Y) and multilingual (Z).",
                                    "rankScore": 0.66,
                                    "offset": 324,
                                    "length": 192
                                },
                                {
                                    "text": "At the intersection of all three, there’s magic—what we call XYZ-code as illustrated in Figure 1—a joint representation to create more powerful AI that can speak, hear, see, and understand humans better.",
                                    "rankScore": 0.63,
                                    "offset": 517,
                                    "length": 203
                                },
                                {
                                    "text": "We believe XYZ-code will enable us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages.",
                                    "rankScore": 1.0,
                                    "offset": 721,
                                    "length": 134
                                },
                                {
                                    "text": "The goal is to have pre-trained models that can jointly learn representations to support a broad range of downstream AI tasks, much in the way humans do today.",
                                    "rankScore": 0.74,
                                    "offset": 856,
                                    "length": 159
                                },
                                {
                                    "text": "I believe the joint XYZ-code is a foundational component of this aspiration, if grounded with external knowledge sources in the downstream AI tasks.",
                                    "rankScore": 0.49,
                                    "offset": 1481,
                                    "length": 148
                                }
                            ],
                            "warnings": []
                        }
                    ],
                    "errors": [],
                    "modelVersion": "latest"
                }
            }
        ]
    }
}

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

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

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