Meerdere LUIS- en QnA-modellen gebruiken met Orchestrator
VAN TOEPASSING OP: SDK v4
Notitie
Azure AI QnA Maker wordt op 31 maart 2025 buiten gebruik gesteld. Vanaf 1 oktober 2022 kunt u geen nieuwe resources of kennisbanken voor QnA Maker maken. Een nieuwere versie van de vraag- en antwoordmogelijkheid is nu beschikbaar als onderdeel van Azure AI Language.
Aangepaste vraagantwoorden, een functie van Azure AI Language, is de bijgewerkte versie van de QnA Maker-service. Zie Natuurlijke taalbegrip voor meer informatie over vraag- en antwoordondersteuning in de Bot Framework SDK.
Notitie
Language Understanding (LUIS) wordt op 1 oktober 2025 buiten gebruik gesteld. Vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources maken. Er is nu een nieuwere versie van taalkennis beschikbaar als onderdeel van Azure AI Language.
Conversational Language Understanding (CLU), een functie van Azure AI Language, is de bijgewerkte versie van LUIS. Zie Natuurlijke taalkennis voor meer informatie over ondersteuning voor taalkennis in de Bot Framework SDK.
Als een bot gebruikmaakt van meerdere LUIS-modellen (Language Understanding) en QnA Maker-knowledge bases, kunt u Bot Framework Orchestrator gebruiken om te bepalen welk LUIS-model of QnA Maker-knowledge base het beste overeenkomt met de gebruikersinvoer. U kunt de bf orchestrator
CLI-opdracht gebruiken om een Orchestrator-momentopnamebestand te maken en vervolgens het momentopnamebestand te gebruiken om gebruikersinvoer tijdens runtime naar het juiste model te routeren.
In dit artikel wordt beschreven hoe u een bestaande QnA Maker-knowledge base gebruikt met Orchestrator.
- Voor nieuwe bots kunt u de werkstroomfuncties voor het beantwoorden en organiseren van vragen van Azure AI Language gebruiken.
- Zie Intentieherkenning met Orchestrator in Composer voor meer informatie over Orchestrator.
- Zie de BOT Framework CLI README voor meer informatie over de
bf orchestrator
opdracht.
Vereisten
- Een luis.ai-account voor het ontwerpen van LUIS-apps.
- Een QnA Maker-account en een bestaande QnA Maker-knowledge base.
- Een kopie van de NLP met Orchestrator-voorbeeld in C# (gearchiveerd) of JavaScript (gearchiveerd).
- Kennis van de basisbeginselen van de bot, LUIS en QnA Maker.
- Installeer de opdrachtregel-BF CLI.
Over dit voorbeeld
Dit voorbeeld is gebaseerd op een vooraf gedefinieerde set LUIS- en QnA Maker-projecten. Als u echter QnA Maker in uw bot wilt gebruiken, hebt u een bestaande knowledge base nodig in de QnA Maker-portal . Uw bot kan vervolgens de Knowledge Base gebruiken om de vragen van de gebruiker te beantwoorden.
Voor het ontwikkelen van nieuwe bots kunt u Copilot Studio gebruiken. Als u een nieuwe knowledge base voor een Bot Framework SDK-bot moet maken, raadpleegt u de volgende artikelen over Azure AI-services:
- Wat is vragen beantwoorden?
- Een bot met veelgestelde vragen maken
- Azure Cognitive Language Services-clientbibliotheek voor antwoord op clientbibliotheek voor .NET
OnMessageActivityAsync
wordt aangeroepen voor elke ontvangen gebruikersinvoer. Deze module vindt de meest scorende gebruikersintentie en geeft dat resultaat door aan DispatchToTopIntentAsync
. DispatchToTopIntentAsync roept op zijn beurt de juiste app-handler aan.
ProcessSampleQnAAsync
- voor veelgestelde vragen over bot.ProcessWeatherAsync
- voor weerquery's.ProcessHomeAutomationAsync
- voor opdrachten voor thuisverlichting.
De handler roept de LUIS- of QnA Maker-service aan en retourneert het gegenereerde resultaat terug naar de gebruiker.
LUIS-apps maken
Voordat u een Orchestrator-momentopnamebestand kunt maken, hebt u LUIS-apps en QnA-knowledge bases nodig die zijn gemaakt en gepubliceerd. De voorbeeldbot waarnaar in dit artikel wordt verwezen, maakt gebruik van de volgende modellen, opgenomen in het NLP With Orchestrator-voorbeeld in de \CognitiveModels
map:
Name | Beschrijving |
---|---|
HomeAutomation | Een LUIS-app die een intentie voor huisautomatisering herkent met gekoppelde entiteitsgegevens. |
Weer | Een LUIS-app die weergerelateerde intenties met locatiegegevens herkent. |
QnAMaker | Een QnA Maker-knowledge base die antwoorden biedt op eenvoudige vragen over de bot. |
De LUIS-apps maken
Maak LUIS-apps op basis van de HomeAutomation - en Weather .lu-bestanden in de map met cognitieve modellen van het voorbeeld.
Voer de volgende opdracht uit om de app te importeren, trainen en publiceren naar de productieomgeving.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Noteer de toepassings-id's, weergavenamen, ontwerpsleutel en locatie.
Zie voor meer informatie hoe u een LUIS-app maakt in de LUIS-portal en waarden verkrijgt om verbinding te maken met uw LUIS-app in Natuurlijke taal voor uw bot en de LUIS-documentatie over het trainen en publiceren van een app in de productieomgeving.
Waarden verkrijgen om uw bot te verbinden met de Knowledge Base
Notitie
Azure AI QnA Maker wordt op 31 maart 2025 buiten gebruik gesteld. Vanaf 1 oktober 2022 kunt u geen nieuwe resources of kennisbanken voor QnA Maker maken. Een nieuwere versie van de vraag- en antwoordmogelijkheid is nu beschikbaar als onderdeel van Azure AI Language.
Aangepaste vraagantwoorden, een functie van Azure AI Language, is de bijgewerkte versie van de QnA Maker-service. Zie Natuurlijke taalbegrip voor meer informatie over vraag- en antwoordondersteuning in de Bot Framework SDK.
U hebt een bestaande knowledge base en uw QnA Maker-hostnaam en eindpuntsleutel nodig.
Tip
De QnA Maker-documentatie bevat instructies voor het maken, trainen en publiceren van uw Knowledge Base.
Het Orchestrator-momentopnamebestand maken
De CLI-interface voor het Orchestrator-hulpprogramma maakt het Orchestrator-momentopnamebestand voor routering naar de juiste LUIS- of QnA Maker-app tijdens runtime.
Installeer de meest recente ondersteunde versie van het Visual C++ Redistributable-pakket
Open een opdrachtprompt of terminalvenster en wijzig mappen in de voorbeeldmap
Zorg ervoor dat u de huidige versie van npm en de Bot Framework CLI hebt.
npm i -g npm npm i -g @microsoft/botframework-cli
Orchestrator-basismodelbestand downloaden
mkdir model bf orchestrator:basemodel:get --out ./model
Het Orchestrator-momentopnamebestand maken
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Pakketten installeren
Voordat u deze app voor de eerste keer uitvoert, moet u ervoor zorgen dat er verschillende NuGet-pakketten zijn geïnstalleerd:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Uw appsettings.json-bestand handmatig bijwerken
Zodra al uw service-apps zijn gemaakt, moet de informatie voor elke app worden toegevoegd aan het bestand 'appsettings.json'. Het eerste voorbeeld voor C# -code (gearchiveerd) bevat een leeg appsettings.json bestand:
appsettings.json
Voeg voor elk van de hieronder weergegeven entiteiten de waarden toe die u eerder in deze instructies hebt genoteerd:
"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>",
Wanneer alle wijzigingen zijn voltooid, slaat u dit bestand op.
Verbinding maken met de services vanuit uw bot
Als u verbinding wilt maken met de LUIS- en QnA Maker-services, haalt uw bot informatie op uit het instellingenbestand.
In BotServices.cs wordt de informatie in het configuratiebestand appsettings.json gebruikt om uw Orchestrator-bot te verbinden met de HomeAutomation
en Weather
SampleQnA
services. De constructors gebruiken de waarden die u hebt opgegeven om verbinding te maken met deze services.
BotServices.cs
De services van uw bot aanroepen
Voor elke invoer van uw gebruiker geeft de botlogica gebruikersinvoer door aan Orchestrator Recognizer, zoekt de meest geretourneerde intentie en gebruikt deze informatie om de juiste service voor de invoer aan te roepen.
In het bestand DispatchBot.cs wanneer de OnMessageActivityAsync
methode wordt aangeroepen, controleren we het binnenkomende gebruikersbericht en krijgen we de belangrijkste intentie van Orchestrator Recognizer. Vervolgens geven we de topIntent
en recognizerResult
de juiste methode door om de service aan te roepen en het resultaat te retourneren.
bots\DispatchBot.cs
Werken met de herkenningsresultaten
Wanneer de Orchestrator recognizer een resultaat produceert, wordt aangegeven welke service de utterance het meest op de juiste manier kan verwerken. De code in deze bot stuurt de aanvraag door naar de bijbehorende service en geeft vervolgens een overzicht van het antwoord van de aangeroepen service. Afhankelijk van de intentie die door Orchestrator wordt geretourneerd, gebruikt deze code de geretourneerde intentie om naar het juiste LUIS-model of de QnA-service te routeren.
bots\DispatchBot.cs
De ProcessHomeAutomationAsync
en ProcessWeatherAsync
methoden gebruiken de gebruikersinvoer in de turncontext om de belangrijkste intentie en entiteiten op te halen uit het juiste LUIS-model.
De ProcessSampleQnAAsync
methode gebruikt de gebruikersinvoer in de turncontext om een antwoord te genereren uit de Knowledge Base en dat resultaat weer te geven aan de gebruiker.
Notitie
Als dit een productietoepassing is, is dit de plek waar de geselecteerde LUIS-methoden verbinding maken met hun opgegeven service, de gebruikersinvoer doorgeven en de geretourneerde LUIS-intentie- en entiteitsgegevens verwerken.
Uw bot testen
Start de voorbeeldcode met behulp van uw ontwikkelomgeving. Let op het localhost-adres dat wordt weergegeven in de adresbalk van het browservenster dat door uw app wordt geopend:
https://localhost:<Port_Number>
.Open Bot Framework Emulator en klik op de knop Bot openen.
Voer in het dialoogvenster Een bot openen de URL van uw boteindpunt in, zoals
http://localhost:3978/api/messages
. Klik op Verbinding maken.Ter referentie: hier volgen enkele vragen en opdrachten die worden behandeld door de services die voor uw bot zijn gebouwd:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (huisautomatisering)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (weer)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Gebruikersuitingen routeren naar QnA Maker
Voer in de emulator de tekst
hi
in en verzend de utterance. De bot verzendt deze query naar Orchestrator en ontvangt een antwoord dat aangeeft welke onderliggende app deze uiting moet krijgen voor verdere verwerking.Door de
Orchestrator Recognition Trace
regel in het logboek te selecteren, ziet u het JSON-antwoord in de emulator. Het Orchestrator-resultaat wordt weergegeven in de 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" }
Omdat de uiting,
hi
maakt deze keer deel uit van de QnAMaker-intentie van Orchestrator en wordt deze keer een tweede aanvraag door de bot verzondentopScoringIntent
naar de QnA Maker-app, met dezelfde uiting.Selecteer de
QnAMaker Trace
regel in het emulatorlogboek. Het QnA Maker-resultaat wordt weergegeven in de Inspector.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (gearchiveerd)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator