Como usar o resumo de conversação

Importante

Nossa região de visualização, Suécia Central, apresenta nossas técnicas de ajuste fino LLM mais recentes e em constante evolução baseadas em modelos GPT. Convidamo-lo a experimentá-los com um recurso linguístico na região central da Suécia.

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

  • API REST
  • Python
  • C#

Aspetos de resumo da conversação

  • O título do capítulo e a narrativa (conversação geral) são projetados para resumir 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.

  • Problema e resolução (focado em call center) é projetado para resumir logs de bate-papo de texto entre clientes e agentes de atendimento ao cliente. Esse recurso é capaz de fornecer problemas e resoluções presentes nesses logs, que ocorrem entre duas partes.

  • A narrativa é projetada para resumir a narrativa de uma conversa.

  • A recapitulação foi projetada para condensar longas reuniões ou conversas em um resumo conciso de um parágrafo para fornecer uma visão geral rápida.

  • As tarefas de acompanhamento são projetadas para resumir itens de ação e tarefas que surgem durante uma reunião.

A diagram for sending data to the conversation summarization issues and resolution feature.

Os modelos de IA utilizados pela API são fornecidos pelo serviço, 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:

Aspeto Section
Questão e Resolução Questão e Resolução
Título do Capítulo Título do Capítulo
Narrativa Narrativa
Recapitulação e Acompanhamento Recapitulação e acompanhamento

Funcionalidades

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.

Há outro recurso na Linguagem de IA do Azure chamado resumo de documentos que é mais adequado para resumir documentos em resumos concisos. Ao decidir entre o resumo de documentos e o resumo de conversas, considere os seguintes pontos:

  • Formato de entrada: O resumo da conversa pode operar tanto no texto do bate-papo quanto nas transcrições de fala, que têm falantes e seus enunciados. A sumarização de documentos opera usando texto simples ou formatos Word, PDF ou PowerPoint.
  • Objetivo da sumarização: por exemplo, a questão da conversa e o resumo da resolução retornam um motivo e a resolução de um bate-papo entre um cliente e um agente de atendimento ao cliente.

Envio de dados

Você envia documentos para a API como cadeias de texto. A análise é realizada aquando da 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. Para obter informações sobre o tamanho e o número de solicitações que você pode enviar por minuto e segundo, consulte os limites de dados abaixo.

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 esse período de tempo, os resultados são limpos e não estão mais disponíveis para recuperação.

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 o resumo 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 resumo de problemas e resoluções de conversação também permite obter 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

O resumo do título do capítulo da conversa permite obter títulos dos capítulos das conversas de entrada. Um cenário de exemplo guiado é fornecido abaixo:

  1. Copie o comando abaixo 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"
        ]
      }
    }
  ]
}
'
  1. Faça as alterações seguintes ao comando, se for 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.
  2. Abra uma janela de prompt de comando (por exemplo: BASH).

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

  4. Obtenha o operation-location 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
  1. 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 do título do capítulo:

{
    "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 abaixo:

  1. Copie o comando abaixo 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"
        ]
      }
    }
  ]
}
'
  1. Faça as alterações seguintes ao comando, se for 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.
  2. Abra uma janela de prompt de comando (por exemplo: BASH).

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

  4. Obtenha o operation-location 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
  1. 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 resumo narrativo:

{
  "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 resumo de tarefas de recapitulação e acompanhamento

O resumo de conversas também permite que você obtenha recapitulações e tarefas de acompanhamento de conversas de entrada. Um cenário de exemplo guiado é fornecido abaixo:

  1. Copie o comando abaixo 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"
        ]
      }
    }
  ]
}
'
  1. Faça as alterações seguintes ao comando, se for 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.
  2. Abra uma janela de prompt de comando (por exemplo: BASH).

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

  4. Obtenha o operation-location 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
  1. 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 acompanhamento 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. Este é apenas um exemplo, a API pode aceitar texto de entrada mais longo. Consulte os limites de dados para obter mais informações.

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. A saída está disponível para recuperação por 24 horas. Após esse tempo, a saída é limpa. Devido ao suporte multilíngue e a emojis, a resposta pode conter deslocamentos de texto. Consulte como processar compensações para obter mais informações.

No exemplo acima, a API pode retornar as seguintes frases resumidas:

Texto resumido Aspeto
"O cliente quer atualizar sua assinatura. O cliente não sabe como." issue
"O cliente precisa pressionar o botão de atualização e fazer login." Resolução

Consulte também