Partilhar via


Início rápido: usando resumo de texto, de documentos e de conversas

Importante

A nossa região de pré-visualização, Suécia Central, apresenta as nossas técnicas de aperfeiçoamento LLM mais recentes e em constante evolução, baseadas em modelos GPT. Podes experimentá-los com um recurso linguístico na região Suécia Central.

O resumo da conversa só está disponível usando:

  • API REST
  • Python
  • C#

Use este início rápido para criar um aplicativo de resumo de texto com a biblioteca de cliente para .NET. No exemplo a seguir, você criará um aplicativo C# que pode resumir documentos ou conversas de atendimento ao cliente baseadas em texto.

Gorjeta

Podes usar o Microsoft Foundry para tentar resumir sem precisar de escrever código.

Pré-requisitos

  • Subscrição do Azure - Criar uma gratuitamente
  • O IDE do Visual Studio
  • Depois de teres a tua subscrição do Azure, cria um recurso Foundry.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Você irá colar a sua chave e o ponto de extremidade no código, posteriormente, durante o arrancar rápido.
    • Você pode usar o nível de preço gratuito (Free F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.
  • Para usar o recurso Analisar, você precisará de um recurso de idioma com o nível de preço padrão (S).

Configuração

Criar variáveis de ambiente

Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente na máquina local que executa o aplicativo.

Para definir a variável de ambiente para sua chave de recurso de idioma, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a LANGUAGE_KEY variável de ambiente, substitua your-key por uma das chaves do seu recurso.
  • Para definir a variável de LANGUAGE_ENDPOINT ambiente, substitua your-endpoint pelo ponto de extremidade do seu recurso.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota

Se você só precisar acessar as variáveis de ambiente no console em execução atual, poderá definir a variável de ambiente com set em vez de setx.

Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Criar uma nova aplicação .NET Core

Com o IDE do Visual Studio, crie uma nova aplicação de consola .NET Core. Isso cria um projeto "Hello World" com um único arquivo de origem C#: program.cs.

Instale a biblioteca cliente clicando com o botão direito na solução no Explorador de Soluções e selecionando Gerir Pacotes NuGet. No gerenciador de pacotes que é aberto, selecione Procurar e procure Azure.AI.TextAnalytics. Certifique-se de que a opção Incluir pré-lançamento está marcada. Selecione a versão 5.3.0 e, em seguida, Instalar. Também pode utilizar a Consola do Gestor de Pacotes.

Exemplo de código

Copie o código a seguir para o arquivo program.cs . Em seguida, execute o código.

Importante

Aceda ao portal do Azure. Se o recurso Azure Language que criou na secção de Pré-requisitos foi implementado com sucesso, clique no botão Ir para Recursos em Próximos Passos. Você pode encontrar sua chave e ponto de extremidade navegando até a página Chaves e Ponto Final do seu recurso, em Gerenciamento de Recursos.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo sobre segurança da Foundry Tools para mais informações.

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

Saída

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.

Documentação de referência | Mais exemplos | Pacote (Maven) | Código fonte da biblioteca

Use este guia de início rápido para criar um aplicativo de resumo de texto com a biblioteca cliente para Java. No exemplo a seguir, você criará um aplicativo Java que pode resumir documentos.

Gorjeta

Podes usar o Microsoft Foundry para tentar resumir sem precisar de escrever código.

Pré-requisitos

  • Subscrição do Azure - Criar uma gratuitamente
  • Java Development Kit (JDK) com a versão 8 ou superior
  • Depois de teres a tua subscrição do Azure, cria um recurso Foundry.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Você cola sua chave e ponto de extremidade no código abaixo mais adiante no início rápido.
    • Você pode usar o nível de preço gratuito (Free F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.
  • Para usar o recurso Analisar, você precisará de um recurso de idioma com o nível de preço padrão (S).

Configuração

Adicionar a biblioteca de cliente

Crie um projeto do Maven no IDE ou ambiente de desenvolvimento da sua preferência. Em seguida, adicione a seguinte dependência ao ficheiro pom.xml do projeto. Pode encontrar a sintaxe de implementação para outras ferramentas de criação online.

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

Criar variáveis de ambiente

Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente na máquina local que executa o aplicativo.

Para definir a variável de ambiente para sua chave de recurso de idioma, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a LANGUAGE_KEY variável de ambiente, substitua your-key por uma das chaves do seu recurso.
  • Para definir a variável de LANGUAGE_ENDPOINT ambiente, substitua your-endpoint pelo ponto de extremidade do seu recurso.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota

Se você só precisar acessar as variáveis de ambiente no console em execução atual, poderá definir a variável de ambiente com set em vez de setx.

Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Exemplo de código

Crie um ficheiro Java com o nome Example.java. Abra o arquivo e copie o código abaixo. Em seguida, execute o código.

Importante

Aceda ao portal do Azure. Se o recurso Azure Language que criou na secção de Pré-requisitos foi implementado com sucesso, clique no botão Ir para Recursos em Próximos Passos. Você pode encontrar sua chave e ponto de extremidade navegando até a página Chaves e Ponto Final do seu recurso, em Gerenciamento de Recursos.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo sobre segurança da Foundry Tools para mais informações.

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

Saída

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.

Documentação de referência | Exemplos adicionais | Pacote (npm) | Código fonte da biblioteca

Use este início rápido para criar um aplicativo de resumo de texto com a biblioteca de cliente para Node.js. No exemplo a seguir, você cria um aplicativo JavaScript que pode resumir documentos.

Gorjeta

Podes usar o Microsoft Foundry para tentar resumir sem precisar de escrever código.

Pré-requisitos

  • Subscrição do Azure - Criar uma gratuitamente
  • Node.js v16 LTS
  • Depois de teres a tua subscrição do Azure, cria um recurso Foundry.
    • Você precisa da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Você cola sua chave e ponto de extremidade no código abaixo mais adiante no início rápido.
    • Você pode usar o nível de preço gratuito (Free F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.
  • Para usar o recurso Analisar, você precisa de um recurso de idioma com o nível de preço padrão (S).

Configuração

Criar variáveis de ambiente

Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente na máquina local que executa o aplicativo.

Para definir a variável de ambiente para sua chave de recurso de idioma, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a LANGUAGE_KEY variável de ambiente, substitua your-key por uma das chaves do seu recurso.
  • Para definir a variável de LANGUAGE_ENDPOINT ambiente, substitua your-endpoint pelo ponto de extremidade do seu recurso.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota

Se você só precisar acessar as variáveis de ambiente no console em execução atual, poderá definir a variável de ambiente com set em vez de setx.

Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Criar uma nova aplicação Node.js

Numa janela de consola (como cmd, PowerShell ou Bash), crie um novo diretório para a sua aplicação e navegue para a mesma.

mkdir myapp 

cd myapp

Execute o comando npm init para criar uma aplicação Node.js com um ficheiro package.json.

npm init

Instalar a biblioteca de cliente

Instale os pacotes npm:

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

Exemplo de código

Abra o arquivo e copie o código abaixo. Em seguida, execute o código.

Importante

Aceda ao portal do Azure. Se o recurso Azure Language que criou na secção de Pré-requisitos foi implementado com sucesso, clique no botão Ir para Recursos em Próximos Passos. Você pode encontrar sua chave e ponto de extremidade navegando até a página Chaves e Ponto Final do seu recurso, em Gerenciamento de Recursos.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo sobre segurança da Foundry Tools para mais informações.

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

Use este início rápido para criar um aplicativo de resumo de texto com a biblioteca de cliente para Python. No exemplo a seguir, você criará um aplicativo Python que pode resumir documentos ou conversas de atendimento ao cliente baseadas em texto.

Gorjeta

Podes usar o Microsoft Foundry para tentar resumir sem precisar de escrever código.

Pré-requisitos

  • Subscrição do Azure - Criar uma gratuitamente
  • Python 3.x
  • Depois de teres a tua subscrição do Azure, cria um recurso Foundry.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Você cola sua chave e ponto de extremidade no código abaixo mais adiante no início rápido.
    • Você pode usar o nível de preço gratuito (Free F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.
  • Para usar o recurso Analisar, você precisará de um recurso de idioma com o nível de preço padrão (S).

Configuração

Criar variáveis de ambiente

Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente na máquina local que executa o aplicativo.

Para definir a variável de ambiente para sua chave de recurso de idioma, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a LANGUAGE_KEY variável de ambiente, substitua your-key por uma das chaves do seu recurso.
  • Para definir a variável de LANGUAGE_ENDPOINT ambiente, substitua your-endpoint pelo ponto de extremidade do seu recurso.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota

Se você só precisar acessar as variáveis de ambiente no console em execução atual, poderá definir a variável de ambiente com set em vez de setx.

Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Instalar a biblioteca de cliente

Depois de instalar o Python, pode instalar a biblioteca de cliente com:

pip install azure-ai-textanalytics==5.3.0

Exemplo de código

Crie um novo arquivo Python e copie o código abaixo. Em seguida, execute o código.

Importante

Aceda ao portal do Azure. Se o recurso Azure Language que criou na secção de Pré-requisitos foi implementado com sucesso, clique no botão Ir para Recursos em Próximos Passos. Você pode encontrar sua chave e ponto de extremidade navegando até a página Chaves e Ponto Final do seu recurso, em Gerenciamento de Recursos.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo sobre segurança da Foundry Tools para mais informações.

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

Saída

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.

Use este guia de início rápido para enviar solicitações de resumo de texto usando a API REST. No exemplo seguinte, usa cURL para resumir documentos ou conversas de atendimento ao cliente baseadas em texto.

Gorjeta

Podes usar o Microsoft Foundry para tentar resumir sem precisar de escrever código.

Pré-requisitos

  • A versão atual do cURL.
  • Depois de teres a tua subscrição do Azure, <cria um recurso Foundry.
    • Você precisa da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Você irá colar a sua chave e o ponto de extremidade no código, posteriormente, durante o arrancar rápido.
    • Você pode usar o nível de preço gratuito (Free F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.

Configuração

Criar variáveis de ambiente

Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente na máquina local que executa o aplicativo.

Para definir a variável de ambiente para sua chave de recurso de idioma, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a LANGUAGE_KEY variável de ambiente, substitua your-key por uma das chaves do seu recurso.
  • Para definir a variável de LANGUAGE_ENDPOINT ambiente, substitua your-endpoint pelo ponto de extremidade do seu recurso.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota

Se você só precisar acessar as variáveis de ambiente no console em execução atual, poderá definir a variável de ambiente com set em vez de setx.

Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se você estiver usando o Visual Studio como editor, reinicie o Visual Studio antes de executar o exemplo.

Pedido de exemplo

Nota

  • Os seguintes exemplos de BASH usam o carácter de continuação de linha \. Se o console ou terminal usar um caractere de continuação de linha diferente, use esse caractere.
  • Você pode encontrar exemplos específicos de idiomas no GitHub. Para chamar a API, você precisa das seguintes informações:

Escolha o tipo de sumarização que gostaria de realizar, selecione um dos separadores e veja um exemplo de chamada de API:

Funcionalidade Descrição
Sumarização de texto Use o resumo de texto extrativo para produzir um resumo de informações importantes ou relevantes dentro de um documento.
Resumo da conversação Use o resumo de texto abstrato para produzir um resumo de problemas e resoluções em transcrições entre agentes de atendimento ao cliente e clientes.
parâmetro Descrição
-X POST <endpoint> Especifica o seu endpoint para aceder à API.
-H Content-Type: application/json O tipo de conteúdo para enviar dados JSON.
-H "Ocp-Apim-Subscription-Key:<key> Especifica a chave para acessar a API.
-d <documents> O JSON que contém os documentos que você deseja enviar.

Os seguintes comandos cURL são executados a partir de um shell BASH. Edite esses comandos com seus próprios valores JSON.

Sumarização de texto

Exemplo de sumarização extrativa de texto

O exemplo seguinte leva-o a começar com a sumarização extrativa de texto:

  1. Copie o comando para um editor de texto. O exemplo BASH usa o caractere de continuação de linha \. Se o console ou terminal usar um caractere de continuação de linha diferente, use esse caractere.
curl -i -X POST $LANGUAGE_ENDPOINT/language/analyze-text/jobs?api-version=2024-11-15-preview \
-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 Foundry Tools, 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. Abra uma janela de prompt de comando (por exemplo: BASH).

  2. Cole o comando do editor de texto na janela do prompt de comando e execute o comando.

  3. Obtenha o operation-location do cabeçalho da resposta. O valor é semelhante ao seguinte URL:

https://<your-language-resource-endpoint>/language/analyze-text/jobs/12345678-1234-1234-1234-12345678?api-version=2024-11-15-preview
  1. Para obter os resultados da solicitação, use o seguinte comando cURL. Certifique-se de substituir <my-job-id> pelo valor de ID numérico que você recebeu do cabeçalho de resposta anterior operation-location :
curl -X GET $LANGUAGE_ENDPOINT/language/analyze-text/jobs/<my-job-id>?api-version=2024-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY"

Exemplo de resumo extrativo de texto Resposta 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"
                }
            }
        ]
    }
}

Pré-requisitos

Usando o painel do lado esquerdo, selecione Playgrounds. Depois selecione o botão Try Azure Language Playground.

O ciclo de vida do desenvolvimento

Use a funcionalidade de Resumo no Ambiente Experimental do Foundry

O Language Playground é composto por quatro secções:

  • Banner principal: Pode selecionar qualquer uma das Línguas atualmente disponíveis aqui.
  • Painel direito: este painel é onde você pode encontrar as opções de configuração para o serviço, como a API e a versão do modelo, juntamente com recursos específicos para o serviço.
  • Painel central: este painel é onde você insere o texto para processamento. Depois que a operação é executada, alguns resultados são mostrados aqui.
  • Painel direito: este painel é onde os detalhes da operação de execução são mostrados.

Aqui você pode selecionar o recurso de Sumarização que deseja usar escolhendo um destes blocos de banner superiores: Resumir conversa, Resumir para call center ou Resumir texto.

Usar Resumir conversação

Resumir conversa foi projetado para recapitular a conversa e segmentar reuniões longas em capítulos com marcação de tempo.

Em Configuração existem as seguintes opções:

Opção Descrição
Selecione a versão da API Selecione qual versão da API usar.
Selecionar idioma de texto Selecione o idioma do texto de entrada.
Aspetos de Sumarização Diferentes métodos de sumarização que são retornados. Pelo menos um deve ser selecionado.

