Rozszerzanie aplikacji w czasie wykonywania przewidywania
Ważne
Usługa LUIS zostanie wycofana 1 października 2025 r. i od 1 kwietnia 2023 r. nie będzie można utworzyć nowych zasobów usługi LUIS. Zalecamy migrację aplikacji LUIS do interpretacji języka konwersacyjnego, aby korzystać z ciągłej pomocy technicznej i wielojęzycznych możliwości produktów.
Schemat aplikacji (modele i funkcje) jest trenowany i publikowany w punkcie końcowym przewidywania. Ten opublikowany model jest używany w środowisku uruchomieniowym przewidywania. Możesz przekazać nowe informacje wraz z wypowiedzią użytkownika do środowiska uruchomieniowego przewidywania w celu rozszerzenia przewidywania.
Dwa zmiany schematu środowiska uruchomieniowego przewidywania obejmują:
Jednostki zewnętrzne
Jednostki zewnętrzne zapewniają aplikacji LUIS możliwość identyfikowania i etykietowania jednostek w czasie wykonywania, które mogą być używane jako funkcje dla istniejących jednostek. Dzięki temu można używać własnych oddzielnych i niestandardowych wyodrębniaczy jednostek przed wysłaniem zapytań do punktu końcowego przewidywania. Ponieważ odbywa się to w punkcie końcowym przewidywania zapytania, nie musisz ponownie trenować i publikować modelu.
Aplikacja kliencka udostępnia własny obiekt wyodrębniania jednostek, zarządzając dopasowywaniem jednostek i określaniem lokalizacji w wypowiedzi dopasowanej jednostki, a następnie wysyłając te informacje z żądaniem.
Jednostki zewnętrzne to mechanizm rozszerzania dowolnego typu jednostki, a jednocześnie używany jako sygnały do innych modeli.
Jest to przydatne w przypadku jednostki, która ma dane dostępne tylko w czasie wykonywania przewidywania zapytań. Przykłady tego typu danych stale zmieniają dane lub określone dla poszczególnych użytkowników. Możesz rozszerzyć jednostkę kontaktową usługi LUIS o informacje zewnętrzne z listy kontaktów użytkownika.
Jednostki zewnętrzne są częścią interfejsu API tworzenia w wersji 3.
Jednostka już istnieje w aplikacji
Wartość entityName
dla jednostki zewnętrznej przekazanej w treści żądania PUNKTU końcowego POST musi już istnieć w wytrenowanej i opublikowanej aplikacji w momencie wykonania żądania. Typ jednostki nie ma znaczenia, wszystkie typy są obsługiwane.
Pierwszy obrót w konwersacji
Rozważ pierwszą wypowiedź w konwersacji z czatbotem, w której użytkownik wprowadza następujące niekompletne informacje:
Send Hazem a new message
Żądanie od czatbota do usługi LUIS może przekazać informacje w treści Hazem
POST, aby było ono bezpośrednio dopasowane jako jeden z kontaktów użytkownika.
"externalEntities": [
{
"entityName":"contacts",
"startIndex": 5,
"entityLength": 5,
"resolution": {
"employeeID": "05013",
"preferredContactType": "TeamsChat"
}
}
]
Odpowiedź przewidywania zawiera jednostkę zewnętrzną ze wszystkimi innymi przewidywanymi jednostkami, ponieważ jest ona zdefiniowana w żądaniu.
Drugi obrót w konwersacji
Następna wypowiedź użytkownika w czatbotze używa bardziej niejasnego terminu:
Send him a calendar reminder for the party.
Z tej kolei konwersacja wypowiedź jest używana him
jako odwołanie do Hazem
elementu . Czatbot konwersacji w treści POST może mapować him
na wartość jednostki wyodrębnioną z pierwszej wypowiedzi . Hazem
"externalEntities": [
{
"entityName":"contacts",
"startIndex": 5,
"entityLength": 3,
"resolution": {
"employeeID": "05013",
"preferredContactType": "TeamsChat"
}
}
]
Odpowiedź przewidywania zawiera jednostkę zewnętrzną ze wszystkimi innymi przewidywanymi jednostkami, ponieważ jest ona zdefiniowana w żądaniu.
Zastępowanie istniejących przewidywań modelu
Właściwość preferExternalEntities
options określa, że jeśli użytkownik wysyła jednostkę zewnętrzną, która nakłada się na przewidywaną jednostkę o tej samej nazwie, usługa LUIS wybiera jednostkę przekazaną lub jednostkę istniejącą w modelu.
Rozważmy na przykład zapytanie today I'm free
. Usługa LUIS wykrywa today
jako datę/godzinav2 z następującą odpowiedzią:
"datetimeV2": [
{
"type": "date",
"values": [
{
"timex": "2019-06-21",
"value": "2019-06-21"
}
]
}
]
Jeśli użytkownik wyśle jednostkę zewnętrzną:
{
"entityName": "datetimeV2",
"startIndex": 0,
"entityLength": 5,
"resolution": {
"date": "2019-06-21"
}
}
preferExternalEntities
Jeśli parametr ma wartość false
, usługa LUIS zwraca odpowiedź tak, jakby jednostka zewnętrzna nie została wysłana.
"datetimeV2": [
{
"type": "date",
"values": [
{
"timex": "2019-06-21",
"value": "2019-06-21"
}
]
}
]
preferExternalEntities
Jeśli parametr ma wartość true
, usługa LUIS zwraca odpowiedź, w tym:
"datetimeV2": [
{
"date": "2019-06-21"
}
]
Rozwiązanie
Opcjonalna resolution
właściwość zwraca wartość w odpowiedzi przewidywania, umożliwiając przekazywanie metadanych skojarzonych z jednostką zewnętrzną, a następnie odbieranie jej z powrotem w odpowiedzi.
Podstawowym celem jest rozszerzenie wstępnie utworzonych jednostek, ale nie jest ograniczone do tego typu jednostki.
Właściwość resolution
może być liczbą, ciągiem, obiektem lub tablicą:
- "Dallas"
- {"text": "value"}
- 12345
- ["a", "b", "c"]
Listy dynamiczne
Listy dynamiczne umożliwiają rozszerzenie istniejącej jednostki listy wytrenowanych i opublikowanych już w aplikacji usługi LUIS.
Użyj tej funkcji, gdy wartości jednostki listy muszą być okresowo zmieniane. Ta funkcja umożliwia rozszerzenie już wytrenowanego i opublikowanego jednostki listy:
- W momencie żądania punktu końcowego przewidywania zapytania.
- W przypadku pojedynczego żądania.
Jednostka listy może być pusta w aplikacji usługi LUIS, ale musi istnieć. Jednostka listy w aplikacji usługi LUIS nie została zmieniona, ale możliwość przewidywania w punkcie końcowym została rozszerzona w celu uwzględnienia maksymalnie 2 list z około 1000 elementami.
Treść żądania JSON listy dynamicznej
Wyślij w następującej treści JSON, aby dodać nową listę podrzędną z synonimami do listy i przewidzieć jednostkę listy dla tekstu, LUIS
z POST
żądaniem przewidywania zapytania:
{
"query": "Send Hazem a message to add an item to the meeting agenda about LUIS.",
"options":{
"timezoneOffset": "-8:00"
},
"dynamicLists": [
{
"listEntity*":"ProductList",
"requestLists":[
{
"name": "Azure AI services",
"canonicalForm": "Azure-Cognitive-Services",
"synonyms":[
"language understanding",
"luis",
"qna maker"
]
}
]
}
]
}
Odpowiedź przewidywania zawiera jednostkę listy ze wszystkimi innymi przewidywanymi jednostkami, ponieważ jest ona zdefiniowana w żądaniu.