Partager via


Utilisation du résumé des conversations

Important

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

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

  • API REST
  • Python
  • C#

Service de résumé des conversations

  • Le titre du chapitre et la narration (conversation générale) sont conçus pour résumer une conversation en titres de chapitre et une synthèse du contenu de la conversation. Cet aspect de synthèse fonctionne sur les conversations avec un nombre quelconque de parties.

  • Le problème et la résolution (centre d’appels ciblé) sont conçus pour résumer les journaux de conversation texte entre les clients et les agents de service client. Cette fonctionnalité est capable de fournir à la fois des problèmes et des résolutions présents dans ces journaux, qui se produisent entre deux parties.

  • La narration est conçue pour résumer le récit d’une conversation.

  • Recap est conçu pour condenser de longues réunions ou conversations en un résumé concis d'un paragraphe afin de fournir une vue d'ensemble rapide.

  • Les tâches de suivi sont conçues pour résumer les éléments d’action et les tâches qui se produisent pendant une réunion.

Diagramme illustrant l’envoi de données vers les problèmes et solutions de la fonctionnalité de résumé de conversation.

Les modèles IA utilisés par l’API sont fournis par le service ; vous n’avez qu’à envoyer le contenu à analyser.

Pour faciliter la navigation, voici des liens vers les sections correspondantes pour chaque service :

Aspect Section
Problème et résolution Problème et résolution
Titre du chapitre Titre du chapitre
Narration Narration
Récapitulatif et suivi Récapitulatif et suivi

Fonctionnalités

L’API de synthèse des conversations utilise des techniques de traitement du langage naturel pour résumer les conversations en résumés plus courts par requête. La synthèse des conversations peut résumer les questions et les résolutions abordées dans une conversation à deux parties ou résumer une longue conversation en chapitres et un bref récit pour chaque chapitre.

Il existe une autre fonctionnalité dans Azure AI Language nommée résumé de texte, qui convient mieux pour synthétiser des documents en résumés concis. Quand vous choisissez entre le résumé de texte et le résumé de conversation, tenez compte des points suivants :

  • Format d'entrée : Le résumé de conversation peut fonctionner à la fois sur le texte du chat et sur les transcriptions vocales, qui comportent des locuteurs et leurs énoncés. Le résumé de texte fonctionne à l’aide de formats texte simples, Word, PDF ou PowerPoint.
  • Objectif de synthèse : par exemple, le problème de conversation et la synthèse de résolution retourne une raison et la résolution d’une conversation entre un client et un agent de service client.

Envoi de données

Remarque

Consultez l’article Language Studio pour plus d’informations sur la mise en forme du texte conversationnel à envoyer à l’aide de Language Studio.

Les documents sont envoyés à l’API sous forme de chaînes de texte. L’analyse est effectuée à la réception de la demande. Comme l’API est asynchrone, il peut y avoir un délai entre l’envoi d’une requête d’API et la réception des résultats. Pour connaître la taille et le nombre de requêtes que vous pouvez envoyer par minute et seconde, consultez les limites de données ci-dessous.

Lorsque vous utilisez cette fonctionnalité, les résultats de l’API sont disponibles pendant 24 heures à partir du moment où la demande a été ingérée, et sont indiqués dans la réponse. Après cette période, les résultats sont purgés et ne sont plus disponibles pour récupération.

Quand vous envoyez des données à un résumé de conversation, nous vous recommandons d’envoyer un journal de conversation par demande, pour une meilleure latence.

Obtenir des résumés à partir de conversations texte

Vous pouvez utiliser le problème de conversation et la synthèse de résolution pour obtenir des résumés à mesure que vous avez besoin. Pour voir un exemple utilisant des conversations texte, consultez l’article de démarrage rapide.

Obtenir des résumés à partir de transcriptions vocales

Le résumé des problèmes et des résolutions des conversations vous permet également d’obtenir des résumés à partir de transcriptions vocales à l’aide de la fonctionnalité de reconnaissance vocale du service Speech. L’exemple suivant montre une courte conversation que vous pouvez inclure dans vos requêtes d’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
                  }
               ]
            }
         }
      ]
   }
]

Obtenir des titres de chapitre

