Udostępnij za pośrednictwem


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 Hazemelementu . 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, LUISz 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.

Następne kroki