Usare più modelli LUIS e QnA con Orchestrator
SI APPLICA A: SDK v4
Nota
Azure AI QnA Maker verrà ritirato il 31 marzo 2025. A partire dal 1° ottobre 2022, non potrai creare nuove risorse o Knowledge Base di QnA Maker. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte di Lingua di Azure AI.
La risposta alle domande personalizzate, una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata del servizio QnA Maker. Per altre informazioni sul supporto di domande e risposte in Bot Framework SDK, vedere Comprensione del linguaggio naturale.
Nota
Language Understanding (LUIS) verrà ritirato il 1° ottobre 2025. A partire dal 1° aprile 2023, non sarà possibile creare nuove risorse LUIS. Una versione più recente di Language Understanding è ora disponibile come parte del linguaggio di intelligenza artificiale di Azure.
CLU (Conversational Language Understanding), una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata di LUIS. Per altre informazioni sul supporto per la comprensione del linguaggio in Bot Framework SDK, vedere Comprensione del linguaggio naturale.
Se un bot usa più modelli LUIS (Language Understanding) e knowledge base di QnA Maker, è possibile usare Bot Framework Orchestrator per determinare quale modello LUIS o knowledge base QnA Maker corrisponde meglio all'input dell'utente. È possibile usare il comando dell'interfaccia della bf orchestrator
riga di comando per creare un file di snapshot di Orchestrator, quindi usare il file di snapshot per instradare l'input dell'utente al modello corretto in fase di esecuzione.
Questo articolo descrive come usare una knowledge base di QnA Maker esistente con Orchestrator.
- Per i nuovi bot, è consigliabile usare le funzionalità del flusso di lavoro di risposta alle domande e all'orchestrazione del linguaggio di intelligenza artificiale di Azure.
- Per altre informazioni su Orchestrator, vedere Riconoscimento delle finalità con Orchestrator in Composer.
- Per altre informazioni sul
bf orchestrator
comando, vedere README dell'interfaccia della riga di comando di Bot Framework.
Prerequisiti
- Un account luis.ai per creare app LUIS.
- Un account QnA Maker e una knowledge base di QnA Maker esistente.
- Copia dell'esempio NLP con Orchestrator in C# (archiviato) o JavaScript (archiviato).
- Conoscenza di nozioni di base sui bot, LUIS e QnA Maker.
- Installare l'interfaccia della riga di comando di BF.
Informazioni sull'esempio
Questo esempio si basa su un set predefinito di progetti LUIS e QnA Maker. Tuttavia, per usare QnA Maker nel bot, è necessaria una knowledge base esistente nel portale di QnA Maker . Il bot potrà quindi usare la knowledge base per rispondere alle domande dell'utente.
Per lo sviluppo di nuovi bot, è consigliabile usare Copilot Studio. Se è necessario creare una nuova knowledge base per un bot di Bot Framework SDK, vedere gli articoli seguenti sui servizi di intelligenza artificiale di Azure:
- Che cos'è la risposta alle domande?
- Creare un bot di domande frequenti
- Libreria client di risposte alle domande di Servizi cognitivi di Azure per .NET
Per ogni input utente ricevuto, viene effettuata una chiamata a OnMessageActivityAsync
, Questo modulo trova la finalità utente con il punteggio più alto e passa il risultato a DispatchToTopIntentAsync
. DispatchToTopIntentAsync, a sua volta, chiama il gestore dell'app appropriato.
ProcessSampleQnAAsync
- per domande frequenti sul bot.ProcessWeatherAsync
: per le query sul meteo.ProcessHomeAutomationAsync
: per i comandi dell'illuminazione domestica.
Il gestore chiama il servizio LUIS o QnA Maker e restituisce all'utente il risultato generato.
Creare le app LUIS
Prima di poter creare un file di snapshot di Orchestrator, sono necessarie app LUIS e knowledge base QnA create e pubblicate. Il bot di esempio a cui si fa riferimento in questo articolo usa i modelli seguenti, inclusi nell'esempio NLP with Orchestrator nella \CognitiveModels
cartella :
Nome | Descrizione |
---|---|
HomeAutomation | App LUIS che riconosce una finalità di domotica con i dati di entità associati. |
Meteo | App LUIS che riconosce le finalità relative al meteo con dati di posizione. |
QnAMaker | Knowledge base di QnA Maker che fornisce risposte a semplici domande sul bot. |
Creare le app LUIS
Creare app LUIS dai file HomeAutomation e Weather .lu nella directory dei modelli cognitivi dell'esempio.
Eseguire il comando seguente per importare, eseguire il training e pubblicare l'app nell'ambiente di produzione.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Registrare gli ID applicazione, i nomi visualizzati, la chiave di creazione e la posizione.
Per altre informazioni, vedere Come creare un'app LUIS nel portale LUIS e Ottenere i valori per connettersi all'app LUIS in Aggiungere la comprensione del linguaggio naturale al bot e la documentazione di LUIS su come eseguire il training e pubblicare un'app nell'ambiente di produzione.
Ottenere valori per connettere il bot alla knowledge base
Nota
Azure AI QnA Maker verrà ritirato il 31 marzo 2025. A partire dal 1° ottobre 2022, non potrai creare nuove risorse o Knowledge Base di QnA Maker. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte di Lingua di Azure AI.
La risposta alle domande personalizzate, una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata del servizio QnA Maker. Per altre informazioni sul supporto di domande e risposte in Bot Framework SDK, vedere Comprensione del linguaggio naturale.
È necessaria una knowledge base esistente e la chiave host di QnA Maker e il nome host di QnA Maker.
Suggerimento
La documentazione di QnA Maker contiene istruzioni su come creare, eseguire il training e pubblicare la knowledge base.
Creare il file di snapshot di Orchestrator
L'interfaccia dell'interfaccia della riga di comando per lo strumento Orchestrator crea il file di snapshot di Orchestrator per il routing all'app LUIS o QnA Maker corretta in fase di esecuzione.
Installare la versione supportata più recente del pacchetto Ridistribuibile di Visual C++
Aprire un prompt dei comandi o una finestra del terminale e passare alla directory di esempio
Assicurarsi di avere la versione corrente di npm e l'interfaccia della riga di comando di Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Scaricare il file del modello di base di Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Creare il file di snapshot di Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Installazione di pacchetti
Prima di eseguire questa app per la prima volta, assicurarsi che siano installati diversi pacchetti NuGet:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Aggiornare manualmente il file appsettings.json
Dopo aver creato tutte le app del servizio, è necessario aggiungere le informazioni per ognuna nel file 'appsettings.json'. L'esempio iniziale per il codice C# (archiviato) contiene un file di appsettings.json vuoto:
appsettings.json
Per ognuna delle entità indicate di seguito, aggiungere i valori registrati in precedenza in queste istruzioni:
"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>",
Dopo aver complete tutte le modifiche, salvare questo file.
Connettersi ai servizi dal bot
Per connettersi ai servizi LUIS e QnA Maker, il bot esegue il pull delle informazioni dal file di impostazioni.
In BotServices.cs, le informazioni contenute nel file di configurazione appsettings.json vengono usate per connettere il bot di Orchestrator ai HomeAutomation
Weather
servizi e SampleQnA
. I costruttori usano i valori specificati per connettersi a questi servizi.
BotServices.cs
Chiamare i servizi dal bot
Per ogni input dell'utente, la logica del bot passa l'input dell'utente a Orchestrator Recognizer, trova la finalità restituita in alto e usa tali informazioni per chiamare il servizio appropriato per l'input.
Nel file DispatchBot.cs ogni volta che viene chiamato il OnMessageActivityAsync
metodo, si controlla il messaggio dell'utente in arrivo e si ottiene la finalità principale da Orchestrator Recognizer. Viene quindi passato topIntent
e recognizerResult
al metodo corretto per chiamare il servizio e restituire il risultato.
bots\DispatchBot.cs
Uso dei risultati del riconoscimento
Quando il sistema di riconoscimento orchestratore produce un risultato, indica quale servizio può elaborare in modo più appropriato l'espressione. Il codice in questo bot indirizza la richiesta al servizio corrispondente e quindi riepiloga la risposta dal servizio chiamato. A seconda della finalità restituita da Orchestrator, questo codice usa la finalità restituita per indirizzare al modello LUIS corretto o al servizio QnA corretto.
bots\DispatchBot.cs
I ProcessHomeAutomationAsync
metodi e ProcessWeatherAsync
usano l'input dell'utente contenuto nel contesto di turno per ottenere la finalità e le entità principali dal modello LUIS corretto.
Il ProcessSampleQnAAsync
metodo usa l'input dell'utente contenuto nel contesto di turno per generare una risposta dalla Knowledge Base e visualizzare il risultato all'utente.
Nota
Nel caso di un'applicazione di produzione, a questo punto i metodi LUIS selezionati si connettono al servizio specificato, passano l'input dell'utente ed elaborano i dati di finalità ed entità LUIS restituiti.
Esegui il test del tuo bot
Avviare il codice di esempio nell'ambiente di sviluppo. Prendere nota dell'indirizzo localhost visualizzato nella barra degli indirizzi della finestra del browser aperta dall'app:
https://localhost:<Port_Number>
.Aprire Bot Framework Emulator e fare clic sul pulsante Apri bot .
Nella finestra di dialogo Apri un bot immettere l'URL dell'endpoint del bot, ad esempio
http://localhost:3978/api/messages
. Fare clic su Connetti.A titolo di riferimento, di seguito sono riportati esempi delle domande e dei comandi gestiti dai servizi creati per il 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 (meteo)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Indirizzare l'espressione utente a QnA Maker
Nell'emulatore immettere il testo
hi
e inviare l'espressione. Il bot invia questa query a Orchestrator e restituisce una risposta che indica quale app figlio deve ottenere questa espressione per un'ulteriore elaborazione.Selezionando la
Orchestrator Recognition Trace
riga nel log, è possibile visualizzare la risposta JSON nell'emulatore. Il risultato dell'agente di orchestrazione viene visualizzato nel controllo.{ "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" }
Poiché l'espressione ,
hi
fa parte della finalità QnAMaker di Orchestrator ed è selezionata cometopScoringIntent
, il bot effettuerà una seconda richiesta, questa volta all'app QnA Maker, con la stessa espressione.Selezionare la
QnAMaker Trace
riga nel log dell'emulatore. Il risultato di QnA Maker viene visualizzato nell'oggetto Inspector.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (archiviato)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator