Jak używać podsumowania konwersacji
Ważne
Nasz region wersji zapoznawczej, Szwecja Środkowa, prezentuje nasze najnowsze i stale ewoluujące techniki dostrajania LLM oparte na modelach GPT. Zapraszamy do wypróbowania ich z zasobem Język w regionie Centralnym Szwecji.
Podsumowanie konwersacji jest dostępne tylko przy użyciu:
- Interfejs API REST
- Python
- C#
Aspekty podsumowania konwersacji
Tytuł rozdziału i narracja (ogólna konwersacja) są przeznaczone do podsumowania konwersacji w tytułach rozdziałów oraz podsumowania treści konwersacji. Ten aspekt podsumowania działa na rozmowach z dowolną liczbą stron.
Rozwiązanie problemu i rozwiązania (ukierunkowane na call center) zostało zaprojektowane w celu podsumowania dzienników czatów tekstowych między klientami i agentami obsługi klienta. Ta funkcja jest w stanie zapewnić zarówno problemy, jak i rozwiązania występujące w tych dziennikach, które występują między dwiema stronami.
Narracja ma na celu podsumowanie narracji rozmowy.
Podsumowanie zostało zaprojektowane w celu skondensowania długich spotkań lub rozmów w zwięzłym podsumowaniu jednego akapitu w celu zapewnienia szybkiego przeglądu.
Zadania podrzędne podrzędne są przeznaczone do podsumowywania elementów akcji i zadań, które pojawiają się podczas spotkania.
Modele sztucznej inteligencji używane przez interfejs API są dostarczane przez usługę. Wystarczy wysłać zawartość do analizy.
Aby ułatwić nawigację, poniżej znajdują się linki do odpowiednich sekcji dla każdej usługi:
Aspekt | Sekcja |
---|---|
Problem i rozwiązanie | Problem i rozwiązanie |
Tytuł rozdziału | Tytuł rozdziału |
Narracja | Narracja |
Podsumowanie i kontynuacja | Podsumowanie i kontynuacja |
Funkcje
Interfejs API podsumowania konwersacji używa technik przetwarzania języka naturalnego do podsumowania konwersacji w krótszych podsumowaniach na żądanie. Podsumowanie konwersacji może zawierać podsumowanie problemów i rozwiązań omówionych w dwupartyjnej konwersacji lub podsumować długą konwersację w rozdziałach i krótką narrację dla każdego rozdziału.
W usłudze Azure AI Language istnieje inna funkcja o nazwie podsumowania tekstu, która jest bardziej odpowiednia do podsumowania dokumentów w zwięzłe podsumowania. Podczas podejmowania decyzji dotyczących podsumowania tekstu i podsumowania konwersacji należy wziąć pod uwagę następujące kwestie:
- Format danych wejściowych: podsumowanie konwersacji może działać zarówno na transkrypcji tekstu czatu, jak i transkrypcji mowy, które mają osoby mówiące i ich wypowiedzi. Podsumowywanie tekstu działa przy użyciu prostego tekstu, formatu Word, PDF lub PowerPoint.
- Cel podsumowania: na przykład problem z konwersacją i podsumowanie rozwiązania zwraca przyczynę i rozwiązanie rozmowy między klientem a agentem obsługi klienta.
Przesyłanie danych
Uwaga
Zobacz artykuł Language Studio, aby uzyskać informacje na temat formatowania tekstu konwersacyjnego do przesłania przy użyciu programu Language Studio.
Dokumenty są przesyłane do interfejsu API jako ciągi tekstu. Analiza jest wykonywana po odebraniu żądania. Ponieważ interfejs API jest asynchroniczny, może wystąpić opóźnienie między wysłaniem żądania interfejsu API a odebraniem wyników. Aby uzyskać informacje na temat rozmiaru i liczby żądań, które można wysłać na minutę i sekundę, zobacz poniższe limity danych.
W przypadku korzystania z tej funkcji wyniki interfejsu API są dostępne przez 24 godziny od momentu pozyskiwania żądania i są wskazywane w odpowiedzi. Po upływie tego okresu wyniki są czyszczone i nie są już dostępne do pobierania.
Podczas przesyłania danych do podsumowania konwersacji zalecamy wysłanie jednego dziennika czatu na żądanie, aby uzyskać lepsze opóźnienie.
Pobieranie podsumowań z czatów tekstowych
Możesz użyć podsumowania problemu z konwersacją i rozwiązania, aby uzyskać podsumowania zgodnie z potrzebami. Aby zapoznać się z przykładem korzystania z czatów tekstowych, zobacz artykuł Szybki start.
Pobieranie podsumowań z transkrypcji mowy
Podsumowanie problemu z konwersacją i rozwiązywania problemów umożliwia również uzyskiwanie podsumowań z transkrypcji mowy przy użyciu funkcji zamiany mowy na tekst w usłudze Mowa. W poniższym przykładzie przedstawiono krótką konwersację, którą można uwzględnić w żądaniach interfejsu 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
}
]
}
}
]
}
]
Pobieranie tytułów rozdziałów
Podsumowanie tytułu rozdziału konwersacji umożliwia pobieranie tytułów rozdziałów z konwersacji wejściowych. Poniżej przedstawiono przykładowy scenariusz z przewodnikiem:
- Skopiuj poniższe polecenie do edytora tekstów. Przykład powłoki BASH używa znaku kontynuacji
\
wiersza. Jeśli konsola lub terminal używa innego znaku kontynuacji wiersza, użyj tego znaku.
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"
]
}
}
]
}
'
W razie potrzeby wprowadź w poleceniu następujące zmiany:
- Zastąp wartość
your-value-language-key
kluczem. - Zastąp pierwszą część adresu URL żądania adresem URL
your-language-resource-endpoint
punktu końcowego.
- Zastąp wartość
Otwórz okno wiersza polecenia (na przykład: BASH).
Wklej polecenie z edytora tekstów do okna wiersza polecenia, a następnie uruchom polecenie.
Pobierz element
operation-location
z nagłówka odpowiedzi. Wartość wygląda podobnie do następującego adresu URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Aby uzyskać wyniki żądania, użyj następującego polecenia cURL. Pamiętaj, aby zastąpić
<my-job-id>
wartość identyfikatora GUID otrzymaną z poprzedniegooperation-location
nagłówka odpowiedzi:
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>"
Przykładowa odpowiedź JSON podsumowania tytułu rozdziału:
{
"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"
}
}
]
}
}
W przypadku długiej konwersacji model może podzielić go na wiele spójnych części i podsumować każdy segment. Istnieje również długie contexts
pole dla każdego podsumowania, które informuje, z którego zakresu konwersacji wejściowej wygenerowaliśmy podsumowanie.
Pobieranie podsumowania narracji
Podsumowanie konwersacji umożliwia również uzyskanie podsumowań narracji z konwersacji wejściowych. Poniżej przedstawiono przykładowy scenariusz z przewodnikiem:
- Skopiuj poniższe polecenie do edytora tekstów. Przykład powłoki BASH używa znaku kontynuacji
\
wiersza. Jeśli konsola lub terminal używa innego znaku kontynuacji wiersza, użyj tego znaku.
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"
]
}
}
]
}
'
W razie potrzeby wprowadź w poleceniu następujące zmiany:
- Zastąp wartość
your-language-resource-key
kluczem. - Zastąp pierwszą część adresu URL żądania adresem URL
your-language-resource-endpoint
punktu końcowego.
- Zastąp wartość
Otwórz okno wiersza polecenia (na przykład: BASH).
Wklej polecenie z edytora tekstów do okna wiersza polecenia, a następnie uruchom polecenie.
Pobierz element
operation-location
z nagłówka odpowiedzi. Wartość wygląda podobnie do następującego adresu URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Aby uzyskać wyniki żądania, użyj następującego polecenia cURL. Pamiętaj, aby zastąpić
<my-job-id>
wartość identyfikatora GUID otrzymaną z poprzedniegooperation-location
nagłówka odpowiedzi:
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>"
Przykładowa odpowiedź JSON podsumowania narracji:
{
"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"
}
}
]
}
}
W przypadku długiej konwersacji model może podzielić go na wiele spójnych części i podsumować każdy segment. Istnieje również długie contexts
pole dla każdego podsumowania, które informuje, z którego zakresu konwersacji wejściowej wygenerowaliśmy podsumowanie.
Pobieranie podsumowania i podsumowywania kolejnych zadań
Podsumowanie konwersacji umożliwia również podsumowanie i wykonywanie kolejnych zadań z konwersacji wejściowych. Poniżej przedstawiono przykładowy scenariusz z przewodnikiem:
- Skopiuj poniższe polecenie do edytora tekstów. Przykład powłoki BASH używa znaku kontynuacji
\
wiersza. Jeśli konsola lub terminal używa innego znaku kontynuacji wiersza, użyj tego znaku.
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"
]
}
}
]
}
'
W razie potrzeby wprowadź w poleceniu następujące zmiany:
- Zastąp wartość
your-language-resource-key
kluczem. - Zastąp pierwszą część adresu URL żądania adresem URL
your-language-resource-endpoint
punktu końcowego.
- Zastąp wartość
Otwórz okno wiersza polecenia (na przykład: BASH).
Wklej polecenie z edytora tekstów do okna wiersza polecenia, a następnie uruchom polecenie.
Pobierz element
operation-location
z nagłówka odpowiedzi. Wartość wygląda podobnie do następującego adresu URL:
https://<your-language-resource-endpoint>/language/analyze-conversations/jobs/12345678-1234-1234-1234-12345678?api-version=2023-11-15-preview
- Aby uzyskać wyniki żądania, użyj następującego polecenia cURL. Pamiętaj, aby zastąpić
<my-job-id>
wartość identyfikatora GUID otrzymaną z poprzedniegooperation-location
nagłówka odpowiedzi:
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>"
Przykładowa odpowiedź podsumowania i kontynuacji podsumowania 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"
}
}
]
}
}
W przypadku długiej konwersacji model może podzielić go na wiele spójnych części i podsumować każdy segment. Istnieje również długie contexts
pole dla każdego podsumowania, które informuje, z którego zakresu konwersacji wejściowej wygenerowaliśmy podsumowanie.
Pobieranie problemów z konwersacją i wyników podsumowania rozwiązywania problemów
Poniższy tekst to przykład zawartości, którą można przesłać do podsumowywania problemów z konwersacją i rozwiązywania problemów. Jest to tylko przykład, interfejs API może akceptować dłuższy tekst wejściowy. Aby uzyskać więcej informacji, zobacz limity danych.
Agent: "Witaj, jak mogę Ci pomóc?"
Klient: "Jak mogę uaktualnić subskrypcję firmy Contoso? Starałem się przez cały dzień."
Agent: "Naciśnij przycisk uaktualniania, a następnie zaloguj się i postępuj zgodnie z instrukcjami".
Podsumowanie jest wykonywane po otrzymaniu żądania przez utworzenie zadania dla zaplecza interfejsu API. Jeśli zadanie zakończyło się pomyślnie, dane wyjściowe interfejsu API zostaną zwrócone. Dane wyjściowe są dostępne do pobierania przez 24 godziny. Po tym czasie dane wyjściowe są czyszczone. Ze względu na obsługę języków wielojęzycznych i emoji odpowiedź może zawierać przesunięcia tekstu. Aby uzyskać więcej informacji, zobacz , jak przetwarzać przesunięcia .
W powyższym przykładzie interfejs API może zwrócić następujące podsumowane zdania:
Tekst podsumowany | Aspekt |
---|---|
"Klient chce uaktualnić swoją subskrypcję. Klient nie wie, jak to zrobić". | problem |
"Klient musi nacisnąć przycisk uaktualnienia i zalogować się". | rozwiązanie |