Após a conclusão da operação, a seção Detalhes contém os seguintes campos para os métodos selecionados de resumo:

Campo Descrição
Frase
Recapitulação Uma recapitulação do texto processado. O aspeto de resumo "Recap" deve ser ativado para que o conteúdo apareça.
Título do Capítulo Uma lista de títulos para capítulos semanticamente segmentados com etiquetas de tempo correspondentes. O aspeto de sumarização do título do capítulo deve estar ativado para que isso apareça.
Narrativa Lista de resumos narrativos para capítulos segmentados semanticamente com carimbos de data/hora correspondentes. O aspeto de Sumarização Narrativa deve ser ativado para que apareça.

Uma captura de ecrã de um exemplo de resumir conversas no portal Foundry.

Utilizar o Resumo para centros de atendimento

Summarize for call center foi projetado para recapitular chamadas e resumi-las relativamente a problemas e resoluções de clientes.

Em Configuração existem as seguintes opções:

Opção Descrição
Selecione a versão da API Selecione qual versão da API usar.
Selecionar idioma de texto Selecione o idioma do texto de entrada.
Aspetos de Sumarização Diferentes métodos de sumarização que são retornados. Pelo menos um deve ser selecionado.

Após a conclusão da operação, a seção Detalhes contém os seguintes campos para os métodos selecionados de resumo:

Campo Descrição
Frase
Recapitulação Uma recapitulação do texto processado. O aspeto de resumo "Recap" deve ser ativado para que o conteúdo apareça.
Problema Um resumo do problema do cliente na conversa entre cliente e agente. O aspeto Sumarização de Issues deve ser ativado para que isso apareça.
Resolução Um resumo das soluções experimentadas na conversa entre cliente e agente. O aspeto de Sumarização da Resolução deve estar ativo para que isso apareça.

Uma captura de ecrã de um exemplo de resumo para call center no portal Foundry.

Usar a função Resumir texto

Resumir texto é concebido para resumir e extrair informações importantes em grande escala a partir do texto.

Em Configuração existem as seguintes opções:

Opção Descrição
Sumarização extrativa O serviço produzirá um resumo extraindo frases salientes.
Número de frases O número de frases que o resumo extrativo irá extrair.
Sumarização abstrata O serviço irá gerar um resumo com frases inéditas.
Comprimento do resumo A extensão do resumo gerado pela sumarização abstrata.
Definir palavras-chave para foco de resumo (pré-visualização) Ajuda a concentrar a sumarização em um determinado conjunto de palavras-chave.

Após a conclusão da operação, a seção Detalhes contém os seguintes campos para os métodos selecionados de resumo:

Campo Descrição
Resumo extrativo Frases extraídas do texto de entrada, classificadas por relevância detetada e priorizadas para palavras no campo Palavras-chave definidas para foco de resumo, se houver. As frases são classificadas por relevância detetada (padrão) ou ordem de apresentação no texto de entrada.
Resumo abstrato Um resumo do texto de entrada do comprimento escolhido no campo Comprimento do resumo e priorizado para palavras no campo Palavras-chave definidas para foco de resumo, se houver.

Uma captura de ecrã de um exemplo de texto resumido no portal Foundry.

Limpar recursos

Para limpar e remover um recurso de IA do Azure, você pode excluir o recurso individual ou todo o grupo de recursos. Se você excluir o grupo de recursos, todos os recursos contidos também serão excluídos.

Próximos passos