Använda flera LUIS- och QnA-modeller med Orchestrator
GÄLLER FÖR: SDK v4
Kommentar
Azure AI QnA Maker dras tillbaka den 31 mars 2025. Från och med den 1 oktober 2022 kan du inte skapa nya QnA Maker resurser eller kunskapsbaser för 2022. En nyare version av fråge- och svarsfunktionen är nu tillgänglig som en del av Azure AI Language.
Svar på anpassade frågor, en funktion i Azure AI Language, är den uppdaterade versionen av QnA Maker-tjänsten. Mer information om stöd för frågor och svar i Bot Framework SDK finns i Förstå naturligt språk.
Kommentar
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åktolkning i Bot Framework SDK finns i Förstå naturligt språk.
Om en robot använder flera LUIS-modeller (Language Understanding) och QnA Maker-baza znanja kan du använda Bot Framework Orchestrator för att avgöra vilken LUIS-modell eller QnA Maker-baza znanja bäst matchar användarens indata. Du kan använda bf orchestrator
CLI-kommandot för att skapa en Orchestrator-ögonblicksbildfil och sedan använda ögonblicksbildfilen för att dirigera användarindata till rätt modell vid körning.
I den här artikeln beskrivs hur du använder en befintlig QnA Maker-baza znanja med Orchestrator.
- För nya robotar bör du överväga att använda arbetsflödesfunktionerna för svar och orkestrering i Azure AI Language.
- Mer information om Orchestrator finns i Avsiktsigenkänning med Orchestrator i Composer.
- Mer information om kommandot finns i
bf orchestrator
Bot Framework CLI README.
Förutsättningar
- Ett luis.ai konto för att skapa LUIS-appar.
- Ett QnA Maker-konto och en befintlig QnA Maker-baza znanja.
- En kopia av NLP med Orchestrator-exemplet i C# (arkiverat) eller JavaScript (arkiverat).
- Kunskap om grunderna i roboten, LUIS och QnA Maker.
- Installera kommandoradens BF CLI.
Om det här exemplet
Det här exemplet baseras på en fördefinierad uppsättning LUIS- och QnA Maker-projekt. Men om du vill använda QnA Maker i roboten behöver du en befintlig baza znanja i QnA Maker-portalen. Roboten kan sedan använda baza znanja för att besvara användarens frågor.
Överväg att använda Copilot Studio för ny robotutveckling. Om du behöver skapa en ny baza znanja för en Bot Framework SDK-robot kan du läsa följande artiklar om Azure AI-tjänster:
- Vad är svar på frågor?
- Skapa en robot med vanliga frågor och svar
- Azure Cognitive Language Services–fråga Besvara klientbiblioteket för .NET
OnMessageActivityAsync
anropas för varje användarindata som tas emot. I den här modulen hittar du avsikten med den mest poänggivande användaren och skickar resultatet vidare till DispatchToTopIntentAsync
. DispatchToTopIntentAsync anropar i sin tur lämplig apphanterare.
ProcessSampleQnAAsync
– frågor och svar om roboten.ProcessWeatherAsync
- för väderfrågor.ProcessHomeAutomationAsync
- för hembelysningskommandon.
Hanteraren anropar LUIS- eller QnA Maker-tjänsten och returnerar det genererade resultatet tillbaka till användaren.
Skapa LUIS-appar
Innan du kan skapa en Orchestrator-ögonblicksbildfil behöver du LUIS-appar och QnA-baza znanja skapas och publiceras. Exempelroboten som refereras i den här artikeln använder följande modeller, som ingår i EXEMPLET NLP med Orchestrator i \CognitiveModels
mappen:
Name | beskrivning |
---|---|
HomeAutomation | En LUIS-app som identifierar en avsikt för hemautomatisering med associerade entitetsdata. |
Vädret | En LUIS-app som identifierar väderrelaterade avsikter med platsdata. |
QnAMaker | En QnA Maker-baza znanja som ger svar på enkla frågor om roboten. |
Skapa LUIS-apparna
Skapa LUIS-appar från filerna HomeAutomation och Weather .lu i katalogen cognitive models i exemplet.
Kör följande kommando för att importera, träna och publicera appen i produktionsmiljön.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Registrera program-ID:t, visningsnamnen, redigeringsnyckeln och platsen.
Mer information finns i Skapa en LUIS-app i LUIS-portalen och Hämta värden för att ansluta till LUIS-appen i Lägg till förståelse för naturligt språk i roboten och LUIS-dokumentationen om hur du tränar och publicerar en app i produktionsmiljön.
Hämta värden för att ansluta roboten till baza znanja
Kommentar
Azure AI QnA Maker dras tillbaka den 31 mars 2025. Från och med den 1 oktober 2022 kan du inte skapa nya QnA Maker resurser eller kunskapsbaser för 2022. En nyare version av fråge- och svarsfunktionen är nu tillgänglig som en del av Azure AI Language.
Svar på anpassade frågor, en funktion i Azure AI Language, är den uppdaterade versionen av QnA Maker-tjänsten. Mer information om stöd för frågor och svar i Bot Framework SDK finns i Förstå naturligt språk.
Du behöver en befintlig baza znanja och QnA Maker-värdnamnet och slutpunktsnyckeln.
Dricks
QnA Maker-dokumentationen innehåller instruktioner om hur du skapar, tränar och publicerar dina baza znanja.
Skapa Orchestrator-ögonblicksbildfilen
CLI-gränssnittet för Orchestrator-verktyget skapar Orchestrator-ögonblicksbildfilen för routning till rätt LUIS- eller QnA Maker-app vid körning.
Installera den senaste versionen av Visual C++ Redistributable-paketet som stöds
Öppna en kommandotolk eller ett terminalfönster och ändra kataloger till exempelkatalogen
Kontrollera att du har den aktuella versionen av npm och Bot Framework CLI.
npm i -g npm npm i -g @microsoft/botframework-cli
Ladda ned Orchestrator-basmodellfilen
mkdir model bf orchestrator:basemodel:get --out ./model
Skapa Orchestrator-ögonblicksbildfilen
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Installera paket
Innan du kör den här appen för första gången kontrollerar du att flera NuGet-paket är installerade:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Uppdatera appsettings.json-filen manuellt
När alla dina tjänstappar har skapats måste informationen för var och en läggas till i filen "appsettings.json". Det första exemplet för C# -kod (arkiverad) innehåller en tom appsettings.json fil:
appsettings.json
För var och en av de entiteter som visas nedan lägger du till de värden som du registrerade tidigare i dessa instruktioner:
"QnAKnowledgebaseId": "<knowledge-base-id>",
"QnAEndpointKey": "<qna-maker-resource-key>",
"QnAEndpointHostName": "<your-hostname>",
"LuisHomeAutomationAppId": "<app-id-for-home-automation-app>",
"LuisWeatherAppId": "<app-id-for-weather-app>",
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",
Spara filen när alla ändringar är klara.
Ansluta till tjänsterna från din robot
För att ansluta till TJÄNSTERNA LUIS och QnA Maker hämtar roboten information från inställningsfilen.
I BotServices.cs används informationen i konfigurationsfilen appsettings.json för att ansluta Orchestrator-roboten HomeAutomation
till tjänsterna och Weather
SampleQnA
. Konstruktorerna använder de värden som du angav för att ansluta till dessa tjänster.
BotServices.cs
Anropa tjänsterna från din robot
För varje indata från användaren skickar robotlogik i användarindata till Orchestrator Recognizer, hittar den främsta returnerade avsikten och använder den informationen för att anropa lämplig tjänst för indata.
I filen DispatchBot.cs när OnMessageActivityAsync
metoden anropas kontrollerar vi det inkommande användarmeddelandet och får den främsta avsikten från Orchestrator Recognizer. Sedan skickar topIntent
vi och recognizerResult
vidare till rätt metod för att anropa tjänsten och returnera resultatet.
bots\DispatchBot.cs
Arbeta med igenkänningsresultaten
När Orchestrator-identifieraren ger ett resultat anger det vilken tjänst som bäst kan bearbeta yttrandet. Koden i den här roboten dirigerar begäran till motsvarande tjänst och sammanfattar sedan svaret från den anropade tjänsten. Beroende på avsikten som returneras från Orchestrator använder den här koden den returnerade avsikten för att dirigera till rätt LUIS-modell eller QnA-tjänst.
bots\DispatchBot.cs
Metoderna ProcessHomeAutomationAsync
och ProcessWeatherAsync
använder användarindata i turkontexten för att hämta den främsta avsikten och entiteterna från rätt LUIS-modell.
Metoden ProcessSampleQnAAsync
använder användarindata i turkontexten för att generera ett svar från baza znanja och visa resultatet för användaren.
Kommentar
Om det här var ett produktionsprogram skulle de valda LUIS-metoderna ansluta till den angivna tjänsten, skicka in användarindata och bearbeta den returnerade LUIS-avsikten och entitetsdata.
Testa din robot
Starta exempelkoden med hjälp av utvecklingsmiljön. Observera den localhost-adress som visas i adressfältet i webbläsarfönstret som öppnas av appen:
https://localhost:<Port_Number>
.Öppna Bot Framework-emulatorn, klicka på knappen Öppna robot .
I dialogrutan Öppna en robot anger du din robotslutpunkts-URL, till exempel
http://localhost:3978/api/messages
. Klicka på Anslut.Som referens finns här några av de frågor och kommandon som omfattas av de tjänster som skapats för din robot:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (hemautomatisering)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (väder)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Dirigera användaryttrande till QnA Maker
I emulatorn anger du texten
hi
och skickar yttrandet. Roboten skickar den här frågan till Orchestrator och får tillbaka ett svar som anger vilken underordnad app som ska få det här yttrandet för vidare bearbetning.Genom att
Orchestrator Recognition Trace
välja raden i loggen kan du se JSON-svaret i emulatorn. Orchestrator-resultatet visas i Inspector.{ "type": "trace", "timestamp": "2021-05-01T06:26:04.067Z", "serviceUrl": "http://localhost:58895", "channelId": "emulator", "from": { "id": "36b2a460-aa43-11eb-920f-7da472b36492", "name": "Bot", "role": "bot" }, "conversation": { "id": "17ef3f40-aa46-11eb-920f-7da472b36492|livechat" }, "recipient": { "id": "5f8c6123-2596-45df-928c-566d44426556", "role": "user" }, "locale": "en-US", "replyToId": "1a3f70d0-aa46-11eb-8b97-2b2a779de581", "label": "Orchestrator Recognition", "valueType": "OrchestratorRecognizer", "value": { "text": "hi", "alteredText": null, "intents": { "QnAMaker": { "score": 0.9987310956576168 }, "HomeAutomation": { "score": 0.3402091165577196 }, "Weather": { "score": 0.24092200496795158 } }, "entities": {}, "result": [ { "Label": { "Type": 1, "Name": "QnAMaker", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.9987310956576168, "ClosestText": "hi" }, { "Label": { "Type": 1, "Name": "HomeAutomation", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.3402091165577196, "ClosestText": "make some coffee" }, { "Label": { "Type": 1, "Name": "Weather", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.24092200496795158, "ClosestText": "soliciting today's weather" } ] }, "name": "OrchestratorRecognizerResult", "id": "1ae65f30-aa46-11eb-8b97-2b2a779de581", "localTimestamp": "2021-04-30T23:26:04-07:00" }
Eftersom yttrandet ,
hi
är en del av Orchestrators QnAMaker-avsikt och väljs somtopScoringIntent
, kommer roboten att göra en andra begäran, den här gången till QnA Maker-appen, med samma yttrande.Välj raden
QnAMaker Trace
i emulatorloggen. QnA Maker-resultatet visas i Inspector.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (arkiverad)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator