Utiliser plusieurs modèles LUIS et QnA avec Orchestrator
S'APPLIQUE À : SDK v4
Remarque
Azure AI QnA Maker sera mis hors service le 31 mars 2025. À partir du 1er octobre 2022, vous ne pourrez plus créer de nouvelles ressources ou bases de connaissances QnA Maker. Une version plus récente de la fonctionnalité de questions et réponses est désormais disponible dans le cadre d’Azure AI Language.
La réponse aux questions personnalisées, une fonctionnalité d'Azure AI Language, est la version mise à jour du service QnA Maker. Pour plus d’informations sur la prise en charge des questions et réponses dans le kit de développement logiciel (SDK) Bot Framework, reportez-vous à Compréhension du langage naturel.
Remarque
Compréhension du langage (LUIS) sera mis hors service le 1er octobre 2025. À compter du 1er avril 2023, vous ne pourrez pas créer de nouvelles ressources LUIS. Une version plus récente de Compréhension du langage est désormais disponible dans le cadre d'Azure AI Language.
Compréhension du langage courant (CLU), une fonctionnalité d’Azure AI Language, est la version mise à jour de LUIS. Pour en savoir plus sur la prise en charge de la compréhension du langage dans le Kit de développement logiciel (SDK) Bot Framework, reportez-vous à Compréhension du langage naturel.
Si un bot utilise plusieurs modèles LUIS (Language Understanding) et QnA Maker base de connaissances s, vous pouvez utiliser Bot Framework Orchestrator pour déterminer quel modèle LUIS ou QnA Maker base de connaissances le mieux correspond à l’entrée utilisateur. Vous pouvez utiliser la bf orchestrator
commande CLI pour créer un fichier d’instantané Orchestrator, puis utiliser le fichier d’instantané pour router l’entrée utilisateur vers le modèle approprié au moment de l’exécution.
Cet article explique comment utiliser un base de connaissances QnA Maker existant avec Orchestrator.
- Pour les nouveaux bots, envisagez d’utiliser les fonctionnalités de workflow de réponse aux questions et d’orchestration d’Azure AI Language.
- Pour plus d’informations sur Orchestrator, consultez La reconnaissance des intentions avec Orchestrator dans Composer.
- Pour plus d’informations sur la
bf orchestrator
commande, consultez bot Framework CLI README.
Prérequis
- Un compte luis.ai pour créer des applications LUIS.
- Un compte QnA Maker et une base de connaissances QnA Maker existante.
- Copie du NLP avec l’exemple Orchestrator en C# (archivé) ou JavaScript (archivé).
- Connaissances des concepts de base des bots, de LUIS et de QnA Maker.
- Installez l’interface CLI BF de ligne de commande.
À propos de cet exemple
Cet exemple est basé sur un ensemble prédéfini de projets LUIS et QnA Maker. Toutefois, pour utiliser QnA Maker dans votre bot, vous avez besoin d’un base de connaissances existant dans le portail QnA Maker. Votre bot peut alors utiliser la base de connaissances pour répondre aux questions de l’utilisateur.
Pour le nouveau développement de bots, envisagez d’utiliser Copilot Studio. Si vous devez créer une nouvelle base de connaissances pour bot du kit de développement logiciel (SDK) Bot Framework, consultez les articles suivants sur les Azure AI Services :
- Qu’est-ce que la réponse aux questions ?
- Créer un Bot de FAQ
- Bibliothèque de client des réponses aux questions Azure Cognitive Language Services pour .NET
OnMessageActivityAsync
est appelé pour chaque entrée d’utilisateur reçue. Ce module recherche l’intention utilisateur du scoring le plus élevé et passe ce résultat à DispatchToTopIntentAsync
. DispatchToTopIntentAsync appelle à son tour le gestionnaire d’application approprié.
ProcessSampleQnAAsync
- pour les questions fréquentes (FAQ) sur les bots.ProcessWeatherAsync
: pour les requêtes météo.ProcessHomeAutomationAsync
: pour les commandes d’éclairage domestique.
Le gestionnaire appelle le service LUIS ou QnA Maker, puis retourne le résultat généré à l’utilisateur.
Créer des applications LUIS
Avant de pouvoir créer un fichier d’instantané Orchestrator, vous avez besoin d’applications LUIS et des base de connaissances QnA créés et publiés. L’exemple de bot référencé dans cet article utilise les modèles suivants, inclus dans l’exemple NLP With Orchestrator dans le \CognitiveModels
dossier :
Nom | Description |
---|---|
HomeAutomation | Application LUIS qui reconnaît une intention domotique avec les données d’entité associées. |
Météo | Application LUIS qui reconnaît les intentions liées à la météo avec des données de localisation. |
QnAMaker | Base de connaissances QnA Maker qui fournit des réponses à certaines questions simples concernant le bot. |
Créer les applications LUIS
Créez des applications LUIS à partir des fichiers HomeAutomation et Weather .lu dans le répertoire des modèles cognitifs de l’exemple.
Exécutez la commande suivante pour importer, entraîner et publier l’application dans l’environnement de production.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Enregistrez les ID d’application, les noms d’affichage, la clé de création et l’emplacement.
Pour plus d’informations, consultez comment créer une application LUIS dans le portail LUIS et obtenir des valeurs pour vous connecter à votre application LUIS dans Ajouter une compréhension du langage naturel à votre bot et à la documentation LUIS sur l’apprentissage et la publication d’une application dans l’environnement de production.
Obtenir des valeurs pour connecter votre bot à la base de connaissances
Remarque
Azure AI QnA Maker sera mis hors service le 31 mars 2025. À partir du 1er octobre 2022, vous ne pourrez plus créer de nouvelles ressources ou bases de connaissances QnA Maker. Une version plus récente de la fonctionnalité de questions et réponses est désormais disponible dans le cadre d’Azure AI Language.
La réponse aux questions personnalisées, une fonctionnalité d'Azure AI Language, est la version mise à jour du service QnA Maker. Pour plus d’informations sur la prise en charge des questions et réponses dans le kit de développement logiciel (SDK) Bot Framework, reportez-vous à Compréhension du langage naturel.
Vous avez besoin d’un base de connaissances existant et de votre nom d’hôte QnA Maker et de votre clé de point de terminaison.
Conseil
La documentation de QnA Maker contient des instructions sur la façon de créer, d'entraîner et de publier votre base de connaissances.
Créer le fichier d’instantané Orchestrator
L’interface CLI de l’outil Orchestrator crée le fichier d’instantané Orchestrator pour le routage vers l’application LUIS ou QnA Maker correcte au moment de l’exécution.
Installer la dernière version prise en charge du package Redistribuable Visual C++
Ouvrez une invite de commandes ou une fenêtre de terminal, puis remplacez les répertoires par l’exemple de répertoire
Vérifiez que vous disposez de la version actuelle de npm et de l’interface CLI Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Télécharger le fichier de modèle de base Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Créer le fichier d’instantané Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Installation des packages
Avant d’exécuter cette application pour la première fois, vérifiez que plusieurs packages NuGet sont installés :
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Mettre à jour manuellement votre fichier appsettings.json
Une fois que toutes vos applications de service sont créées, les informations de chacune d’elles doivent être ajoutées dans votre fichier « appsettings.json ». L’exemple initial pour le code C# (archivé) contient un fichier appsettings.json vide :
appsettings.json
Pour chacune des entités indiquées ci-dessous, ajoutez les valeurs que vous avez enregistrées précédemment dans ces instructions :
"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>",
Quand tous les changements sont en place, enregistrez ce fichier.
Vous connecter aux services à partir de votre bot
Pour vous connecter aux services LUIS et QnA Maker, votre bot extrait les informations du fichier de paramètres.
Dans BotServices.cs, les informations contenues dans le fichier de configuration appsettings.json sont utilisées pour connecter votre bot Orchestrator aux services et SampleQnA
aux HomeAutomation
Weather
services. Les constructeurs utilisent les valeurs que vous avez fournies pour se connecter à ces services.
BotServices.cs
Appeler les services à partir de votre bot
Pour chaque entrée de votre utilisateur, la logique du bot passe l’entrée utilisateur à Orchestrator Recognizer, recherche l’intention la plus retournée et utilise ces informations pour appeler le service approprié pour l’entrée.
Dans le fichier DispatchBot.cs chaque fois que la OnMessageActivityAsync
méthode est appelée, nous vérifions le message utilisateur entrant et obtenons l’intention principale d’Orchestrator Recognizer. Nous transmettons ensuite la topIntent
méthode correcte recognizerResult
pour appeler le service et retourner le résultat.
bots\DispatchBot.cs
Utiliser les résultats de reconnaissance
Lorsque le module de reconnaissance Orchestrator génère un résultat, il indique quel service peut traiter le plus correctement l’énoncé. Le code de ce bot achemine la demande vers le service correspondant, puis il résume la réponse du service appelé. Selon l’intention retournée par Orchestrator, ce code utilise l’intention retournée pour acheminer vers le modèle LUIS ou le service QnA approprié.
bots\DispatchBot.cs
Les ProcessHomeAutomationAsync
méthodes et ProcessWeatherAsync
les méthodes utilisent l’entrée utilisateur contenue dans le contexte de tour pour obtenir l’intention et les entités principales du modèle LUIS approprié.
La ProcessSampleQnAAsync
méthode utilise l’entrée utilisateur contenue dans le contexte de tour pour générer une réponse à partir du base de connaissances et afficher ce résultat à l’utilisateur.
Remarque
S’il s’agissait d’une application de production, c’est là que les méthodes LUIS sélectionnées se connecteraient à leur service spécifié, passeraient l’entrée utilisateur et traiteraient les données d’intention et d’entité LUIS retournées.
Tester votre bot
À l’aide de votre environnement de développement, démarrez l’exemple de code. Notez l’adresse localhost affichée dans la barre d’adresse de la fenêtre du navigateur ouverte par votre application :
https://localhost:<Port_Number>
.Ouvrez Bot Framework Emulator, cliquez sur le bouton Ouvrir le bot .
Dans la boîte de dialogue Ouvrir un bot , entrez l’URL de votre point de terminaison de bot, par
http://localhost:3978/api/messages
exemple . Cliquez sur Connecter.À titre de référence, voici quelques-unes des questions et commandes couvertes par les services générés pour votre bot :
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (home automation)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (météo)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Acheminer l’énoncé utilisateur vers QnA Maker
Dans l’émulateur, entrez le texte
hi
et envoyez l’énoncé. Le bot envoie cette requête à Orchestrator et retourne une réponse indiquant quelle application enfant doit obtenir cet énoncé pour un traitement ultérieur.En sélectionnant la
Orchestrator Recognition Trace
ligne dans le journal, vous pouvez voir la réponse JSON dans l’émulateur. Le résultat de l’orchestrateur s’affiche dans l’inspecteur.{ "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" }
Étant donné que l’énoncé, fait
hi
partie de l’intention QnAMaker d’Orchestrator et est sélectionné en tant quetopScoringIntent
, le bot effectue une deuxième requête, cette fois à l’application QnA Maker, avec le même énoncé.Sélectionnez la
QnAMaker Trace
ligne dans le journal de l’émulateur. Le résultat QnA Maker s’affiche dans l’inspecteur.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (archivé)] : (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator