Dela via


Utöka appen vid förutsägelsekörning

Viktigt!

LUIS dras tillbaka den 1 oktober 2025 och från och med den 1 april 2023 kommer du inte att kunna skapa nya LUIS-resurser. Vi rekommenderar att du migrerar dina LUIS-program till förståelse för konversationsspråk för att dra nytta av fortsatt produktsupport och flerspråkiga funktioner.

Appens schema (modeller och funktioner) tränas och publiceras till förutsägelseslutpunkten. Den här publicerade modellen används på förutsägelsekörningen. Du kan skicka ny information, tillsammans med användarens yttrande, till förutsägelsekörningen för att utöka förutsägelsen.

Två ändringar i förutsägelsekörningsschemat är:

Externa entiteter

Externa entiteter ger LUIS-appen möjlighet att identifiera och märka entiteter under körning, som kan användas som funktioner för befintliga entiteter. På så sätt kan du använda egna separata och anpassade entitetsextraktorer innan du skickar frågor till din förutsägelseslutpunkt. Eftersom detta görs vid frågeförutsägelseslutpunkten behöver du inte träna om och publicera din modell.

Klientprogrammet tillhandahåller en egen entitetsextraktor genom att hantera entitetsmatchning och fastställa platsen inom yttrandet för den matchade entiteten och sedan skicka den informationen med begäran.

Externa entiteter är mekanismen för att utöka alla entitetstyper samtidigt som de fortfarande används som signaler till andra modeller.

Detta är användbart för en entitet som endast har data tillgängliga vid frågeförutsägelsekörning. Exempel på den här typen av data är ständigt föränderliga data eller specifika per användare. Du kan utöka en LUIS-kontaktentitet med extern information från en användares kontaktlista.

Externa entiteter är en del av V3-redigerings-API:et.

Entiteten finns redan i appen

Värdet entityName för för den externa entiteten, som skickades i POST-brödtexten för slutpunktsbegäran, måste redan finnas i den tränade och publicerade appen när begäran görs. Typen av entitet spelar ingen roll, alla typer stöds.

Första sväng i konversationen

Överväg ett första yttrande i en chattrobotkonversation där en användare anger följande ofullständiga information:

Send Hazem a new message

Begäran från chattroboten till LUIS kan skicka in information i POST-brödtexten om Hazem så att den matchas direkt som en av användarens kontakter.

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

Förutsägelsesvaret inkluderar den externa entiteten, med alla andra förutsagda entiteter, eftersom den definieras i begäran.

Andra gången i konversationen

Nästa användaryttrande i chattroboten använder en mer vag term:

Send him a calendar reminder for the party.

I den här konversationen använder him yttrandet som en referens till Hazem. Chattroboten i POST-brödtexten kan mappa him till entitetsvärdet som extraherades från det första yttrandet, Hazem.

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

Förutsägelsesvaret inkluderar den externa entiteten, med alla andra förutsagda entiteter, eftersom den definieras i begäran.

Åsidosätta befintliga modellförutsägelser

Egenskapen preferExternalEntities options anger att om användaren skickar en extern entitet som överlappar en förutsagd entitet med samma namn väljer LUIS den entitet som skickades in eller den entitet som finns i modellen.

Tänk till exempel på frågan today I'm free. LUIS identifierar today som en datetimeV2 med följande svar:

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

Om användaren skickar den externa entiteten:

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

preferExternalEntities Om är inställt på falsereturnerar LUIS ett svar som om den externa entiteten inte skickades.

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

Om är inställt på preferExternalEntities truereturnerar LUIS ett svar, inklusive:

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

Åtgärd

Den valfria resolution egenskapen returnerar i förutsägelsesvaret, så att du kan skicka in metadata som är associerade med den externa entiteten och sedan ta emot den igen i svaret.

Det primära syftet är att utöka fördefinierade entiteter, men det är inte begränsat till den entitetstypen.

Egenskapen resolution kan vara ett tal, en sträng, ett objekt eller en matris:

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

Dynamiska listor

Med dynamiska listor kan du utöka en befintlig tränad och publicerad listentitet, som redan finns i LUIS-appen.

Använd den här funktionen när entitetsvärdena i listan måste ändras regelbundet. Med den här funktionen kan du utöka en redan tränad och publicerad listentitet:

  • Vid tidpunkten för begäran om frågeförutsägelseslutpunkt.
  • För en enskild begäran.

Listentiteten kan vara tom i LUIS-appen, men den måste finnas. Listentiteten i LUIS-appen ändras inte, men förutsägelseförmågan vid slutpunkten utökas till att omfatta upp till 2 listor med cirka 1 000 objekt.

JSON-begärandetext för dynamisk lista

Skicka följande JSON-brödtext för att lägga till en ny underlista med synonymer i listan och förutsäga listentiteten för texten, , LUISmed POST begäran om frågeförutsägelse:

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

Förutsägelsesvaret innehåller den listentiteten, med alla andra förutsagda entiteter, eftersom den definieras i begäran.

Nästa steg