A sumarização condensa conteúdos que os utilizadores consideram demasiado longos para ler. O serviço fornece soluções de resumo para três tipos de género: texto simples, conversas e documentos nativos. Selecione o separador que corresponder ao tipo de conteúdo que pretende resumir.
O resumo de texto encurta conteúdos que os utilizadores consideram demasiado longos para ler. Tanto o resumo extrativo quanto o resumo abstrativo condensam artigos, trabalhos ou documentos em frases principais.
Sumarização extrativa: Produz um resumo extraindo frases que representam coletivamente as informações mais importantes ou relevantes dentro do conteúdo original.
Sumarização abstrata: Produz um resumo gerando frases resumidas do documento que capturam a ideia principal.
Resumo focado em consulta: Permite que utilizes uma consulta ao resumir.
Cada uma destas capacidades pode resumir informações sobre itens específicos de interesse, quando estes forem especificados.
O serviço fornece os modelos de IA que a API utiliza. Basta enviar conteúdo para análise.
Para facilitar a navegação, aqui estão os links para as seções correspondentes para cada serviço:
Características
A API de resumo extrativo usa técnicas de processamento de linguagem natural para localizar frases-chave em um documento de texto não estruturado. Estas frases transmitem coletivamente a ideia principal do documento.
A sumarização extrativa devolve uma pontuação de classificação como parte da resposta do sistema, juntamente com as frases extraídas e a sua posição nos documentos originais. Uma pontuação de classificação indica quão relevante é uma frase para a ideia principal de um documento. O modelo atribui uma pontuação entre 0 e 1 (inclusive) a cada frase e devolve as frases com a pontuação mais elevada por pedido. Por exemplo, se você solicitar um resumo de três frases, o serviço retornará as três frases mais bem pontuadas.
Outra funcionalidade do Azure Language no Foundry Tools, a extração de frases-chave, pode extrair informação chave. Ao decidir entre extração de frases-chave e sumarização extrativa, considere estes fatores:
- A extração de frases-chave retorna frases, enquanto a sumarização extrativa retorna frases.
- A sumarização extrativa retorna frases juntamente com uma pontuação de classificação, e as sentenças mais bem classificadas são retornadas por solicitação.
- O resumo extrativo também retorna as seguintes informações posicionais:
- Offset: A posição inicial de cada frase extraída.
- Comprimento: O comprimento de cada frase extraída.
Determinar como processar os dados (opcional)
Submissão de dados
Submeter documentos à API como cadeias de texto. A API realiza a análise após a receção do pedido. Como a API é assíncrona, pode haver um atraso entre o envio de uma solicitação de API e o recebimento dos resultados.
Quando utiliza esta funcionalidade, os resultados da API ficam disponíveis durante 24 horas a partir do momento em que o pedido é ingerido, e a resposta indica essa disponibilidade. Após este período, os resultados são eliminados e deixam de estar disponíveis para recolha.
Obter resultados de resumo de texto
Quando você obtém resultados da deteção de idioma, pode transmitir os resultados para um aplicativo ou salvar a saída em um arquivo no sistema local.
O exemplo seguinte mostra conteúdos que pode submeter para resumo. O conteúdo é extraído do artigo do blogue da Microsoft Uma representação holística para a IA integrativa. Este artigo é apenas um exemplo. A API pode aceitar texto de entrada mais longo. Para obter mais informações, consulteLimites de dados e serviços.
"Na Microsoft, estamos em uma busca para avançar a IA além das técnicas existentes, adotando uma abordagem mais holística e centrada no ser humano para aprender e compreender. Como Diretor de Tecnologia da Foundry Tools, tenho trabalhado com uma equipa de cientistas e engenheiros incríveis para transformar esta missão em realidade. Na minha função, desfruto de uma perspetiva única na visualização da relação entre três atributos da cognição humana: texto monolingue (X), sinais sensoriais áudio ou visuais (Y) e multilingue (Z). Na interseção de todos os três, há magia — o que chamamos de código XYZ, conforme ilustrado na Figura 1 — uma representação conjunta para criar uma IA mais poderosa que pode falar, ouvir, ver e entender melhor os seres humanos. Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas. O objetivo é ter modelos pré-treinados que possam aprender em conjunto representações para apoiar uma ampla gama de tarefas de IA a jusante, da mesma forma que os humanos fazem hoje. Nos últimos cinco anos, alcançamos o desempenho humano em benchmarks em reconhecimento de fala conversacional, tradução automática, resposta a perguntas conversacionais, compreensão de leitura automática e legendagem de imagens. Esses cinco avanços nos forneceram sinais fortes em direção à nossa aspiração mais ambiciosa de produzir um salto nas capacidades de IA, alcançando uma aprendizagem multissensorial e multilíngue mais próxima de como os humanos aprendem e entendem. Acredito que o código conjunto XYZ é um componente fundamental dessa aspiração, quando baseado em fontes de conhecimento externas na fase subsequente das tarefas de IA.
A solicitação da API de resumo de texto é processada após o recebimento da solicitação, criando um trabalho para o back-end da API. Se o trabalho for bem-sucedido, a saída da API será retornada. O resultado está disponível para recuperação por 24 horas. Após esse tempo, a saída é limpa. Devido ao suporte multilíngue e ao suporte a emojis, a resposta pode conter desvios de texto. Para obter mais informações, vejacomo processar deslocamentos.
Quando você usa o exemplo anterior, a API pode retornar estas frases resumidas:
Resumo extrativo:
- "Na Microsoft, estamos numa missão para avançar a IA para além das técnicas existentes, adotando uma abordagem mais holística e centrada no ser humano na aprendizagem e compreensão."
- "Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas."
- "O objetivo é ter modelos pré-treinados que possam aprender conjuntamente representações para apoiar uma ampla gama de tarefas de IA a jusante, da mesma forma que os humanos fazem hoje."
Resumo abstrato:
- "A Microsoft está adotando uma abordagem mais holística e centrada no ser humano para aprender e compreender. Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas. Nos últimos cinco anos, atingimos o desempenho humano em benchmarks importantes."
Você pode usar o resumo extrativo de texto para obter resumos de artigos, trabalhos ou documentos. Para ver um exemplo, consulte o artigo de início rápido.
Use o sentenceCount parâmetro para guiar quantas frases são devolvidas, sendo 3 o padrão. O intervalo é de 1 a 20.
Use o sortby parâmetro para especificar em que ordem as frases extraídas são devolvidas — ou Offset ou Rank, sendo Offset o padrão.
| Valor do parâmetro |
Description |
| Rank |
Ordenar as frases de acordo com a sua relevância para o documento de entrada, determinada pelo serviço. |
| Offset |
Mantém a ordem original em que as frases aparecem no documento de entrada. |
Experimente o resumo abstrato do texto
O exemplo seguinte mostra como começar com a sumarização abstrativa de texto:
- Copie o comando seguinte 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 https://<your-language-resource-endpoint>/language/analyze-text/jobs?api-version=2023-04-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Text Abstractive 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 enables us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pretrained 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": "AbstractiveSummarization",
"taskName": "Text Abstractive Summarization Task 1",
}
]
}
'
Faça as seguintes alterações no comando sempre que necessário:
- Substitua o valor
your-language-resource-key pela sua chave.
- Substitua a primeira parte da URL
your-language-resource-endpoint da solicitação pela URL do ponto de extremidade.
Abra uma janela de prompt de comando (por exemplo: BASH).
Cole o comando a partir do editor de texto na janela da linha de comandos e, em seguida, execute o comando.
Obtenha o operation-location a partir 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=2022-10-01-preview
- 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 https://<your-language-resource-endpoint>/language/analyze-text/jobs/<my-job-id>?api-version=2022-10-01-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>"
Exemplo de resumo de texto abstrato Resposta JSON
{
"jobId": "cd6418fe-db86-4350-aec1-f0d7c91442a6",
"lastUpdateDateTime": "2022-09-08T16:45:14Z",
"createdDateTime": "2022-09-08T16:44:53Z",
"expirationDateTime": "2022-09-09T16:44:53Z",
"status": "succeeded",
"errors": [],
"displayName": "Text Abstractive Summarization Task Example",
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "AbstractiveSummarizationLROResults",
"taskName": "Text Abstractive Summarization Task 1",
"lastUpdateDateTime": "2022-09-08T16:45:14.0717206Z",
"status": "succeeded",
"results": {
"documents": [
{
"summaries": [
{
"text": "Microsoft is taking a more holistic, human-centric approach to AI. We've developed a joint representation to create more powerful AI that can speak, hear, see, and understand humans better. We've achieved human performance on benchmarks in conversational speech recognition, machine translation, ...... and image captions.",
"contexts": [
{
"offset": 0,
"length": 247
}
]
}
],
"id": "1"
}
],
"errors": [],
"modelVersion": "latest"
}
}
]
}
}
| Parâmetro |
Description |
-X POST <endpoint> |
Especifica o seu endpoint para acessar a 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. Edita estes comandos com o teu próprio nome de recurso, chave de recurso e valores JSON.
Sumarização baseada em consulta
A API de resumo de texto baseada em consulta é uma extensão da API de resumo de texto existente.
A maior diferença é um novo query campo no corpo da solicitação (em tasks>parameters>query).
Tip
A sumarização baseada em consultas tem alguma diferenciação na utilização do controlo de comprimento, consoante o tipo de sumarização baseada em consultas que está a usar:
- A sumarização extrativa baseada em consulta suporta o controlo de comprimento especificando
sentenceCount.
- A sumarização abstrativa baseada em consultas não suporta controlo de comprimento.
Aqui está um pedido de exemplo:
curl -i -X POST https://<your-language-resource-endpoint>/language/analyze-text/jobs?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Text Extractive 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 enables us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pretrained 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": "AbstractiveSummarization",
"taskName": "Query-based Abstractive Summarization",
"parameters": {
"query": "XYZ-code",
"summaryLength": "short"
}
}, {
"kind": "ExtractiveSummarization",
"taskName": "Query_based Extractive Summarization",
"parameters": {
"query": "XYZ-code"
}
}
]
}
'
Controlo do comprimento do resumo
Usando o parâmetro summaryLength em resumo abstrato
Se você não especificar summaryLength, o modelo determinará o comprimento do resumo.
Para o summaryLength parâmetro, três valores são aceitos:
-
oneSentence: Gera um resumo de maioritariamente uma frase, com cerca de 80 tokens.
-
short: Gera um resumo composto principalmente por duas a três frases, com cerca de 120 tokens.
-
medium: Gera um resumo composto principalmente por quatro a seis frases, com cerca de 170 tokens.
-
long: Gera um resumo com maioritariamente mais de sete frases, com cerca de 210 tokens.
Aqui está um pedido de exemplo:
curl -i -X POST https://<your-language-resource-endpoint>/language/analyze-text/jobs?api-version=2023-04-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Text Abstractive 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 enables us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pretrained 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": "AbstractiveSummarization",
"taskName": "Length controlled Abstractive Summarization",
"parameters": {
"summaryLength": "short"
}
}
]
}
'
Para o sentenceCount parâmetro, introduza um valor de 1 a 20 para indicar o número desejado de frases de saída.
Aqui está um pedido de exemplo:
curl -i -X POST https://<your-language-resource-endpoint>/language/analyze-text/jobs?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Text Extractive 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 enables us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pretrained 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": "Length controlled Extractive Summarization",
"parameters": {
"sentenceCount": "5"
}
}
]
}
'
Limites de serviço e dados
Para informações sobre o tamanho e número de pedidos que pode enviar por minuto e segundo, consulte o artigo sobre limites de serviço .
Important
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:
Aspetos de resumo da conversação
O título do capítulo e a narrativa (conversa geral) resumem uma conversa em títulos de capítulos e um resumo do conteúdo da conversa. Este aspeto de sumarização funciona em conversas com qualquer número de partes.
Questões e soluções (focadas em call center) resumem os registos de chat de texto entre clientes e agentes de atendimento ao cliente. Esta funcionalidade fornece tanto questões como resoluções presentes nestes registos, que ocorrem entre duas partes.
A narrativa resume a narrativa de uma conversa.
O resumo condensa reuniões ou conversas longas num resumo conciso de um parágrafo para fornecer uma visão geral rápida.
As tarefas de seguimento resumem as ações e tarefas que surgem durante uma reunião.
O serviço fornece os modelos de IA que a API utiliza. Basta enviar conteúdo para análise.
Para facilitar a navegação, aqui estão os links para as seções correspondentes para cada serviço:
Características
A API de resumo de conversação usa técnicas de processamento de linguagem natural para resumir conversas em resumos mais curtos por solicitação. O resumo da conversa pode resumir questões e resoluções discutidas em uma conversa de duas partes ou resumir uma longa conversa em capítulos e uma breve narrativa para cada capítulo.
Outra funcionalidade no Azure Language no Foundry Tools, chamada sumarização de texto, é mais adequada para resumir documentos em resumos concisos. Ao decidir entre o resumo de texto e o resumo de conversa, considere os seguintes pontos:
- Formato de entrada: O resumo da conversa pode operar tanto no texto do chat quanto nas transcrições de discurso, que contêm os locutores e as suas intervenções. O resumo de texto opera usando texto simples ou formatos Word, PDF ou PowerPoint.
- Objetivo da sumarização: Por exemplo,
conversation issue and resolution summarization devolve o motivo e a resolução de uma conversa entre um cliente e um agente de apoio ao cliente.
Submissão de dados
Submeter documentos à API como cadeias de texto. A API realiza análises quando recebe o pedido. Como a API é assíncrona, pode haver um atraso entre o envio de uma solicitação de API e o recebimento dos resultados. Para obter informações sobre o tamanho e o número de solicitações que você pode enviar por minuto e segundo, consulte os seguintes limites de dados.
Quando você usa esse recurso, os resultados da API ficam disponíveis por 24 horas a partir do momento em que a solicitação foi ingerida e são indicados na resposta. Após este período, os resultados são eliminados e deixam de estar disponíveis para recolha.
Quando você envia dados para resumo de conversa, recomendamos o envio de um registro de bate-papo por solicitação, para melhor latência.
Obter resumos de chats de texto
Você pode usar a sumarização de problemas e resoluções de conversação para obter resumos conforme necessário. Para ver um exemplo usando bate-papos de texto, consulte o artigo de início rápido.
Obter resumos de transcrições de fala
O conversation issue and resolution summarization também permite que você obtenha resumos de transcrições de fala usando o recurso de fala para texto do serviço de fala. O exemplo a seguir mostra uma breve conversa que você pode incluir em suas solicitações de API.
"conversations":[
{
"id":"abcdefgh-1234-1234-1234-1234abcdefgh",
"language":"en",
"modality":"transcript",
"conversationItems":[
{
"modality":"transcript",
"participantId":"speaker",
"id":"12345678-abcd-efgh-1234-abcd123456",
"content":{
"text":"Hi.",
"lexical":"hi",
"itn":"hi",
"maskedItn":"hi",
"audioTimings":[
{
"word":"hi",
"offset":4500000,
"duration":2800000
}
]
}
}
]
}
]
Obter títulos de capítulos
A sumarização dos títulos dos capítulos de conversas permite que obtenha os títulos dos capítulos a partir das conversas fornecidas. Segue-se um cenário de exemplo guiado:
- Copie o comando seguinte 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 https://<your-language-resource-endpoint>/language/analyze-conversations/jobs?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Conversation Task Example",
"analysisInput": {
"conversations": [
{
"conversationItems": [
{
"text": "Hello, you're chatting with Rene. How may I help you?",
"id": "1",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Hi, I tried to set up wifi connection for Smart Brew 300 espresso machine, but it didn't work.",
"id": "2",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm sorry to hear that. Let's see what we can do to fix this issue. Could you please try the following steps for me? First, could you push the wifi connection button, hold for 3 seconds, then let me know if the power light is slowly blinking on and off every second?",
"id": "3",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Yes, I pushed the wifi connection button, and now the power light is slowly blinking.",
"id": "4",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "Great. Thank you! Now, please check in your Contoso Coffee app. Does it prompt to ask you to connect with the machine? ",
"id": "5",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "No. Nothing happened.",
"id": "6",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm very sorry to hear that. Let me see if there's another way to fix the issue. Please hold on for a minute.",
"id": "7",
"role": "Agent",
"participantId": "Agent_1"
}
],
"modality": "text",
"id": "conversation1",
"language": "en"
}
]
},
"tasks": [
{
"taskName": "Conversation Task 1",
"kind": "ConversationalSummarizationTask",
"parameters": {
"summaryAspects": [
"chapterTitle"
]
}
}
]
}
'
Faça as seguintes alterações no comando sempre que necessário:
- Substitua o valor
your-value-language-key pela sua chave.
- Substitua a primeira parte da URL
your-language-resource-endpoint da solicitação pela URL do ponto de extremidade.
Abra uma janela de prompt de comando (por exemplo: BASH).
Cole o comando do editor de texto na janela do prompt de comando e execute o comando.
Obtenha o operation-location a partir do cabeçalho da resposta. O valor é semelhante ao seguinte URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Para obter os resultados da solicitação, use o seguinte comando cURL. Certifique-se de substituir
<my-job-id> pelo valor GUID que você recebeu do cabeçalho de resposta anterior operation-location :
curl -X GET https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/<my-job-id>?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>"
Exemplo de resposta JSON de resumo dos títulos dos capítulos
{
"jobId": "b01af3b7-1870-460a-9e36-09af28d360a1",
"lastUpdatedDateTime": "2023-11-15T18:24:26Z",
"createdDateTime": "2023-11-15T18:24:23Z",
"expirationDateTime": "2023-11-16T18:24:23Z",
"status": "succeeded",
"errors": [],
"displayName": "Conversation Task Example",
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "conversationalSummarizationResults",
"taskName": "Conversation Task 1",
"lastUpdateDateTime": "2023-11-15T18:24:26.3433677Z",
"status": "succeeded",
"results": {
"conversations": [
{
"summaries": [
{
"aspect": "chapterTitle",
"text": "\"Discussing the Problem of Smart Blend 300 Espresso Machine's Wi-Fi Connectivity\"",
"contexts": [
{
"conversationItemId": "1",
"offset": 0,
"length": 53
},
{
"conversationItemId": "2",
"offset": 0,
"length": 94
},
{
"conversationItemId": "3",
"offset": 0,
"length": 266
},
{
"conversationItemId": "4",
"offset": 0,
"length": 85
},
{
"conversationItemId": "5",
"offset": 0,
"length": 119
},
{
"conversationItemId": "6",
"offset": 0,
"length": 21
},
{
"conversationItemId": "7",
"offset": 0,
"length": 109
}
]
}
],
"id": "conversation1",
"warnings": []
}
],
"errors": [],
"modelVersion": "latest"
}
}
]
}
}
Para longas conversas, o modelo pode segmentá-lo em várias partes coesas e resumir cada segmento. Há também um campo extenso contexts para cada resumo, que diz a partir de qual intervalo da conversa de entrada geramos o resumo.
Obtenha um resumo narrativo
O resumo de conversas também permite obter resumos narrativos de conversas de entrada. Um cenário de exemplo guiado é fornecido:
- Copie o comando seguinte 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 https://<your-language-resource-endpoint>/language/analyze-conversations/jobs?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Conversation Task Example",
"analysisInput": {
"conversations": [
{
"conversationItems": [
{
"text": "Hello, you're chatting with Rene. How may I help you?",
"id": "1",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Hi, I tried to set up wifi connection for Smart Brew 300 espresso machine, but it didn't work.",
"id": "2",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm sorry to hear that. Let's see what we can do to fix this issue. Could you please try the following steps for me? First, could you push the wifi connection button, hold for 3 seconds, then let me know if the power light is slowly blinking on and off every second?",
"id": "3",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Yes, I pushed the wifi connection button, and now the power light is slowly blinking.",
"id": "4",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "Great. Thank you! Now, please check in your Contoso Coffee app. Does it prompt to ask you to connect with the machine? ",
"id": "5",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "No. Nothing happened.",
"id": "6",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm very sorry to hear that. Let me see if there's another way to fix the issue. Please hold on for a minute.",
"id": "7",
"role": "Agent",
"participantId": "Agent_1"
}
],
"modality": "text",
"id": "conversation1",
"language": "en"
}
]
},
"tasks": [
{
"taskName": "Conversation Task 1",
"kind": "ConversationalSummarizationTask",
"parameters": {
"summaryAspects": [
"narrative"
]
}
}
]
}
'
Faça as seguintes alterações no comando sempre que necessário:
- Substitua o valor
your-language-resource-key pela sua chave.
- Substitua a primeira parte da URL
your-language-resource-endpoint da solicitação pela URL do ponto de extremidade.
Abra uma janela de prompt de comando (por exemplo: BASH).
Cole o comando do editor de texto na janela do prompt de comando e execute o comando.
Obtenha o operation-location a partir do cabeçalho da resposta. O valor é semelhante ao seguinte URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Para obter os resultados de uma solicitação, use o seguinte comando cURL. Certifique-se de substituir
<my-job-id> pelo valor GUID que você recebeu do cabeçalho de resposta anterior operation-location :
curl -X GET https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/<my-job-id>?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>"
Exemplo de resposta JSON de sumarização narrativa:
{
"jobId": "d874a98c-bf31-4ac5-8b94-5c236f786754",
"lastUpdatedDateTime": "2022-09-29T17:36:42Z",
"createdDateTime": "2022-09-29T17:36:39Z",
"expirationDateTime": "2022-09-30T17:36:39Z",
"status": "succeeded",
"errors": [],
"displayName": "Conversation Task Example",
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "conversationalSummarizationResults",
"taskName": "Conversation Task 1",
"lastUpdateDateTime": "2022-09-29T17:36:42.895694Z",
"status": "succeeded",
"results": {
"conversations": [
{
"summaries": [
{
"aspect": "narrative",
"text": "Agent_1 helps customer to set up wifi connection for Smart Brew 300 espresso machine.",
"contexts": [
{ "conversationItemId": "1", "offset": 0, "length": 53 },
{ "conversationItemId": "2", "offset": 0, "length": 94 },
{ "conversationItemId": "3", "offset": 0, "length": 266 },
{ "conversationItemId": "4", "offset": 0, "length": 85 },
{ "conversationItemId": "5", "offset": 0, "length": 119 },
{ "conversationItemId": "6", "offset": 0, "length": 21 },
{ "conversationItemId": "7", "offset": 0, "length": 109 }
]
}
],
"id": "conversation1",
"warnings": []
}
],
"errors": [],
"modelVersion": "latest"
}
}
]
}
}
Para longas conversas, o modelo pode segmentá-lo em várias partes coesas e resumir cada segmento. Há também um campo extenso contexts para cada resumo, que diz a partir de qual intervalo da conversa de entrada geramos o resumo.
Obter recapitulação e resumo de tarefas de acompanhamento
A sumarização de conversas também permite obter recapitulações e tarefas de acompanhamento das conversas de entrada. Um cenário de exemplo guiado é fornecido:
- Copie o comando seguinte 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 https://<your-language-resource-endpoint>/language/analyze-conversations/jobs?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Conversation Task Example",
"analysisInput": {
"conversations": [
{
"conversationItems": [
{
"text": "Hello, you're chatting with Rene. How may I help you?",
"id": "1",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Hi, I tried to set up wifi connection for Smart Brew 300 espresso machine, but it didn't work.",
"id": "2",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm sorry to hear that. Let's see what we can do to fix this issue. Could you please try the following steps for me? First, could you push the wifi connection button, hold for 3 seconds, then let me know if the power light is slowly blinking on and off every second?",
"id": "3",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "Yes, I pushed the wifi connection button, and now the power light is slowly blinking.",
"id": "4",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "Great. Thank you! Now, please check in your Contoso Coffee app. Does it prompt to ask you to connect with the machine? ",
"id": "5",
"role": "Agent",
"participantId": "Agent_1"
},
{
"text": "No. Nothing happened.",
"id": "6",
"role": "Customer",
"participantId": "Customer_1"
},
{
"text": "I'm very sorry to hear that. Let me see if there's another way to fix the issue. Please hold on for a minute.",
"id": "7",
"role": "Agent",
"participantId": "Agent_1"
}
],
"modality": "text",
"id": "conversation1",
"language": "en"
}
]
},
"tasks": [
{
"taskName": "Conversation Task 1",
"kind": "ConversationalSummarizationTask",
"parameters": {
"summaryAspects": [
"recap",
"follow-up tasks"
]
}
}
]
}
'
Faça as seguintes alterações no comando sempre que necessário:
- Substitua o valor
your-language-resource-key pela sua chave.
- Substitua a primeira parte da URL
your-language-resource-endpoint da solicitação pela URL do ponto de extremidade.
Abra uma janela de prompt de comando (por exemplo: BASH).
Cole o comando do editor de texto na janela do prompt de comando e execute o comando.
Obtenha o operation-location a partir do cabeçalho da resposta. O valor é semelhante ao seguinte URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Para obter os resultados de uma solicitação, use o seguinte comando cURL. Certifique-se de substituir
<my-job-id> pelo valor GUID que você recebeu do cabeçalho de resposta anterior operation-location :
curl -X GET https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/<my-job-id>?api-version=2023-11-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>"
Exemplo de recapitulação e resumo de seguimento da resposta JSON.
{
"jobId": "e585d097-c19a-466e-8f99-a9646e55b1f5",
"lastUpdatedDateTime": "2023-11-15T18:19:56Z",
"createdDateTime": "2023-11-15T18:19:53Z",
"expirationDateTime": "2023-11-16T18:19:53Z",
"status": "succeeded",
"errors": [],
"displayName": "Conversation Task Example",
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "conversationalSummarizationResults",
"taskName": "Conversation Task 1",
"lastUpdateDateTime": "2023-11-15T18:19:56.1801785Z",
"status": "succeeded",
"results": {
"conversations": [
{
"summaries": [
{
"aspect": "recap",
"text": "The customer contacted the service agent, Rene, regarding an issue with setting up a wifi connection for their Smart Brew 300 espresso machine. The agent guided the customer through several steps, including pushing the wifi connection button and checking if the power light was blinking. However, the customer reported that no prompts were received in the Contoso Coffee app to connect with the machine. The agent then decided to look for another solution.",
"contexts": [
{
"conversationItemId": "1",
"offset": 0,
"length": 53
},
{
"conversationItemId": "2",
"offset": 0,
"length": 94
},
{
"conversationItemId": "3",
"offset": 0,
"length": 266
},
{
"conversationItemId": "4",
"offset": 0,
"length": 85
},
{
"conversationItemId": "5",
"offset": 0,
"length": 119
},
{
"conversationItemId": "6",
"offset": 0,
"length": 21
},
{
"conversationItemId": "7",
"offset": 0,
"length": 109
}
]
},
{
"aspect": "Follow-Up Tasks",
"text": "@Agent_1 will ask the customer to push the wifi connection button, hold for 3 seconds, then check if the power light is slowly blinking on and off every second."
},
{
"aspect": "Follow-Up Tasks",
"text": "@Agent_1 will ask the customer to check in the Contoso Coffee app if it prompts to connect with the machine."
},
{
"aspect": "Follow-Up Tasks",
"text": "@Agent_1 will investigate another way to fix the issue."
}
],
"id": "conversation1",
"warnings": []
}
],
"errors": [],
"modelVersion": "latest"
}
}
]
}
}
Para longas conversas, o modelo pode segmentá-lo em várias partes coesas e resumir cada segmento. Há também um campo extenso contexts para cada resumo, que diz a partir de qual intervalo da conversa de entrada geramos o resumo.
Obter resultados de resumo de problemas de conversação e resolução
O texto a seguir é um exemplo de conteúdo que você pode enviar para resumo de problemas de conversação e resolução. É apenas um exemplo. A API pode aceitar texto de entrada mais longo. Para obter mais informações, consultelimites de dados.
Agente: "Olá, como posso ajudá-lo?"
Cliente: "Como posso atualizar minha assinatura da Contoso? Tenho tentado o dia inteiro."
Agente: "Pressione o botão de atualização, entre e siga as instruções."
O resumo é realizado após o recebimento da solicitação, criando um trabalho para o back-end da API. Se o trabalho for bem-sucedido, a saída da API será retornada. O resultado está disponível para recuperação por 24 horas. Após esse tempo, a saída é limpa. Devido ao suporte multilíngue e ao suporte a emojis, a resposta pode conter desvios de texto. Para obter mais informações, vejacomo processar deslocamentos.
No exemplo anterior, a API pode retornar este resultado de frases resumidas.
| Texto resumido |
Aspect |
| "O cliente quer atualizar sua assinatura. O cliente não sabe como." |
problema |
| "O cliente precisa pressionar o botão de atualização e fazer login." |
resolução |
Important
- A Linguagem Azure nas versões públicas de pré-visualização do Foundry Tools proporciona acesso antecipado a funcionalidades que estão em desenvolvimento ativo.
- Funcionalidades, abordagens e processos podem mudar, antes da Disponibilidade Geral (GA), com base no feedback dos utilizadores.
Language é um serviço baseado na cloud que aplica funcionalidades de Processamento de Linguagem Natural (PLN) a dados baseados em texto. A sumarização de documentos utiliza processamento de linguagem natural para gerar resumos extrativos (extração de frases salientes) ou abstrativos (extração contextual de palavras) para documentos. Ambas as APIs AbstractiveSummarization e ExtractiveSummarization suportam o processamento nativo de documentos. Um documento nativo refere-se ao formato de ficheiro utilizado para criar o documento original, como Microsoft Word (docx) ou um ficheiro de documento portátil (pdf). O suporte nativo a documentos elimina a necessidade de pré-processamento de texto antes de utilizar as capacidades de recursos da Linguagem. A capacidade nativa de suporte a documentos permite-lhe enviar pedidos API de forma assíncrona, usando um corpo de pedido HTTP POST para enviar os seus dados e uma cadeia de consulta HTTP GET para recuperar os resultados de estado. Os seus documentos processados estão localizados no contentor de destino do Armazenamento de Blobs do Azure.
Os aplicativos usam formatos de arquivo nativos para criar, salvar ou abrir documentos nativos. Atualmente, as capacidades de PII e sumarização de documentos suportam os seguintes formatos nativos de documentos:
| Tipo de ficheiro |
Extensão do arquivo |
Description |
| Text |
.txt |
Um documento de texto sem formatação. |
| Adobe PDF |
.pdf |
Um documento formatado como ficheiro PDF. |
| Microsoft Word |
.docx |
Um arquivo de documento do Microsoft Word. |
Formatos de ficheiro suportados
| Tipo |
Suporte e limitações |
|
PDFs |
Não há suporte para PDFs totalmente digitalizados. |
|
Texto dentro de imagens |
Imagens digitais com texto incorporado não são suportadas. |
|
Tabelas digitais |
Não há suporte para tabelas em documentos digitalizados. |
Tamanho do documento
| Attribute |
Limite de entrada |
|
Número total de documentos por pedido |
≤ 20 |
|
Tamanho total do conteúdo por solicitação |
≤ 10 MB |
Incluir documentos nativos com uma solicitação HTTP
Vamos começar:
Para este projeto, usamos a ferramenta de linha de comando cURL para fazer chamadas de API REST.
Note
O pacote cURL está pré-instalado na maioria das distribuições de Windows 10 e Windows 11 e na maioria das distribuições de macOS e Linux. Você pode verificar a versão do pacote com os seguintes comandos: Windows: curl.exe -V macOS curl -V Linux: curl --version
Uma conta ativa Azure. Se não tiveres uma, podes criar uma conta gratuita.
Uma conta Armazenamento de Blobs do Azure. Você também precisa criar contêineres em sua conta de Armazenamento de Blob do Azure para seus arquivos de origem e de destino:
-
Contentor de origem. Este contentor é onde carregas os teus ficheiros nativos para análise (obrigatório).
-
Contentor alvo. Este contêiner é onde seus arquivos analisados são armazenados (obrigatório).
Um recurso linguístico de serviço único (não um recurso Microsoft Foundry multi-serviço):
Complete os campos de detalhes do projeto e instância do recurso de linguagem do Azure da seguinte forma:
Subscrição. Selecione uma das suas subscrições Azure disponíveis.
Grupo de Recursos. Você pode criar um novo grupo de recursos ou adicionar seu recurso a um grupo de recursos preexistente que compartilha o mesmo ciclo de vida, permissões e políticas.
Região de Recursos. Escolha Global , a menos que sua empresa ou aplicativo exija uma região específica. Se você estiver planejando usar uma identidade gerenciada atribuída ao sistema para autenticação, escolha uma região geográfica como West US.
Name. Introduza o nome que escolheu para o seu recurso. O nome que escolher deve ser único dentro do Azure.
Nível de preço. 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.
Selecione Avaliar + Criar.
Revise os termos do serviço e selecione Criar para implementar o seu recurso.
Depois de o seu recurso ser implementado com sucesso, selecione Ir para o recurso.
Recupere a sua chave e o endpoint da linguagem
Os pedidos para o Azure Language requerem uma chave de apenas leitura e um endpoint personalizado para autenticar o acesso.
Se você criou um novo recurso, depois que ele for implantado, selecione Ir para recurso. Se tiver um recurso de Língua existente, navegue diretamente para a sua página de recursos.
No rail esquerdo, em Gestão de Recursos, selecione Keys e Endpoint.
Podes copiar e colar o teu key e o teu Language instance endpoint nos exemplos de código para autenticar o teu pedido na Azure Language. Só é necessária uma chave para fazer uma chamada à API.
Criar contentores do Armazenamento de Blobs do Azure
Crie contêineres em sua conta de Armazenamento de Blob do Azure para arquivos de origem e de destino.
-
Contentor de origem. Este contentor é onde carregas os teus ficheiros nativos para análise (obrigatório).
-
Contentor alvo. Este contêiner é onde seus arquivos analisados são armazenados (obrigatório).
Authentication
O seu recurso de Língua precisa de ter acesso à sua conta de armazenamento antes de poder criar, ler ou eliminar blobs. Há dois métodos principais que você pode usar para conceder acesso aos seus dados de armazenamento:
Para este projeto, autenticamos o acesso às URLs source location e target location com tokens SAS (Assinatura de Acesso Compartilhado) anexados como cadeias de caracteres de consulta. Cada token é atribuído a um blob específico (ficheiro).
- Seu contêiner ou blob de origem deve designar acesso de leitura e acesso de lista.
- O contêiner ou blob de destino deve designar acesso de gravação e acesso de leitura.
A API de resumo extrativo usa técnicas de processamento de linguagem natural para localizar frases-chave em um documento de texto não estruturado. Estas frases transmitem coletivamente a ideia principal do documento.
A sumarização extrativa retorna uma pontuação de classificação como parte da resposta do sistema, juntamente com as frases extraídas e sua posição nos documentos originais. Uma pontuação de classificação é um indicador de quão relevante uma frase é determinada para a ideia principal de um documento. O modelo atribui uma pontuação entre 0 e 1 (inclusive) a cada frase e devolve as frases com a pontuação mais elevada por pedido. Por exemplo, se você solicitar um resumo de três frases, o serviço retornará as três frases mais bem pontuadas.
Há outra funcionalidade na Linguagem, a extração de frases-chave, que pode extrair informação-chave. Para decidir entre a extração de frases-chave e a sumarização extrativa, aqui estão considerações úteis:
- A extração de frases-chave retorna frases, enquanto a sumarização extrativa retorna frases.
- A sumarização extrativa retorna frases juntamente com uma pontuação de classificação, e as sentenças mais bem classificadas são retornadas por solicitação.
- O resumo extrativo também retorna as seguintes informações posicionais:
- Offset: A posição inicial de cada frase extraída.
- Comprimento: O comprimento de cada frase extraída.
Determinar como processar os dados (opcional)
Submissão de dados
Você envia documentos para a API como cadeias de texto. A análise é realizada após a receção do pedido. Como a API é assíncrona, pode haver um atraso entre o envio de uma solicitação de API e o recebimento dos resultados.
Quando você usa esse recurso, os resultados da API ficam disponíveis por 24 horas a partir do momento em que a solicitação foi ingerida e são indicados na resposta. Após este período, os resultados são eliminados e deixam de estar disponíveis para recolha.
Obter resultados de resumo de texto
Quando você obtém resultados da deteção de idioma, pode transmitir os resultados para um aplicativo ou salvar a saída em um arquivo no sistema local.
Aqui está um exemplo de conteúdo que você pode submeter para sumarização, que é extraído usando o artigo do blog da Microsoft A holistic representation towards integrative AI. Este artigo é apenas um exemplo. A API pode aceitar texto de entrada mais longo. Para obter mais informações, consulteLimites de dados e serviços.
"Na Microsoft, estamos em uma busca para avançar a IA além das técnicas existentes, adotando uma abordagem mais holística e centrada no ser humano para aprender e compreender. Como Diretor de Tecnologia da Foundry Tools, tenho trabalhado com uma equipa de cientistas e engenheiros incríveis para transformar esta missão em realidade. Na minha função, desfruto de uma perspetiva única na visualização da relação entre três atributos da cognição humana: texto monolingue (X), sinais sensoriais áudio ou visuais (Y) e multilingue (Z). Na interseção de todos os três, há magia — o que chamamos de código XYZ, conforme ilustrado na Figura 1 — uma representação conjunta para criar uma IA mais poderosa que pode falar, ouvir, ver e entender melhor os seres humanos. Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas. O objetivo é ter modelos pré-treinados que possam aprender em conjunto representações para apoiar uma ampla gama de tarefas de IA a jusante, da mesma forma que os humanos fazem hoje. Nos últimos cinco anos, alcançamos o desempenho humano em benchmarks em reconhecimento de fala conversacional, tradução automática, resposta a perguntas conversacionais, compreensão de leitura automática e legendagem de imagens. Esses cinco avanços nos forneceram sinais fortes em direção à nossa aspiração mais ambiciosa de produzir um salto nas capacidades de IA, alcançando uma aprendizagem multissensorial e multilíngue que está mais próxima de como os humanos aprendem e entendem. Acredito que o código conjunto XYZ é um componente fundamental dessa aspiração, quando baseado em fontes de conhecimento externas na fase subsequente das tarefas de IA.
A solicitação da API de resumo de texto é processada após o recebimento da solicitação, criando um trabalho para o back-end da API. Se o trabalho for bem-sucedido, a saída da API será retornada. O resultado está disponível para recuperação por 24 horas. Após esse tempo, a saída é limpa. Devido ao suporte multilíngue e ao suporte a emojis, a resposta pode conter desvios de texto. Para obter mais informações, vejacomo processar deslocamentos.
Quando você usa o exemplo anterior, a API pode retornar estas frases resumidas:
Resumo extrativo:
- "Na Microsoft, estamos em uma busca para avançar a IA além das técnicas existentes, adotando uma abordagem mais holística e centrada no ser humano para aprender e compreender."
- "Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas."
- "O objetivo é ter modelos pré-treinados que possam aprender conjuntamente representações para apoiar uma ampla gama de tarefas de IA a jusante, da mesma forma que os humanos fazem hoje."
Resumo abstrato:
- "A Microsoft está adotando uma abordagem mais holística e centrada no ser humano para aprender e compreender. Acreditamos que o código XYZ nos permite cumprir nossa visão de longo prazo: aprendizagem de transferência entre domínios, abrangendo modalidades e idiomas. Nos últimos cinco anos, atingimos o desempenho humano em benchmarks em."
Você pode usar o resumo extrativo de texto para obter resumos de artigos, trabalhos ou documentos. Para ver um exemplo, consulte o artigo de início rápido.
Você pode usar o sentenceCount parâmetro para orientar quantas frases são retornadas, sendo 3 o padrão. O intervalo é de 1 a 20.
Você também pode usar o sortby parâmetro para especificar em que ordem as sentenças extraídas são retornadas - ou OffsetRank, com Offset sendo o padrão.
| valor do parâmetro |
Description |
| Rank |
Ordenar as frases de acordo com a sua relevância para o documento de entrada, determinada pelo serviço. |
| Offset |
Mantém a ordem original em que as frases aparecem no documento de entrada. |
Experimente o resumo abstrato do texto
O exemplo a seguir ajuda você a começar com o resumo abstrato de texto:
- Copie o comando seguinte 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 https://<your-language-resource-endpoint>/language/analyze-text/jobs?api-version=2023-04-01 \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>" \
-d \
'
{
"displayName": "Text Abstractive 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 enables us to fulfill our long-term vision: cross-domain transfer learning, spanning modalities and languages. The goal is to have pretrained 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": "AbstractiveSummarization",
"taskName": "Text Abstractive Summarization Task 1",
}
]
}
'
Faça as seguintes alterações no comando sempre que necessário:
- Substitua o valor
your-language-resource-key pela sua chave.
- Substitua a primeira parte da URL
your-language-resource-endpoint da solicitação pela URL do ponto de extremidade.
Abra uma janela de prompt de comando (por exemplo: BASH).
Cole o comando do editor de texto na janela do prompt de comando e execute o comando.
Obtenha o operation-location a partir 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=2022-10-01-preview
- 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 https://<your-language-resource-endpoint>/language/analyze-text/jobs/<my-job-id>?api-version=2022-10-01-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-language-resource-key>"
Exemplo de resumo de texto abstrato Resposta JSON
{
"jobId": "cd6418fe-db86-4350-aec1-f0d7c91442a6",
"lastUpdateDateTime": "2022-09-08T16:45:14Z",
"createdDateTime": "2022-09-08T16:44:53Z",
"expirationDateTime": "2022-09-09T16:44:53Z",
"status": "succeeded",
"errors": [],
"displayName": "Text Abstractive Summarization Task Example",
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "AbstractiveSummarizationLROResults",
"taskName": "Text Abstractive Summarization Task 1",
"lastUpdateDateTime": "2022-09-08T16:45:14.0717206Z",
"status": "succeeded",
"results": {
"documents": [
{
"summaries": [
{
"text": "Microsoft is taking a more holistic, human-centric approach to AI. We've developed a joint representation to create more powerful AI that can speak, hear, see, and understand humans better. We've achieved human performance on benchmarks in conversational speech recognition, machine translation, ...... and image captions.",
"contexts": [
{
"offset": 0,
"length": 247
}
]
}
],
"id": "1"
}
],
"errors": [],
"modelVersion": "latest"
}
}
]
}
}
| parâmetro |
Description |
-X POST <endpoint> |
Especifica o endpoint do seu recurso de linguagem para aceder à API. |
--header Content-Type: application/json |
O tipo de conteúdo para enviar dados JSON. |
--header "Ocp-Apim-Subscription-Key:<key> |
Especifica a chave de recurso Azure Language para aceder à API. |
-data |
O arquivo JSON que contém os dados que você deseja passar com sua solicitação. |
Os seguintes comandos cURL são executados a partir de um shell BASH. Edita estes comandos com o teu próprio nome de recurso, chave de recurso e valores JSON. Tente analisar documentos nativos selecionando o projeto de exemplo de código Personally Identifiable Information (PII) ou Document Summarization:
Documento exemplificativo de resumo
Para este projeto, você precisa de um documento de fonte carregado no seu contentor de fonte. Você pode baixar nosso documento de exemplo do Microsoft Word ou Adobe PDF para este início rápido. A língua de origem é o inglês.
Crie a requisição POST
Usando seu editor ou IDE preferido, crie um novo diretório para seu aplicativo chamado native-document.
Crie um novo arquivo json chamado document-summarization.json em seu diretório de documento nativo.
Copie e cole o exemplo de solicitação de resumo de documento em seu document-summarization.json arquivo. Substitua {your-source-container-SAS-URL} e {your-target-container-SAS-URL} por valores da instância de contêineres de conta de armazenamento do portal do Azure:
Solicitar amostra
{
"tasks": [
{
"kind": "ExtractiveSummarization",
"parameters": {
"sentenceCount": 6
}
}
],
"analysisInput": {
"documents": [
{
"source": {
"location": "{your-source-blob-SAS-URL}"
},
"targets": {
"location": "{your-target-container-SAS-URL}"
}
}
]
}
}
Executar a solicitação POST
Antes de executar a solicitação POST, substitua {your-language-resource-endpoint} e {your-key} pelo valor do ponto de extremidade da sua instância de recurso de linguagem no portal do Azure.
Important
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. Para mais informações, consulte a segurança das ferramentas da fundição.
PowerShell
cmd /c curl "{your-language-resource-endpoint}/language/analyze-documents/jobs?api-version=2024-11-15-preview" -i -X POST --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}" --data "@document-summarization.json"
prompt de comando / terminal
curl -v -X POST "{your-language-resource-endpoint}/language/analyze-documents/jobs?api-version=2024-11-15-preview" --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}" --data "@document-summarization.json"
Exemplo de resposta:
HTTP/1.1 202 Accepted
Content-Length: 0
operation-location: https://{your-language-resource-endpoint}/language/analyze-documents/jobs/f1cc29ff-9738-42ea-afa5-98d2d3cabf94?api-version=2024-11-15-preview
apim-request-id: e7d6fa0c-0efd-416a-8b1e-1cd9287f5f81
x-ms-region: West US 2
Date: Thu, 25 Jan 2024 15:12:32 GMT
Resposta do servidor POST (jobId)
Você recebe uma resposta 202 (Sucesso) que inclui um cabeçalho de localização da operação em modo de leitura. O valor desse cabeçalho contém um jobId que pode ser consultado para obter o status da operação assíncrona e recuperar os resultados usando uma solicitação GET:
Obter resultados de análise (solicitação GET)
Após o seu pedido POST bem-sucedido, consulte o cabeçalho de localização da operação devolvido no pedido POST para visualizar os dados processados.
Aqui está a estrutura da solicitação GET :
GET {cognitive-service-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2024-11-15-preview
Antes de executar o comando, faça estas alterações:
Obter pedido
cmd /c curl "{your-language-resource-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2024-11-15-preview" -i -X GET --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}"
curl -v -X GET "{your-language-resource-endpoint}/language/analyze-documents/jobs/{jobId}?api-version=2024-11-15-preview" --header "Content-Type: application/json" --header "Ocp-Apim-Subscription-Key: {your-key}"
Analise a resposta
Recebes uma resposta de 200 (Sucesso) com saída JSON. O campo status indica o resultado da operação. Se a operação não estiver concluída, o valor do estado é "running" ou "notStarted", e deves ligar novamente à API, manualmente ou através de um script. Recomendamos um intervalo de um segundo ou mais entre chamadas.
Resposta de exemplo
{
"jobId": "f1cc29ff-9738-42ea-afa5-98d2d3cabf94",
"lastUpdatedDateTime": "2024-01-24T13:17:58Z",
"createdDateTime": "2024-01-24T13:17:47Z",
"expirationDateTime": "2024-01-25T13:17:47Z",
"status": "succeeded",
"errors": [],
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "ExtractiveSummarizationLROResults",
"lastUpdateDateTime": "2024-01-24T13:17:58.33934Z",
"status": "succeeded",
"results": {
"documents": [
{
"id": "doc_0",
"source": {
"kind": "AzureBlob",
"location": "https://myaccount.blob.core.windows.net/sample-input/input.pdf"
},
"targets": [
{
"kind": "AzureBlob",
"location": "https://myaccount.blob.core.windows.net/sample-output/df6611a3-fe74-44f8-b8d4-58ac7491cb13/ExtractiveSummarization-0001/input.result.json"
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2023-02-01-preview"
}
}
]
}
}
Após conclusão bem-sucedida:
- Os documentos analisados podem ser encontrados no seu contêiner de destino.
- O método POST bem-sucedido devolve um
202 Accepted código de resposta indicando que o serviço criou o pedido em lote.
- A solicitação POST também retornou cabeçalhos de resposta, incluindo
Operation-Location que fornece um valor usado em solicitações GET subsequentes.
Limpeza de recursos
Para limpar e remover um recurso de IA do Azure, você pode excluir o recurso individual ou todo o grupo de recursos. Se eliminares o grupo de recursos, todos os recursos contidos também são eliminados.