Поделиться через


Быстрый старт: использование суммирования текстов, документов и бесед

Внимание

Наша предварительная версия региона, Центральная Швеция, демонстрирует наши последние и постоянно развивающиеся методы тонкой настройки LLM, основанные на моделях GPT. Вы можете протестировать их с языковым ресурсом в центральном регионе Швеции.

Сводка по беседам доступна только с помощью:

  • REST API
  • Python
  • C#

В этом кратком руководстве описано, как создать приложение для формирование сводных данных о тексте с использованием клиентской библиотеки для .NET. В следующем примере вы создадите приложение C#, которое может суммировать документы или текстовые беседы службы клиентов.

Совет

Вы можете использовать Azure AI Foundry, чтобы попробовать суммирование без необходимости писать код.

Предварительные условия

  • Подписка Azure — создайте бесплатную учетную запись.
  • Интегрированная среда разработки Visual Studio.
  • После получения подписки Azure создайте ресурс служб ИИ.
    • Вам понадобится ключ и конечная точка из ресурса, который вы создаете, чтобы подключить ваше приложение к API. В более поздней части краткого руководства вставьте ключ и конечную точку в код.
    • Вы можете использовать бесплатный тарифный план (Free F0), чтобы опробовать услугу и позже перейти на платный для эксплуатации.
  • Чтобы использовать функцию анализа, вам потребуется языковый ресурс стандартной (S) ценовой категории.

Настройка

Создание переменной среды

Приложение должно пройти проверку подлинности для отправки запросов API. Для продакшена используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.

  • Чтобы задать LANGUAGE_KEY переменную среды, замените your-key одним из ключей ресурса.
  • Чтобы задать переменную среды, замените LANGUAGE_ENDPOINT на endpoint вашего ресурса.

Внимание

Мы рекомендуем использовать проверку подлинности Microsoft Entra ID с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Примечание.

Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

Создание приложения .NET Core

С помощью интегрированной среды разработки Visual Studio создайте консольное приложение .NET Core. При этом создается проект Hello World с одним исходным файлом C#: program.cs.

Установите клиентскую библиотеку, щелкнув правой кнопкой мыши решение в обозревателе решений и выбрав Управление пакетами NuGet. В открывшемся диспетчере пакетов выберите Просмотр и выполните поиск по запросу Azure.AI.TextAnalytics. Убедитесь, что установлен флажок Включить предварительные выпуски. Выберите версию 5.3.0, а затем Установить. Вы также можете использовать консоль диспетчера пакетов.

Пример кода

Скопируйте следующий код в файл program.cs. Теперь выполните код.

Внимание

Перейдите на портал Azure. Если языковой ресурс, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка доступны на странице Ключи и конечная точка ресурса в разделе Управление ресурсами.

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например 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, которое может суммировать документы.

Совет

Вы можете использовать Azure AI Foundry, чтобы попробовать суммирование без необходимости писать код.

Предварительные условия

  • Подписка Azure — создайте бесплатную учетную запись.
  • Пакет разработчиков Java (JDK) версии 8 или более поздней.
  • После получения подписки Azure создайте ресурс служб ИИ.
    • Вам понадобится ключ и конечная точка из ресурса, который вы создаете, чтобы подключить ваше приложение к 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>

Создание переменной среды

Приложение должно пройти проверку подлинности для отправки запросов API. Для продакшена используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.

  • Чтобы задать LANGUAGE_KEY переменную среды, замените your-key одним из ключей ресурса.
  • Чтобы задать переменную среды, замените LANGUAGE_ENDPOINT на endpoint вашего ресурса.

Внимание

Мы рекомендуем использовать проверку подлинности Microsoft Entra ID с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Примечание.

Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

Пример кода

Создайте файл Java с именем Example.java. Откройте файл и скопируйте приведенный ниже код. Теперь выполните код.

Внимание

Перейдите на портал Azure. Если языковой ресурс, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка доступны на странице Ключи и конечная точка ресурса в разделе Управление ресурсами.

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например 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, которое может суммировать документы.

Совет

Вы можете использовать Azure AI Foundry, чтобы попробовать суммирование без необходимости писать код.

Предварительные условия

  • Подписка Azure — создайте бесплатную учетную запись.
  • Node.js версии 16 LTS
  • После получения подписки Azure создайте ресурс служб ИИ.
    • Вам нужен ключ и конечная точка из ресурса, создаваемого для подключения приложения к API. Вставьте ключ и конечную точку в приведенный ниже код далее в кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (Free F0), чтобы опробовать услугу и позже перейти на платный для эксплуатации.
  • Чтобы использовать функцию анализа, необходим языковой ресурс с ценовым уровнем "стандартный" (S).

