Condividi tramite


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

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:

Diagramma classi C#.

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.

  1. 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>
    
  2. 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.

  1. Installare la versione supportata più recente del pacchetto Ridistribuibile di Visual C++

  2. Aprire un prompt dei comandi o una finestra del terminale e passare alla directory di esempio

  3. 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
    
  4. Scaricare il file del modello di base di Orchestrator

    mkdir model
    bf orchestrator:basemodel:get --out ./model
    
  5. 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

C# (archiviato)

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 HomeAutomationWeather servizi e SampleQnA . I costruttori usano i valori specificati per connettersi a questi servizi.

BotServices.cs

C# (archiviato)

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

C# (archiviato)

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

C# (archiviato)

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

  1. 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>.

  2. Aprire Bot Framework Emulator e fare clic sul pulsante Apri bot .

  3. 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.

  4. 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

Indirizzare l'espressione utente a QnA Maker

  1. 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.

  2. 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 , hifa parte della finalità QnAMaker di Orchestrator ed è selezionata come topScoringIntent, il bot effettuerà una seconda richiesta, questa volta all'app QnA Maker, con la stessa espressione.

  3. 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