Delen via


App uitbreiden tijdens voorspellingsruntime

Belangrijk

LUIS wordt op 1 oktober 2025 buiten gebruik gesteld en vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources maken. We raden u aan uw LUIS-toepassingen te migreren naar gesprekstaalbegrip om te profiteren van continue productondersteuning en meertalige mogelijkheden.

Het schema van de app (modellen en functies) wordt getraind en gepubliceerd naar het voorspellingseindpunt. Dit gepubliceerde model wordt gebruikt voor de voorspellingsruntime. U kunt nieuwe informatie, samen met de uiting van de gebruiker, doorgeven aan de voorspellingsruntime om de voorspelling te verbeteren.

Twee wijzigingen in het voorspellingsruntimeschema zijn onder andere:

Externe entiteiten

Externe entiteiten bieden uw LUIS-app de mogelijkheid om entiteiten tijdens runtime te identificeren en labelen, die kunnen worden gebruikt als functies voor bestaande entiteiten. Hiermee kunt u uw eigen afzonderlijke en aangepaste entiteitsextracties gebruiken voordat u query's naar uw voorspellingseindpunt verzendt. Omdat dit wordt gedaan op het eindpunt van de queryvoorspelling, hoeft u uw model niet opnieuw te trainen en te publiceren.

De clienttoepassing biedt een eigen entiteitsextractor door entiteitskoppeling te beheren en de locatie binnen de uiting van die overeenkomende entiteit te bepalen en die informatie vervolgens met de aanvraag te verzenden.

Externe entiteiten zijn het mechanisme voor het uitbreiden van elk entiteitstype terwijl ze nog steeds worden gebruikt als signalen voor andere modellen.

Dit is handig voor een entiteit met alleen gegevens die alleen beschikbaar zijn tijdens de queryvoorspellingsruntime. Voorbeelden van dit type gegevens veranderen voortdurend gegevens of specifieke gegevens per gebruiker. U kunt een LUIS-contactpersoonentiteit uitbreiden met externe gegevens uit de lijst met contactpersonen van een gebruiker.

Externe entiteiten maken deel uit van de V3-creatie-API.

Entiteit bestaat al in de app

De waarde van entityName de externe entiteit, die is doorgegeven in de POST-hoofdtekst van de eindpuntaanvraag, moet al bestaan in de getrainde en gepubliceerde app op het moment dat de aanvraag wordt ingediend. Het type entiteit maakt niet uit, alle typen worden ondersteund.

Eerst gesprek inleveren

Overweeg een eerste uiting in een chatbotgesprek waarbij een gebruiker de volgende onvolledige informatie invoert:

Send Hazem a new message

De aanvraag van de chatbot naar LUIS kan informatie doorgeven in de POST-hoofdtekst Hazem , zodat deze rechtstreeks wordt vergeleken als een van de contactpersonen van de gebruiker.

    "externalEntities": [
        {
            "entityName":"contacts",
            "startIndex": 5,
            "entityLength": 5,
            "resolution": {
                "employeeID": "05013",
                "preferredContactType": "TeamsChat"
            }
        }
    ]

Het voorspellingsantwoord bevat die externe entiteit, met alle andere voorspelde entiteiten, omdat deze is gedefinieerd in de aanvraag.

Tweede keer gesprek inleveren

De volgende uiting van de gebruiker in de chatbot maakt gebruik van een meer vage term:

Send him a calendar reminder for the party.

Op deze beurt van het gesprek gebruikt him de utterance als verwijzing naar Hazem. De gesprekschatbot kan in de POST-hoofdtekst worden toegewezen him aan de entiteitswaarde die is geëxtraheerd uit de eerste uiting. Hazem

    "externalEntities": [
        {
            "entityName":"contacts",
            "startIndex": 5,
            "entityLength": 3,
            "resolution": {
                "employeeID": "05013",
                "preferredContactType": "TeamsChat"
            }
        }
    ]

Het voorspellingsantwoord bevat die externe entiteit, met alle andere voorspelde entiteiten, omdat deze is gedefinieerd in de aanvraag.

Bestaande modelvoorspellingen overschrijven

De preferExternalEntities eigenschap Opties geeft aan dat als de gebruiker een externe entiteit verzendt die overlapt met een voorspelde entiteit met dezelfde naam, LUIS de entiteit kiest die is doorgegeven of de entiteit die in het model bestaat.

Denk bijvoorbeeld aan de query today I'm free. LUIS detecteert today als een datum/tijdV2 met het volgende antwoord:

"datetimeV2": [
    {
        "type": "date",
        "values": [
            {
                "timex": "2019-06-21",
                "value": "2019-06-21"
            }
        ]
    }
]

Als de gebruiker de externe entiteit verzendt:

{
    "entityName": "datetimeV2",
    "startIndex": 0,
    "entityLength": 5,
    "resolution": {
        "date": "2019-06-21"
    }
}

Als de preferExternalEntities waarde is ingesteld false, retourneert LUIS een antwoord alsof de externe entiteit niet is verzonden.

"datetimeV2": [
    {
        "type": "date",
        "values": [
            {
                "timex": "2019-06-21",
                "value": "2019-06-21"
            }
        ]
    }
]

Als de preferExternalEntities waarde is ingesteld true, retourneert LUIS een antwoord, waaronder:

"datetimeV2": [
    {
        "date": "2019-06-21"
    }
]

Oplossing

De optioneleresolution eigenschap retourneert in het voorspellingsantwoord, zodat u de metagegevens kunt doorgeven die zijn gekoppeld aan de externe entiteit en deze vervolgens weer in het antwoord kunt ontvangen.

Het primaire doel is om vooraf gemaakte entiteiten uit te breiden, maar het is niet beperkt tot dat entiteitstype.

De resolution eigenschap kan een getal, een tekenreeks, een object of een matrix zijn:

  • "Dallas"
  • {"text": "value"}
  • 12345
  • ["a", "b", "c"]

Dynamische lijsten

Met dynamische lijsten kunt u een bestaande getrainde en gepubliceerde lijstentiteit uitbreiden, al in de LUIS-app.

Gebruik deze functie wanneer de waarden van uw lijstentiteit periodiek moeten worden gewijzigd. Met deze functie kunt u een al getrainde en gepubliceerde lijstentiteit uitbreiden:

  • Op het moment van de aanvraag voor het queryvoorspellingseindpunt.
  • Voor één aanvraag.

De lijstentiteit kan leeg zijn in de LUIS-app, maar deze moet bestaan. De lijstentiteit in de LUIS-app wordt niet gewijzigd, maar de voorspellingsmogelijkheid op het eindpunt wordt uitgebreid met maximaal 2 lijsten met ongeveer 1000 items.

JSON-aanvraagbody voor dynamische lijst

Verzend de volgende JSON-hoofdtekst om een nieuwe sublijst met synoniemen toe te voegen aan de lijst en voorspel de lijstentiteit voor de tekst, LUISmet de POST queryvoorspellingsaanvraag:

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

Het voorspellingsantwoord bevat die lijstentiteit, met alle andere voorspelde entiteiten, omdat deze is gedefinieerd in de aanvraag.

Volgende stappen