Установка

Создание переменной среды

Приложение должно пройти проверку подлинности для отправки запросов API. Для продакшена используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.

  • Чтобы задать LANGUAGE_KEY переменную среды, замените your-key одним из ключей ресурса.
  • Чтобы задать переменную среды, замените LANGUAGE_ENDPOINT на endpoint вашего ресурса.

Внимание

Мы рекомендуем использовать проверку подлинности Microsoft Entra ID с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

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, чтобы создать приложение узла с помощью файла package.json.

npm init

Установка клиентской библиотеки

Установите пакеты npm:

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

Пример кода

Откройте файл и скопируйте приведенный ниже код. Теперь выполните код.

Внимание

Перейдите на портал Azure. Если языковой ресурс, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка доступны на странице Ключи и конечная точка ресурса в разделе Управление ресурсами.

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например 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, которое может суммировать документы или текстовые беседы службы клиентов.

Совет

Вы можете использовать Azure AI Foundry, чтобы попробовать суммирование без необходимости писать код.

Предварительные условия

  • Подписка Azure — создайте бесплатную учетную запись.
  • Python 3.x
  • После получения подписки Azure создайте ресурс служб ИИ.
    • Вам понадобится ключ и конечная точка из ресурса, который вы создаете, чтобы подключить ваше приложение к API. Вставьте ключ и конечную точку в приведенный ниже код далее в кратком руководстве.
    • Вы можете использовать бесплатный тарифный план (Free F0), чтобы опробовать услугу и позже перейти на платный для эксплуатации.
  • Чтобы использовать функцию анализа, вам потребуется языковый ресурс стандартной (S) ценовой категории.

Установка

Создание переменной среды

Приложение должно пройти проверку подлинности для отправки запросов API. Для продакшена используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.

  • Чтобы задать LANGUAGE_KEY переменную среды, замените your-key одним из ключей ресурса.
  • Чтобы задать переменную среды, замените LANGUAGE_ENDPOINT на endpoint вашего ресурса.

Внимание

Мы рекомендуем использовать проверку подлинности Microsoft Entra ID с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

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. Если языковой ресурс, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка доступны на странице Ключи и конечная точка ресурса в разделе Управление ресурсами.

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например 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 API. В следующем примере вы будете использовать cURL для формирования сводных данных о документах или текстовых беседах службы поддержки клиентов.

Совет

Вы можете использовать Azure AI Foundry, чтобы попробовать суммирование без необходимости писать код.

Предварительные условия

  • Текущая версия cURL.
  • После получения подписки <Azure создайте ресурс служб ИИ.
    • Чтобы подключить приложение к API, потребуется ключ и конечная точка из созданного ресурса. Позже в руководстве по быстрому старту вы вставите ключ и конечную точку в код, приведенный ниже.
    • Вы можете использовать бесплатный тарифный план (Free F0), чтобы опробовать услугу и позже перейти на платный для эксплуатации.

Установка

Создание переменной среды

Приложение должно пройти проверку подлинности для отправки запросов API. Для продакшена используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.

Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.

  • Чтобы задать LANGUAGE_KEY переменную среды, замените your-key одним из ключей ресурса.
  • Чтобы задать переменную среды, замените LANGUAGE_ENDPOINT на endpoint вашего ресурса.

Внимание

Мы рекомендуем использовать проверку подлинности Microsoft Entra ID с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Примечание.

Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

Пример запроса

Примечание.

  • В следующих примерах BASH используется символ продолжения строки \. Если консоль или терминал использует другой символ продолжения строки, используйте этот символ.
  • Примеры для конкретного языка можно найти на GitHub. Для вызова API необходимы следующие сведения:

Выберите тип формирования сводных данных, которое вы хотите выполнить, и перейдите на одну из вкладок ниже, чтобы просмотреть пример вызова API:

Особенность Описание
Суммаризация текста Используйте экстрактивное резюмирование текста для создания сводки по документу с важными или значимыми сведениями.
Резюмирование разговора Используйте функцию формирования сводных данных по тексту с извлечением смысла для создания сводки по проблемам и способам их устранения в расшифровках бесед агентов обслуживания клиентов с клиентами.
параметр Описание
-X POST <endpoint> Указывает конечную точку для доступа к API.
-H Content-Type: application/json Тип содержимого для отправки данных JSON.
-H "Ocp-Apim-Subscription-Key:<key> Указывает ключ для доступа к API.
-d <documents> JSON с документами, которые необходимо отправить.

Приведенные ниже команды cURL выполняются из оболочки BASH. Измените эти команды собственными значениями 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 AI Foundry

Языковая площадка состоит из четырех разделов:

  • Верхний баннер: вы можете выбрать любой из доступных языковых служб здесь.
  • Справа на панели: в этой области можно найти параметры конфигурации службы, такие как API и версия модели, а также функции, относящиеся к службе.
  • Центральная область: в этой области вы вводите текст для обработки. После выполнения операции здесь отображаются некоторые результаты.
  • Правая панель: в этой области отображаются сведения о выполнении операции.

Здесь вы можете выбрать возможность суммирования, которую хотите использовать, выбрав одну из этих панелей баннеров: сводка беседы, сводка для центра обработки вызовов или сводка текста.

Используйте "Сводку разговора"

Резюме бесед предназначено для суммирования бесед и разделения длинных собраний на главы с временными метками.

В конфигурации есть следующие параметры:

Вариант Описание
Выбор версии API Выберите используемую версию API.
Выбор языка текста Выберите язык входного текста.
Аспекты суммирования Различные методы суммирования, возвращаемые. По крайней мере один должен быть выбран.

После завершения операции раздел "Сведения" содержит следующие поля для выбранных методов сводных данных:

Поле Описание
Предложение
Кратко Повторное описание обработанного текста. Для отображения этого необходимо включить аспект суммаризации.
Название главы Список заголовков для семантических сегментированных глав с соответствующими метками времени. Функция "Сводка заголовка главы" должна быть включена, чтобы это отображалось.
Описание Список описательных сводок для семантических сегментированных глав с соответствующими метками времени. Чтобы эта функция отображалась, необходимо включить аспект "Сводка повествования".

Снимок экрана: пример сводки беседы на портале Azure AI Foundry.

Используйте функцию суммирования для центра обработки вызовов

Резюмирование для колл-центра предназначено для резюмирования вызовов и составления сводки по вопросам и решениям клиентов.

В конфигурации есть следующие параметры:

Вариант Описание
Выбор версии API Выберите используемую версию API.
Выбор языка текста Выберите язык входного текста.
Аспекты суммирования Различные методы суммирования, возвращаемые. По крайней мере один должен быть выбран.

После завершения операции раздел "Сведения" содержит следующие поля для выбранных методов сводных данных:

Поле Описание
Предложение
Кратко Повторное описание обработанного текста. Для отображения этого необходимо включить аспект суммаризации.
Проблема Резюме проблемы клиента в разговоре клиента с агентом. Для этого необходимо включить аспект суммирования проблем.
Резолюция Сводка решений, проверенных в беседе с клиентом и агентом. Для этого необходимо включить аспект суммирования резолюции.

Снимок экрана: пример сводки для центра обработки вызовов на портале Azure AI Foundry.

Использовать сводку текста

Сводка текста предназначена для эффективного суммирования и извлечения ключевых сведений из текста.

В конфигурации есть следующие параметры:

Вариант Описание
Экстрактивное резюмирование Служба создаст сводку, извлекая сводные предложения.
Количество предложений Количество предложений, которое извлечёт экстрактивное суммирование.
Абстрактная сводка Служба сгенерирует сводку с оригинальными предложениями.
Длина сводки Длина сводки, созданной абстрактной суммацией.
Определение ключевых слов для сводного фокуса (предварительная версия) Помогает сосредоточиться на определенном наборе ключевых слов.

После завершения операции раздел "Сведения" содержит следующие поля для выбранных методов сводных данных:

Поле Описание
Извлеченная сводка Извлеченные предложения из входного текста, ранжированные по выявленной релевантности и с приоритетом для слов в указанных ключевых слов для поля фокуса сводки, если таковые имеются. Предложения сортируются по ранговому значению обнаруженной релевантности (по умолчанию) или по порядку появления в исходном тексте.
Абстрактная сводка Сводка входного текста выбранной длины в поле Длина сводки с приоритетом для слов в поле Определенные ключевые слова для фокусировки сводки, если таковые есть.

Снимок экрана: пример сводки текста на портале Azure AI Foundry.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Следующие шаги