Udostępnij za pośrednictwem


Rozszerzanie aplikacji w czasie wykonywania przewidywania

Ważne

Usługa Language Understanding Intelligent Service (LUIS) zostanie w pełni wycofana 31 marca 2026 r. Tworzenie zasobów usługi LUIS nie jest dostępne. Od 31 października 2025 r. portal usługi LUIS nie będzie już dostępny. 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": "wartość"}
  • 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