Condividi tramite


Come usare il riepilogo conversazioni

Importante

La nostra area di anteprima, Svezia centrale, presenta le nostre tecniche di ottimizzazione LLM più recenti e in continua evoluzione basate su modelli GPT. Si è invitati a provarli con una risorsa Lingua nell'area Svezia centrale.

Il riepilogo delle conversazioni è disponibile solo usando:

  • REST API
  • Python
  • C#

Aspetti del riepilogo conversazioni

  • Il titolo e la narrazione del capitolo (conversazione generale) sono progettati per riepilogare una conversazione in titoli dei capitoli e un riepilogo del contenuto della conversazione. Questo aspetto del riepilogo funziona sulle conversazioni con un numero qualsiasi di parti.

  • Il problema e la risoluzione (incentrato sul call center) è progettato per riepilogare i log delle chat di testo tra i clienti e gli agenti del servizio clienti. Questa funzionalità è in grado di fornire sia problemi che soluzioni presenti in questi log, che si verificano tra due parti.

  • La narrazione è progettata per riepilogare quella di una conversazione.

  • Il riepilogo è progettato per condensare lunghe riunioni o conversazioni in un riepilogo conciso di un paragrafo per offrire una rapida panoramica.

  • Le attività di completamento sono progettate per riepilogare gli elementi di azione e le attività che si verificano durante una riunione.

Diagramma per l'invio di dati alla funzionalità di problemi e risoluzione del riepilogo conversazioni.

I modelli di intelligenza artificiale usati dall'API vengono forniti dal servizio, quindi è sufficiente inviare contenuto per l'analisi.

Per semplificare la navigazione, ecco i collegamenti alle sezioni corrispondenti per ogni servizio:

Aspetto Sezione
Problema e risoluzione Problema e risoluzione
Titolo capitolo Titolo capitolo
Esempio pratico Esempio pratico
Riepilogo e contatto successivo Riepilogo e contatto successivo

Funzionalità

L'API di riepilogo conversazioni usa tecniche di elaborazione del linguaggio naturale per riepilogare le conversazioni in riepiloghi più brevi per ogni richiesta. Il riepilogo delle conversazioni può riepilogare i problemi e le risoluzioni discussi in una conversazione in due parti o riepilogare una lunga conversazione in capitoli e una breve narrazione per ogni capitolo.

È disponibile un'altra funzionalità di Lingua di Azure AI denominata riepilogo dei documenti più adatta a fare un riepilogo di testo in riassunti concisi. Quando si decide tra riepilogo del testo e riepilogo conversazioni, prendere in considerazione i punti seguenti:

  • Formato di input: il riepilogo conversazioni può funzionare sia sulle trascrizioni di testo delle chat che sulle trascrizioni vocali, con parlanti e le relative espressioni. Il riepilogo del testo funziona usando formati di testo semplice, Word, PDF o PowerPoint.
  • Scopo del riepilogo: ad esempio, il riepilogo dei problemi di conversazione e risoluzione restituisce un motivo e la risoluzione per una chat tra un cliente e un agente del servizio clienti.

Invio di dati

Nota

Per informazioni sulla formattazione del testo della conversazione da inviare tramite Language Studio, vedere l'articolo Language Studio.

I documenti vengono inviati all'API come stringhe di testo. Al momento della ricezione della richiesta viene eseguita l'analisi. Poiché l'API è asincrona, potrebbe verificarsi un ritardo tra l'invio di una richiesta API e la ricezione dei risultati. Per informazioni sulle dimensioni e sul numero di richieste che è possibile inviare al minuto e al secondo, vedere i limiti dei dati riportati di seguito.

Quando si usa questa funzionalità, i risultati dell'API sono disponibili per 24 ore dal momento in cui la richiesta è stata inserita e viene indicata nella risposta. Dopo questo periodo di tempo, i risultati vengono rimossi e non sono più disponibili per il recupero.

Quando si inviano dati al riepilogo conversazioni, è consigliabile inviare un log di chat per ogni richiesta, per una migliore latenza.

Ottenere riepiloghi dalle chat di testo

È possibile usare il riepilogo dei problemi di conversazione e della risoluzione per ottenere riepiloghi in caso di necessità. Per un esempio relativo all'uso delle chat di testo, vedere l'articolo di avvio rapido.

Ottenere riepiloghi dalle trascrizioni vocali

Il riepilogo dei problemi di conversazione e risoluzione consente anche di ottenere riepiloghi dalle trascrizioni vocali usando la funzionalità di riconoscimento vocale del servizio Voce. L'esempio seguente illustra una breve conversazione che è possibile includere nelle richieste 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
                  }
               ]
            }
         }
      ]
   }
]

Ottenere i titoli dei capitoli

Il riepilogo del titolo del capitolo della conversazione consente di ottenere i titoli dei capitoli dalle conversazioni di input. Di seguito è riportato uno scenario di esempio guidato:

  1. Copiare il comando seguente in un editor di testo. L'esempio BASH usa il carattere di continuazione della riga \. Se la console o il terminale usa un carattere di continuazione riga diverso, usare questo carattere.
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. Apportare le modifiche seguenti al comando, dove necessario:

    • Sostituire il valore your-value-language-key con la propria chiave.
    • Sostituire la prima parte dell'URL della richiesta your-language-resource-endpoint con l'URL dell'endpoint.
  2. Aprire una finestra del prompt dei comandi (ad esempio BASH).

  3. Incollare il comando dall'editor di testo nella finestra del prompt dei comandi, quindi eseguire il comando.

  4. Ottenere operation-location dall'intestazione della risposta. Il valore sembra simile all'URL seguente:

https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
  1. Per ottenere i risultati della richiesta, usare il comando cURL seguente. Assicurarsi di sostituire <my-job-id> con il valore GUID ricevuto dall'intestazione della risposta operation-location precedente:
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>"

Esempio di risposta JSON di riepilogo del titolo del capitolo:

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

Per una conversazione lunga, il modello potrebbe segmentarlo in più parti coese e riepilogare ogni segmento. Esiste anche un campo lungo contexts per ogni riepilogo, che indica da quale intervallo della conversazione di input è stato generato il riepilogo.

Ottenere riepiloghi narrativi

Il riepilogo conversazioni consente anche di ottenere riepiloghi narrativi dalle conversazioni di input. Di seguito è riportato uno scenario di esempio guidato:

  1. Copiare il comando seguente in un editor di testo. L'esempio BASH usa il carattere di continuazione della riga \. Se la console o il terminale usa un carattere di continuazione riga diverso, usare questo carattere.
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. Apportare le modifiche seguenti al comando, dove necessario:

    • Sostituire il valore your-language-resource-key con la propria chiave.
    • Sostituire la prima parte dell'URL della richiesta your-language-resource-endpoint con l'URL dell'endpoint.
  2. Aprire una finestra del prompt dei comandi (ad esempio BASH).

  3. Incollare il comando dall'editor di testo nella finestra del prompt dei comandi, quindi eseguire il comando.

  4. Ottenere operation-location dall'intestazione della risposta. Il valore sembra simile all'URL seguente:

https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
  1. Per ottenere i risultati di una richiesta, usare il comando cURL seguente. Assicurarsi di sostituire <my-job-id> con il valore GUID ricevuto dall'intestazione della risposta operation-location precedente:
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>"

Esempio di risposta JSON di riepilogo 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"
        }
      }
    ]
  }
}

Per una conversazione lunga, il modello potrebbe segmentarlo in più parti coese e riepilogare ogni segmento. Esiste anche un campo lungo contexts per ogni riepilogo, che indica da quale intervallo della conversazione di input è stato generato il riepilogo.

Ottenere riassunti e riepiloghi delle attività successive

Il riepilogo delle conversazioni consente anche di ottenere riassunti e attività di completamento dalle conversazioni di input. Di seguito è riportato uno scenario di esempio guidato:

  1. Copiare il comando seguente in un editor di testo. L'esempio BASH usa il carattere di continuazione della riga \. Se la console o il terminale usa un carattere di continuazione riga diverso, usare questo carattere.
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. Apportare le modifiche seguenti al comando, dove necessario:

    • Sostituire il valore your-language-resource-key con la propria chiave.
    • Sostituire la prima parte dell'URL della richiesta your-language-resource-endpoint con l'URL dell'endpoint.
  2. Aprire una finestra del prompt dei comandi (ad esempio BASH).

  3. Incollare il comando dall'editor di testo nella finestra del prompt dei comandi, quindi eseguire il comando.

  4. Ottenere operation-location dall'intestazione della risposta. Il valore sembra simile all'URL seguente:

https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
  1. Per ottenere i risultati di una richiesta, usare il comando cURL seguente. Assicurarsi di sostituire <my-job-id> con il valore GUID ricevuto dall'intestazione della risposta operation-location precedente:
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>"

Riepilogo di esempio e risposta JSON di riepilogo successiva:

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

Per una conversazione lunga, il modello potrebbe segmentarlo in più parti coese e riepilogare ogni segmento. Esiste anche un campo lungo contexts per ogni riepilogo, che indica da quale intervallo della conversazione di input è stato generato il riepilogo.

Recupero dei risultati del problema di conversazione e riepilogo della risoluzione

Il testo seguente è un esempio di contenuto che è possibile inviare per il problema di conversazione e il riepilogo della risoluzione. Questo è solo un esempio, l'API può accettare testo di input più lungo. Per altre informazioni, vedere limiti dei dati.

Agente: "Ciao, come posso aiutarti?"

Cliente: "Come posso aggiornare la sottoscrizione Contoso? Ho provato tutto il giorno."

Agente: "Premi il pulsante di aggiornamento, quindi accedi e segui le istruzioni."

Il riepilogo viene eseguito al ricevimento della richiesta creando un processo per il back-end dell'API. Se il processo ha avuto esito positivo, verrà restituito l'output dell'API. L'output è disponibile per il recupero per 24 ore. Oltre questo periodo, l'output viene eliminato. A causa del supporto multilingue ed emoji, la risposta può contenere offset di testo. Per altre informazioni, vedere come elaborare gli offset.

Nell'esempio precedente l'API potrebbe restituire le frasi riepilogate seguenti:

Testo riepilogato Aspetto
"Il cliente vuole aggiornare la sottoscrizione. Il cliente non sa come." problema
"Il cliente deve premere il pulsante di aggiornamento ed eseguire l'accesso." resolution

Vedi anche