Verwenden mehrerer LUIS- und QnA-Modelle mit Orchestrator
GILT FÜR: SDK v4
Hinweis
Azure KI QnA Maker wird am 31. März 2025 eingestellt. Ab dem 01. Oktober 2022 können Sie keine neuen QnA Maker-Ressourcen oder Wissensdatenbanken mehr erstellen. Eine neuere Version der Funktionalität „Fragen und Antworten“ ist jetzt als Teil von Azure KI Language verfügbar.
Benutzerdefiniertes Fragen und Antworten, eine Azure KI Language-Funktion, ist die aktualisierte Version des QnA Maker-Diensts. Weitere Informationen zur Unterstützung von Fragen und Antworten im Bot Framework SDK finden Sie unter Natürliches Sprachverständnis.
Hinweis
Language Understanding (LUIS) wird am 1. Oktober 2025 eingestellt. Ab dem 1. April 2023 können Sie keine neuen LUIS-Ressourcen erstellen. Eine neuere Version von Language Understanding ist jetzt als Teil von Azure KI Language verfügbar.
Conversational Language Understanding (CLU), ein Feature von Azure KI Language, ist die aktualisierte Version von LUIS. Weitere Informationen zu Language Understanding im Bot Framework-SDK finden Sie unter Natürliches Sprachverständnis.
Wenn ein Bot mehrere Luis-Modelle (Language Understanding) und QnA Maker Wissensdatenbank s verwendet, können Sie Bot Framework Orchestrator verwenden, um zu ermitteln, welches LUIS-Modell oder QnA Maker Wissensdatenbank den Benutzereingaben am besten entspricht. Sie können den bf orchestrator
CLI-Befehl verwenden, um eine Orchestrator-Momentaufnahmedatei zu erstellen. Verwenden Sie dann die Momentaufnahmedatei, um benutzereingaben zur Laufzeit an das richtige Modell weiterzuleiten.
In diesem Artikel wird beschrieben, wie Sie einen vorhandenen QnA Maker-Wissensdatenbank mit Orchestrator verwenden.
- Berücksichtigen Sie für neue Bots die Verwendung der Workflowfeatures für die Frageantwort und die Orchestrierung von Azure AI Language.
- Weitere Informationen zu Orchestrator finden Sie unter "Intent Recognition with Orchestrator in Composer".
- Weitere Informationen zum
bf orchestrator
Befehl finden Sie unter Bot Framework CLI README.
Voraussetzungen
- Ein luis.ai Konto zum Erstellen von LUIS-Apps.
- Ein QnA Maker-Konto und ein vorhandener QnA Maker-Knowledge Base.
- Eine Kopie des NLP mit Orchestrator-Beispiel in C# (archiviert) oder JavaScript (archiviert).
- Kenntnisse über Botgrundlagen, LUIS und QnA Maker
- Installieren Sie die Befehlszeile BF CLI.
Informationen zu diesem Beispiel
Dieses Beispiel basiert auf einem vordefinierten Satz von LUIS- und QnA Maker-Projekten. Um QnA Maker jedoch in Ihrem Bot zu verwenden, benötigen Sie im QnA Maker-Portal eine vorhandene Wissensdatenbank. Ihr Bot kann dann die Wissensdatenbank verwenden, um die Fragen des Benutzers zu beantworten.
Für die entwicklung neuer Bots sollten Sie Copilot Studio verwenden. Wenn Sie einen neuen Knowledge Base für einen Bot-Framework-SDK-Bot erstellen müssen, lesen Sie die folgenden Artikel zu Azure KI Services:
- Was ist „Fragen und Antworten“?
- Erstellen eines Bots für häufig gestellte Fragen
- Azure Cognitive Language Services Question Answering-Clientbibliothek für .NET
OnMessageActivityAsync
wird für jede empfangene Benutzereingabe aufgerufen. Dieses Modul ermittelt die Benutzerabsicht mit der höchsten Bewertung und übergibt das Ergebnis an DispatchToTopIntentAsync
. DispatchToTopIntentAsync ruft wiederum den entsprechenden App-Handler auf.
ProcessSampleQnAAsync
– für Häufig gestellte Fragen zu Bots.ProcessWeatherAsync
für WetterabfragenProcessHomeAutomationAsync
für Befehle zur Gebäudeautomatisierung (Beleuchtung)
Der Handler ruft den LUIS- oder QnA Maker-Dienst auf und gibt das generierte Ergebnis an den Benutzer zurück.
Erstellen von LUIS-Apps
Bevor Sie eine Orchestrator-Momentaufnahmedatei erstellen können, benötigen Sie LUIS-Apps und QnA-Wissensdatenbank erstellt und veröffentlicht. Der Beispiel-Bot, auf den in diesem Artikel verwiesen wird, verwendet die folgenden Modelle, die im NlP With Orchestrator-Beispiel im \CognitiveModels
Ordner enthalten sind:
Name | Beschreibung |
---|---|
HomeAutomation | Eine LUIS-App, die eine Absicht zur Gebäudeautomatisierung mit den zugeordneten Entitätsdaten erkennt. |
Weather | Eine LUIS-App, die Absichten im Zusammenhang mit dem Wetter mithilfe von Standortdaten erkennt. |
QnAMaker | Eine QnA Maker-Wissensdatenbank, die Antworten auf einfache Fragen zum Bot liefert. |
Erstellen der LUIS-Apps
Erstellen Sie LUIS-Apps aus den Dateien HomeAutomation und Weather .lu im Verzeichnis der kognitiven Modelle des Beispiels.
Führen Sie den folgenden Befehl aus, um die App in der Produktionsumgebung zu importieren, zu trainieren und zu veröffentlichen.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Notieren Sie die Anwendungs-IDs, Anzeigenamen, Erstellungsschlüssel und Speicherort.
Weitere Informationen finden Sie unter Erstellen einer LUIS-App im LUIS-Portal und Abrufen von Werten zum Herstellen einer Verbindung mit Ihrer LUIS-App unter Hinzufügen von Kenntnissen in natürlicher Sprache zu Ihrem Bot und in der LUIS-Dokumentation zum Trainieren und Veröffentlichen einer App in der Produktionsumgebung.
Ermitteln der Werte zum Verbinden Ihres Bots mit der Wissensdatenbank
Hinweis
Azure KI QnA Maker wird am 31. März 2025 eingestellt. Ab dem 01. Oktober 2022 können Sie keine neuen QnA Maker-Ressourcen oder Wissensdatenbanken mehr erstellen. Eine neuere Version der Funktionalität „Fragen und Antworten“ ist jetzt als Teil von Azure KI Language verfügbar.
Benutzerdefiniertes Fragen und Antworten, eine Azure KI Language-Funktion, ist die aktualisierte Version des QnA Maker-Diensts. Weitere Informationen zur Unterstützung von Fragen und Antworten im Bot Framework SDK finden Sie unter Natürliches Sprachverständnis.
Sie benötigen eine vorhandene Wissensdatenbank und Ihren QnA Maker-Hostnamen und Endpunktschlüssel.
Tipp
Die QnA Maker-Dokumentation enthält Anweisungen zum Erstellen, Trainieren und Veröffentlichen Ihrer Wissensdatenbank.
Erstellen der Orchestrator-Momentaufnahmedatei
Die CLI-Schnittstelle für das Orchestrator-Tool erstellt die Orchestrator-Momentaufnahmedatei zum Routing an die richtige LUIS- oder QnA Maker-App zur Laufzeit.
Installieren der neuesten unterstützten Version des Visual C++-Redistributable-Pakets
Öffnen einer Eingabeaufforderung oder eines Terminalfensters und Ändern von Verzeichnissen in das Beispielverzeichnis
Stellen Sie sicher, dass Sie über die aktuelle Version von npm und die Bot Framework CLI verfügen.
npm i -g npm npm i -g @microsoft/botframework-cli
Herunterladen der Orchestrator-Basismodelldatei
mkdir model bf orchestrator:basemodel:get --out ./model
Erstellen der Orchestrator-Momentaufnahmedatei
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Installieren von Paketen
Stellen Sie vor der erstmaligen Ausführung dieser App sicher, dass die folgenden NuGet-Pakete installiert sind:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Manuelles Aktualisieren der Datei „appsettings.json“
Nachdem alle Dienst-Apps erstellt wurden, müssen der Datei „appsettings.json“ die Informationen für jede dieser Apps hinzugefügt werden. Das anfängliche Beispiel für C# -Code (archiviert) enthält eine leere appsettings.json Datei:
appsettings.json
Fügen Sie für jede der unten aufgeführten Entitäten die Werte hinzu, die Sie in den obigen Schritten notiert haben:
"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>",
Speichern Sie diese Datei, nachdem alle Änderungen erfolgt sind.
Herstellen einer Verbindung mit den Diensten über Ihren Bot
Um eine Verbindung mit den LUIS- und QnA Maker-Diensten herzustellen, ruft Ihr Bot Informationen aus der Einstellungsdatei ab.
In BotServices.cs werden die in der Konfigurationsdatei enthaltenen Informationen appsettings.json verwendet, um Ihren Orchestrator-Bot mit den HomeAutomation
Diensten Weather
zu SampleQnA
verbinden. Die Konstruktoren verwenden die von Ihnen angegebenen Werte, um eine Verbindung mit diesen Diensten herzustellen.
BotServices.cs
Aufrufen der Dienste über Ihren Bot
Für jede Eingabe des Benutzers übergibt die Botlogik die Benutzereingabe an die Orchestrator-Erkennung, findet die oberste zurückgegebene Absicht und verwendet diese Informationen, um den entsprechenden Dienst für die Eingabe aufzurufen.
In der DispatchBot.cs Datei, wenn die OnMessageActivityAsync
Methode aufgerufen wird, überprüfen wir die eingehende Benutzernachricht und rufen die oberste Absicht von Orchestrator-Erkennung ab. Anschließend übergeben wir die topIntent
und recognizerResult
an die richtige Methode, um den Dienst aufzurufen und das Ergebnis zurückzugeben.
bots\DispatchBot.cs
Verwenden der Erkennungsergebnisse
Wenn die Orchestrator-Erkennung ein Ergebnis erzeugt, gibt sie an, welcher Dienst die Äußerung am besten verarbeiten kann. Der Code in diesem Bot leitet die Anforderung an den entsprechenden Dienst weiter und fasst anschließend die Antwort des aufgerufenen Diensts zusammen. Abhängig von der von Orchestrator zurückgegebenen Absicht verwendet dieser Code die zurückgegebene Absicht, um an das richtige LUIS-Modell oder den QnA-Dienst weiterzuleiten.
bots\DispatchBot.cs
Die ProcessHomeAutomationAsync
Methoden und ProcessWeatherAsync
Methoden verwenden die benutzereingaben, die im Turnkontext enthalten sind, um die oberste Absicht und Entitäten aus dem richtigen LUIS-Modell abzurufen.
Die ProcessSampleQnAAsync
Methode verwendet die im Turnkontext enthaltenen Benutzereingaben, um eine Antwort aus dem Wissensdatenbank zu generieren und das Ergebnis dem Benutzer anzuzeigen.
Hinweis
Bei einer Produktionsanwendung würden die ausgewählten LUIS-Methoden an dieser Stelle eine Verbindung mit dem jeweiligen Dienst herstellen, die Benutzereingabe übergeben und die zurückgegebenen Daten für die LUIS-Absichten und -Entitäten verarbeiten.
Bot testen
Starten Sie den Beispielcode in Ihrer Entwicklungsumgebung. Beachten Sie die localhost-Adresse , die in der Adressleiste des Browserfensters angezeigt wird, das von Ihrer App geöffnet wird:
https://localhost:<Port_Number>
.Öffnen Sie den Bot Framework-Emulator, klicken Sie auf die Schaltfläche "Bot öffnen".
Geben Sie im Dialogfeld "Bot öffnen" Ihre Bot-Endpunkt-URL ein, z
http://localhost:3978/api/messages
. B. . Klicken Sie auf Verbinden.Zu Referenzzwecken sind hier einige Fragen und Befehle aufgeführt, die von den für Ihren Bot erstellten Diensten verarbeitet werden:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (Hausautomatisierung)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (Wetter)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Weiterleiten der Benutzerutterung an QnA Maker
Geben Sie im Emulator den Text
hi
ein, und übermitteln Sie die Äußerung. Der Bot sendet diese Abfrage an Orchestrator und ruft eine Antwort zurück, die angibt, welche untergeordnete App diese Äußerung zur weiteren Verarbeitung erhalten soll.Wenn Sie die
Orchestrator Recognition Trace
Zeile im Protokoll auswählen, können Sie die JSON-Antwort im Emulator sehen. Das Orchestrator-Ergebnis wird im Inspektor angezeigt.{ "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" }
Da die Äußerung Teil
hi
der QnAMaker-Absicht von Orchestrator ist und als dertopScoringIntent
Bot ausgewählt wird, wird der Bot eine zweite Anforderung stellen, diesmal an die QnA Maker-App mit derselben Äußerung.Wählen Sie die
QnAMaker Trace
Zeile im Emulatorprotokoll aus. Das QnA Maker-Ergebnis wird im Inspektor angezeigt.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (archiviert)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator