Démarrage rapide : utilisation du résumé des documents et des conversations

Important

Notre région de prévisualisation, Suède Centre, présente nos dernières techniques de réglage fin du LLM, en constante évolution, basées sur des modèles GPT. Nous vous invitons à les essayer avec une ressource Language de la région Suède Centre.

Le résumé de conversation est disponible uniquement à l’aide de :

  • API REST
  • Python
  • C#

Utilisez ce guide de démarrage rapide pour créer une application de synthèse de texte avec la bibliothèque de client pour .NET. Dans l’exemple suivant, vous allez créer une application C# qui peut résumer des documents ou des conversations du service client basées sur du texte.

Conseil

Vous pouvez utiliser Language Studio pour essayer la synthèse du document sans avoir à écrire du code.

Prérequis

  • Abonnement Azure - En créer un gratuitement
  • IDE Visual Studio
  • Une fois que vous avez votre abonnement Azure, créez une ressource de langue dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.
    • Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API. Vous insérez votre clé et votre point de terminaison dans le code plus loin dans ce guide de démarrage rapide.
    • Vous pouvez utiliser le niveau tarifaire Gratuit (Free F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.
  • Pour utiliser la fonctionnalité Analyser, vous avez besoin d’une ressource Language avec le niveau tarifaire Standard (S).

Configuration

Créer des variables d’environnement

Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.

Conseil

N’incluez pas la clé directement dans votre code et ne la publiez jamais publiquement. Pour découvrir d’autres options d’authentification telles qu’Azure Key Vault, consultez l’article sur la sécurité d’Azure AI services.

Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.

  1. Pour définir la variable d’environnement LANGUAGE_KEY, remplacez your-key par l’une des clés de votre ressource.
  2. Pour définir la LANGUAGE_ENDPOINTvariable d’environnement, remplacez your-endpoint par le point de terminaison de votre ressource.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notes

Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.

Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.

Créez une application .NET Core

En utilisant l’IDE Visual Studio, créez une application console .NET Core. Cette action crée un projet « Hello World » contenant un seul fichier source C# : program.cs.

Installez la bibliothèque cliente en cliquant avec le bouton droit sur la solution dans l’Explorateur de solutions et en sélectionnant Gérer les packages NuGet. Dans le gestionnaire de package qui s’ouvre, sélectionnez Parcourir et recherchez Azure.AI.TextAnalytics. Vérifiez que l’option Inclure la préversion est activée. Sélectionnez la version 5.3.0, puis Installer. Vous pouvez aussi utiliser la Console du Gestionnaire de package.

Exemple de code

Copiez le code suivant dans votre fichier program.cs. Exécutez ensuite le code.

Important

Accédez au portail Azure. Si la ressource Language que vous avez créée dans la section Prérequis a été déployée correctement, cliquez sur le bouton Accéder à la ressource sous Étapes suivantes. Pour trouver la clé et le point de terminaison, accédez à la page Clés et point de terminaison de votre ressource sous Gestion des ressources.

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

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()
            {
                ExtractSummaryActions = new List<ExtractSummaryAction>() { new ExtractSummaryAction() }
            };
        
            // 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<ExtractSummaryActionResult> summaryResults = documentsInPage.ExtractSummaryResults;
        
                foreach (ExtractSummaryActionResult 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 (ExtractSummaryResult 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 (SummarySentence 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);
        }
    }
}

Output

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.

Documentation de référence | Plus d’exemples | Package (Maven) | Code source de la bibliothèque

Utilisez ce guide de démarrage rapide pour créer une application de synthèse de texte avec la bibliothèque de client pour Java. Dans l’exemple suivant, vous allez créer une application Java qui peut résumer des documents.

Conseil

Vous pouvez utiliser Language Studio pour essayer la synthèse du document sans avoir à écrire du code.

Prérequis

  • Abonnement Azure - En créer un gratuitement
  • Kit de développement Java (JDK) avec version 8 ou ultérieure
  • Une fois que vous avez votre abonnement Azure, créez une ressource de langue dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.
    • Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API. Vous collez votre clé et votre point de terminaison dans le code ci-dessous, plus loin dans le guide de démarrage rapide.
    • Vous pouvez utiliser le niveau tarifaire Gratuit (Free F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.
  • Pour utiliser la fonctionnalité Analyser, vous avez besoin d’une ressource Language avec le niveau tarifaire Standard (S).

Configuration

Ajouter la bibliothèque de client

Créez un projet Maven dans l’IDE ou l’environnement de développement de votre choix. Ensuite, ajoutez la dépendance suivante au fichier pom.xml de votre projet : Vous trouverez la syntaxe d’implémentation pour d’autres outils de génération en ligne.

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

Créer des variables d’environnement

Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.

Conseil

N’incluez pas la clé directement dans votre code et ne la publiez jamais publiquement. Pour découvrir d’autres options d’authentification telles qu’Azure Key Vault, consultez l’article sur la sécurité d’Azure AI services.

Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.

  1. Pour définir la variable d’environnement LANGUAGE_KEY, remplacez your-key par l’une des clés de votre ressource.
  2. Pour définir la LANGUAGE_ENDPOINTvariable d’environnement, remplacez your-endpoint par le point de terminaison de votre ressource.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notes

Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.

Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.

Exemple de code

Créez un fichier Java nommé Example.java. Ouvrez le fichier et copiez le code ci-dessous. Exécutez ensuite le code.

Important

Accédez au portail Azure. Si la ressource Language que vous avez créée dans la section Prérequis a été déployée correctement, cliquez sur le bouton Accéder à la ressource sous Étapes suivantes. Pour trouver la clé et le point de terminaison, accédez à la page Clés et point de terminaison de votre ressource sous Gestion des ressources.

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

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

Sortie

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.

Documentation de référence | Exemples supplémentaires | Package (npm) | Code source de la bibliothèque

Utilisez ce guide de démarrage rapide pour créer une application de synthèse de texte avec la bibliothèque de client pour Node.js. Dans l’exemple suivant, vous allez créer une application JavaScript qui peut synthétiser des documents.

Conseil

Vous pouvez utiliser Language Studio pour essayer la synthèse du document sans avoir à écrire du code.

Prérequis

  • Abonnement Azure - En créer un gratuitement
  • Node.js v16 LTS
  • Une fois que vous avez votre abonnement Azure, créez une ressource de langue dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.
    • Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API. Vous collerez votre clé et votre point de terminaison dans le code ci-dessous plus loin dans le guide de démarrage rapide.
    • Vous pouvez utiliser le niveau tarifaire Gratuit (Free F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.
  • Pour utiliser la fonctionnalité Analyser, vous avez besoin d’une ressource Language avec le niveau tarifaire Standard (S).

Configuration

Créer des variables d’environnement

Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.

Conseil

N’incluez pas la clé directement dans votre code et ne la publiez jamais publiquement. Pour découvrir d’autres options d’authentification telles qu’Azure Key Vault, consultez l’article sur la sécurité d’Azure AI services.

Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.

  1. Pour définir la variable d’environnement LANGUAGE_KEY, remplacez your-key par l’une des clés de votre ressource.
  2. Pour définir la LANGUAGE_ENDPOINTvariable d’environnement, remplacez your-endpoint par le point de terminaison de votre ressource.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notes

Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.

Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.

Création d’une application Node.js

Dans une fenêtre de console (telle que cmd, PowerShell ou bash), créez un répertoire pour votre application et accédez-y.

mkdir myapp 

cd myapp

Exécutez la commande npm init pour créer une application de nœud avec un fichier package.json.

npm init

Installer la bibliothèque de client

Installez les packages npm :

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

Exemple de code

Ouvrez le fichier et copiez le code ci-dessous. Exécutez ensuite le code.

Important

Accédez au portail Azure. Si la ressource Language que vous avez créée dans la section Prérequis a été déployée correctement, cliquez sur le bouton Accéder à la ressource sous Étapes suivantes. Pour trouver la clé et le point de terminaison, accédez à la page Clés et point de terminaison de votre ressource sous Gestion des ressources.

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

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

Utilisez ce guide de démarrage rapide pour créer une application de synthèse de texte avec la bibliothèque de client pour Python. Dans l’exemple suivant, vous allez créer une application Python qui peut résumer des documents ou des conversations du service client basées sur du texte.

Conseil

Vous pouvez utiliser Language Studio pour essayer la synthèse du document sans avoir à écrire du code.

Prérequis

  • Abonnement Azure - En créer un gratuitement
  • Python 3.x
  • Une fois que vous avez votre abonnement Azure, créez une ressource de langue dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.
    • Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API. Vous collez votre clé et votre point de terminaison dans le code ci-dessous, plus loin dans le guide de démarrage rapide.
    • Vous pouvez utiliser le niveau tarifaire Gratuit (Free F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.
  • Pour utiliser la fonctionnalité Analyser, vous avez besoin d’une ressource Language avec le niveau tarifaire Standard (S).

Configuration

Créer des variables d’environnement

Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.

Conseil

N’incluez pas la clé directement dans votre code et ne la publiez jamais publiquement. Pour découvrir d’autres options d’authentification telles qu’Azure Key Vault, consultez l’article sur la sécurité d’Azure AI services.

Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.

  1. Pour définir la variable d’environnement LANGUAGE_KEY, remplacez your-key par l’une des clés de votre ressource.
  2. Pour définir la LANGUAGE_ENDPOINTvariable d’environnement, remplacez your-endpoint par le point de terminaison de votre ressource.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notes

Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.

Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.

Installer la bibliothèque de client

Après avoir installé Python, vous pouvez installer la bibliothèque de client avec :

pip install azure-ai-textanalytics==5.3.0

Exemple de code

Créez un fichier Python et copiez le code ci-dessous. Exécutez ensuite le code.

Important

Accédez au portail Azure. Si la ressource Language que vous avez créée dans la section Prérequis a été déployée correctement, cliquez sur le bouton Accéder à la ressource sous Étapes suivantes. Pour trouver la clé et le point de terminaison, accédez à la page Clés et point de terminaison de votre ressource sous Gestion des ressources.

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

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

Output

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.

Utilisez ce guide de démarrage rapide pour envoyer des requêtes de synthèse de texte à l’aide de l’API REST. Dans l’exemple suivant, vous allez utiliser cURL pour synthétiser des documents ou des conversations de service à la clientèle basées sur du texte.

Conseil

Vous pouvez utiliser Language Studio pour essayer la synthèse du document sans avoir à écrire du code.

Prérequis

  • Version actuelle de cURL.
  • Une fois que vous avez votre abonnement Azure, créez une ressource de langue dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.
    • Vous aurez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API. Vous collerez votre clé et votre point de terminaison dans le code ci-dessous plus loin dans le guide de démarrage rapide.
    • Vous pouvez utiliser le niveau tarifaire Gratuit (Free F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.

Configuration

Créer des variables d’environnement

Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.

Conseil

N’incluez pas la clé directement dans votre code et ne la publiez jamais publiquement. Pour découvrir d’autres options d’authentification telles qu’Azure Key Vault, consultez l’article sur la sécurité d’Azure AI services.

Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.

  1. Pour définir la variable d’environnement LANGUAGE_KEY, remplacez your-key par l’une des clés de votre ressource.
  2. Pour définir la LANGUAGE_ENDPOINTvariable d’environnement, remplacez your-endpoint par le point de terminaison de votre ressource.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notes

Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.

Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.

Exemple de requête

Notes

  • Les exemples BASH suivants utilisent le caractère de continuation de ligne \. Si votre console ou terminal utilise un caractère de continuation de ligne différent, utilisez ce caractère.
  • Vous trouverez des exemples propres aux différents langages sur GitHub. Pour appeler l’API, vous avez besoin des informations suivantes :

Choisissez le type de résumé que vous souhaitez effectuer, puis sélectionnez l’un des onglets ci-dessous pour afficher un exemple d’appel d’API :

Fonctionnalité Description
Résumé de document Utilisez le résumé de texte extractif pour produire un résumé des informations importantes ou pertinentes d’un document.
Résumé de conversation Utilisez le résumé de texte abstractif pour produire un résumé des problèmes et des résolutions dans les transcriptions entre les agents du service client et les clients.
parameter Description
-X POST <endpoint> Spécifie votre point de terminaison pour accéder à l’API.
-H Content-Type: application/json Type de contenu pour l’envoi de données JSON.
-H "Ocp-Apim-Subscription-Key:<key> Spécifie la clé pour accéder à l’API.
-d <documents> Code JSON contenant les documents que vous souhaitez envoyer.

Les commandes cURL suivantes sont exécutées à partir d’un interpréteur de commandes bash. Modifier ces commandes avec vos valeurs JSON.

Résumé de document

Exemple de résumé extractif de document

L’exemple suivant vous permet de commencer à utiliser le résumé extractif de document :

  1. Copiez la commande ci-dessous dans un éditeur de texte. L’exemple BASH utilise le caractère de continuation de ligne \. Si votre console ou terminal utilise un caractère de continuation de ligne différent, utilisez ce caractère à la place.
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": "Document 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": "Document Extractive Summarization Task 1",
      "parameters": {
        "sentenceCount": 6
      }
    }
  ]
}
'
  1. Ouvrez une fenêtre d’invite de commandes (par exemple : BASH).

  2. Collez la commande à partir de l’éditeur de texte dans la fenêtre d’invite de commandes, puis exécutez la commande.

  3. Obtenez l’emplacement de l’opération (operation-location) de l’en-tête de la réponse. La valeur ressemblera à l’URL suivante :

https://<your-language-resource-endpoint>/language/analyze-text/jobs/12345678-1234-1234-1234-12345678?api-version=2023-04-01
  1. Pour obtenir les résultats de la requête, utilisez la commande cURL suivante. Veillez à remplacer <my-job-id> par la valeur d’ID numérique que vous avez reçue de l’en-tête de réponse operation-location précédent :
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"

Exemple de réponse JSON à un résumé extractif de document

{
    "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": "Document ext Summarization Task Example",
    "tasks": {
        "completed": 1,
        "failed": 0,
        "inProgress": 0,
        "total": 1,
        "items": [
            {
                "kind": "ExtractiveSummarizationLROResults",
                "taskName": "Document 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"
                }
            }
        ]
    }
}

Nettoyer les ressources

Si vous souhaitez nettoyer et supprimer un abonnement Azure AI services, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources efface également les autres ressources qui y sont associées.

Étapes suivantes