Lägg till förståelse av naturligt språk i din chattrobot
GÄLLER FÖR: SDK v4
Anteckning
Language Understanding (LUIS) dras tillbaka den 1 oktober 2025. Från och med den 1 april 2023 kan du inte skapa nya LUIS-resurser. En nyare version av språktolkning är nu tillgänglig som en del av Azure AI Language.
Conversational Language Understanding (CLU), en funktion i Azure AI Language, är den uppdaterade versionen av LUIS. Mer information om stöd för språkförståelse i Bot Framework SDK finns i Förståelse av naturligt språk.
Möjligheten att förstå vad användaren menar konversationsmässigt och kontextuellt kan vara en svår uppgift, men kan ge roboten en mer naturlig konversationskänsla. Language Understanding (LUIS) är en molnbaserad API-tjänst som gör att du kan göra just detta så att roboten kan känna igen avsikten med användarmeddelanden, tillåta mer naturligt språk från användaren och bättre dirigera konversationsflödet.
Det här avsnittet beskriver hur du lägger till LUIS i ett flygbokningsprogram för att identifiera olika avsikter och entiteter som ingår i användarindata.
Kommentar
Bot Framework JavaScript-, C#- och Python-SDK:erna fortsätter att stödjas, men Java SDK dras tillbaka med slutligt långsiktigt stöd som slutar i november 2023.
Befintliga robotar som skapats med Java SDK fortsätter att fungera.
Om du vill skapa en ny robot kan du använda Microsoft Copilot Studio och läsa om hur du väljer rätt copilot-lösning.
Mer information finns i Framtiden för robotbygge.
Förutsättningar
- Ett LUIS-konto .
- En kopia av Exempel på kärnrobot i C#, JavaScript, Java eller Python.
- Kunskaper om grunderna i roboten och bearbetning av naturligt språk.
Om det här exemplet
Det här exemplet på kärnroboten visar ett exempel på en flygbokningsapp på flygplatsen. Den använder en LUIS-tjänst för att känna igen användarens indata och returnera den högst identifierade LUIS-avsikten.
Språkmodellen innehåller tre avsikter: Book Flight
, Cancel
och None
. LUIS använder dessa avsikter för att förstå vad användaren menade när de skickar ett meddelande till roboten. Språkmodellen definierar också entiteter som LUIS kan extrahera från användarens indata, till exempel ursprunget eller målflygplatsen.
Efter varje bearbetning av användarindata DialogBot
sparar du det aktuella tillståndet för både UserState
och ConversationState
. När all nödvändig information har samlats in skapar kodningsexemplet en bokningsreservation för demoflyg. I den här artikeln ska vi ta upp LUIS-aspekterna i det här exemplet. Det allmänna flödet i exemplet är dock:
-
OnMembersAddedAsync
anropas när en ny användare är ansluten och visar ett välkomstkort. -
OnMessageActivityAsync
anropas för varje användarindata som tas emot.
Modulen OnMessageActivityAsync
kör lämplig dialogruta via Run
dialogtilläggsmetoden. Sedan anropar huvuddialogrutan LUIS-hjälpen för att hitta avsikten med den mest poänggivande användaren. Om huvudavsikten för användarens indata returnerar "BookFlight", fyller hjälparen i information från användaren som LUIS har returnerat. Därefter startar BookingDialog
huvuddialogrutan , som hämtar ytterligare information efter behov från användaren, till exempel:
-
Origin
den ursprungliga staden -
TravelDate
datumet då flygresan skulle bokas -
Destination
målstaden
Den här artikeln beskriver hur du lägger till LUIS i en robot. Information om hur du använder dialogrutor eller tillståndsinformation hittar du genom att antingen samla in användarindata med hjälp av en dialogruta eller spara användar- och konversationsdata, respektive.
Skapa en LUIS-app i LUIS-portalen
- Logga in på LUIS-portalen och skapa vid behov ett konto och en redigeringsresurs.
- På sidan Konversationsappar i LUIS väljer du Importera och sedan Importera som JSON.
-
I dialogrutan Importera ny app:
- Välj filen FlightBooking.json i mappen CognitiveModels i exemplet.
- Ange
FlightBooking
som valfritt namn på appen och välj Klar.
- Webbplatsen kan visa Hur du skapar en effektiv LUIS-app och Uppgradera dina sammansatta entitetsdialogrutor . Du kan stänga dessa dialogrutor och fortsätta.
- Träna appen och publicera sedan appen i produktionsmiljön . Mer information finns i LUIS-dokumentationen om hur du tränar och publicerar en app.
Varför använda entiteter
LUIS-entiteter gör det möjligt för roboten att förstå händelser utöver standard avsikter. På så sätt kan du samla in ytterligare information från användarna, så att din robot kan ställa frågor och svara mer intelligent. Tillsammans med definitioner för de tre LUIS-avsikterna "Book Flight", "Cancel" och "None" innehåller filen FlightBooking.json också en uppsättning entiteter som "From.Airport" och "To.Airport". Dessa entiteter gör det möjligt för LUIS att identifiera och returnera ytterligare information som finns i användarens ursprungliga indata när de begär en ny resebokning.
Hämta värden för att ansluta till luis-appen
När luis-appen har publicerats kan du komma åt den från din robot. Du måste registrera flera värden för att få åtkomst till LUIS-appen inifrån roboten. Du kan hämta den informationen med hjälp av LUIS-portalen.
Hämta programinformation från LUIS.ai-portalen
Inställningsfilen (appsettings.json
.env
eller config.py
) fungerar som platsen för att samla alla tjänstreferenser på ett och samma ställe. Informationen du hämtar läggs till i den här filen i nästa avsnitt.
Välj din publicerade LUIS-app från luis.ai.
När den publicerade LUIS-appen är öppen väljer du fliken HANTERA .
Välj fliken Inställningar till vänster och registrera värdet som visas för program-ID som <YOUR_APP_ID>.
Välj Azure-resurser och sedan Förutsägelseresurs. Registrera värdet som visas för Plats som <YOUR_REGION> och Primärnyckel som <YOUR_AUTHORING_KEY>.
Du kan också använda regionen och primärnyckeln för redigeringsresursen.
Uppdatera inställningsfilen
Lägg till den information som krävs för att komma åt LUIS-appen, inklusive program-ID, redigeringsnyckel och region i appsettings.json
filen. I föregående steg hämtade du dessa värden från din publicerade LUIS-app. API-värdnamnet ska vara i formatet <your region>.api.cognitive.microsoft.com
.
appsetting.json
Varning
Det verkar som om exemplet du letar efter har flyttats! Var säker på att vi arbetar med att lösa detta.
Konfigurera roboten så att den använder LUIS-appen
Kontrollera att NuGet-paketet Microsoft.Bot.Builder.AI.Luis är installerat för projektet.
För att ansluta till LUIS-tjänsten hämtar roboten den information som du lade till i appsetting.json-filen. Klassen FlightBookingRecognizer
innehåller kod med dina inställningar från appsetting.json-filen och frågar LUIS-tjänsten genom att anropa RecognizeAsync
metoden.
FlightBookingRecognizer.cs
Varning
Det verkar som om exemplet du letar efter har flyttats! Var säker på att vi arbetar med att lösa detta.
FlightBookingEx.cs
Innehåller logiken för att extrahera Från, Till och TravelDate. Den utökar den partiella klass FlightBooking.cs
som används för att lagra LUIS-resultat vid anrop FlightBookingRecognizer.RecognizeAsync<FlightBooking>
från MainDialog.cs
.
CognitiveModels\FlightBookingEx.cs
Varning
Det verkar som om exemplet du letar efter har flyttats! Var säker på att vi arbetar med att lösa detta.
LUIS har nu konfigurerats och anslutits för din robot.
Testa roboten
Ladda ned och installera den senaste Bot Framework-emulatorn
Kör exemplet lokalt på datorn. Om du behöver instruktioner kan du läsa
README
filen för C#-exempel, JS-exempel eller Python-exempel.I emulatorn skriver du ett meddelande som "resa till Paris" eller "åka från Paris till Berlin". Använd valfritt yttrande som finns i filen FlightBooking.json för att träna avsikten "Boka flyg".
Om den främsta avsikten som returneras från LUIS matchar "Boka flyg" kommer roboten att ställa fler frågor tills den har tillräckligt med information lagrad för att skapa en resebokning. Då returneras den här bokningsinformationen tillbaka till din användare.
Nu återställs logiken för kodroboten och du kan fortsätta att skapa fler bokningar.
Ytterligare information
Mer information om LUIS finns i LUIS-dokumentationen:
- Vad är Language Understanding (LUIS)?
- Skapa en ny LUIS-app i LUIS-portalen
- Utforma med avsikts- och entitetsmodeller
- Migrera till API:et för redigering av V3
- Migrera till API:er för V3-förutsägelse
Tips
Olika delar av SDK definierar separata entitetsklasser eller element. Information om meddelandeentiteter finns i Entiteter och aktivitetstyper.