La synthèse du titre du chapitre de conversation vous permet d’obtenir des titres de chapitre à partir de conversations d’entrée. Un exemple de scénario guidé est fourni ci-dessous :

  1. Copiez la commande ci-dessous dans un éditeur de texte. L’exemple BASH utilise le caractère de continuation de ligne \. Si votre console ou terminal utilise un caractère de continuation de ligne différent, utilisez ce caractère.
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. Modifiez la commande comme ci-dessous :

    • Remplacez la valeur your-value-language-key par votre propre clé.
    • Remplacez la première partie de l’URL de la requête your-language-resource-endpoint par votre propre URL de point de terminaison.
  2. Ouvrez une fenêtre d’invite de commandes (par exemple : BASH).

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

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

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

Exemple de réponse JSON de titre de chapitre :

{
    "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"
                }
            }
        ]
    }
}

Pour une longue conversation, le modèle peut le segmenter en plusieurs parties cohérentes et résumer chaque segment. Il existe également un champ long contexts pour chaque résumé, qui indique à partir de quelle plage de la conversation d’entrée nous avons généré le résumé.

Obtenir une synthèse de narration

La synthèse des conversations vous permet également d’obtenir des résumés de narration à partir de conversations d’entrée. Un exemple de scénario guidé est fourni ci-dessous :

  1. Copiez la commande ci-dessous dans un éditeur de texte. L’exemple BASH utilise le caractère de continuation de ligne \. Si votre console ou terminal utilise un caractère de continuation de ligne différent, utilisez ce caractère.
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. Modifiez la commande comme ci-dessous :

    • Remplacez la valeur your-language-resource-key par votre propre clé.
    • Remplacez la première partie de l’URL de la requête your-language-resource-endpoint par votre propre URL de point de terminaison.
  2. Ouvrez une fenêtre d’invite de commandes (par exemple : BASH).

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

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

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

Exemple de réponse JSON de synthèse de narration :

{
  "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"
        }
      }
    ]
  }
}

Pour une longue conversation, le modèle peut le segmenter en plusieurs parties cohérentes et résumer chaque segment. Il existe également un champ long contexts pour chaque résumé, qui indique à partir de quelle plage de la conversation d’entrée nous avons généré le résumé.

Récapitulation et suivi des tâches

La synthèse des conversations vous permet également d'obtenir des récapitulatifs et des tâches de suivi à partir des conversations saisies. Un exemple de scénario guidé est fourni ci-dessous :

  1. Copiez la commande ci-dessous dans un éditeur de texte. L’exemple BASH utilise le caractère de continuation de ligne \. Si votre console ou terminal utilise un caractère de continuation de ligne différent, utilisez ce caractère.
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. Modifiez la commande comme ci-dessous :

    • Remplacez la valeur your-language-resource-key par votre propre clé.
    • Remplacez la première partie de l’URL de la requête your-language-resource-endpoint par votre propre URL de point de terminaison.
  2. Ouvrez une fenêtre d’invite de commandes (par exemple : BASH).

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

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

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

Exemple de récapitulatif et de suivi de la réponse JSON résumée :

{
    "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"
                }
            }
        ]
    }
}

Pour une longue conversation, le modèle peut le segmenter en plusieurs parties cohérentes et résumer chaque segment. Il existe également un champ long contexts pour chaque résumé, qui indique à partir de quelle plage de la conversation d’entrée nous avons généré le résumé.

Obtenir des résultats du problème de conversation et de la résolution

Le texte suivant est un exemple de contenu que vous pourriez soumettre pour le résumé du problème de conversation et de la résolution. Il ne s'agit que d'un exemple, l'API peut accepter un texte d'entrée plus long. Pour plus d’informations, consultez les limites de données.

Agent : « Bonjour, que puis-je faire pour vous ? »

Client : « Comment est-ce que je peux mettre à niveau mon abonnement Contoso ? J’ai passé toute la journée à essayer. »

Agent : «Appuyez sur le bouton de mise à niveau, puis connectez-vous et suivez les instructions.»

Le résumé est exécuté à la réception de la demande en créant un travail pour le back-end d’API. Si la tâche réussit, la sortie de l’API est retournée. La sortie peut être récupérée pendant 24 heures. après quoi elle est vidée. En raison de la prise en charge multilingue et des émojis, la réponse peut contenir des décalages de texte. Pour plus d’informations, consultez le guide pratique pour traiter les décalages.

Dans l’exemple ci-dessus, l’API pourrait retourner les phrases de résumé suivantes :

Résumé du texte Aspect
« Le client souhaite mettre à niveau son abonnement. Le client ne sait pas comment procéder. » problème
« Le client doit appuyer sur le bouton de mise à niveau, puis se connecter. » resolution

Voir aussi