Aggiungere la comprensione del linguaggio naturale al bot
SI APPLICA A: SDK v4
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.
La capacità di riconoscere ciò che l'utente intende a livello di conversazione e di contesto può essere un'attività difficile, ma può offrire al bot un'esperienza di conversazione più naturale. Language Understanding (LUIS) è un servizio API basato sul cloud che consente di creare una conversazione più naturale in modo tale che il bot riesca a riconoscere la finalità dei messaggi utente, rendendo più naturale il linguaggio per l'utente stesso, e indirizzi in modo migliore il flusso della conversazione.
Questo argomento descrive la procedura per aggiungere LUIS a un'applicazione di prenotazione di voli e riconoscere diverse finalità ed entità contenute nell'input utente.
Nota
Gli SDK JavaScript, C# e Python di Bot Framework continueranno a essere supportati, ma Java SDK verrà ritirato con il supporto finale a lungo termine che termina a novembre 2023.
I bot esistenti creati con Java SDK continueranno a funzionare.
Per la creazione di nuovi bot, è consigliabile usare Microsoft Copilot Studio e leggere le informazioni sulla scelta della soluzione copilota appropriata.
Per altre informazioni, vedere Il futuro della creazione di bot.
Prerequisiti
- Account LUIS.
- Copia dell'esempio core bot in C#, JavaScript, Java o Python.
- Conoscenza delle nozioni di base sui bot e dell'elaborazione del linguaggio naturale.
Informazioni sull'esempio
Questo esempio di bot di base mostra un esempio di un'applicazione di prenotazione di voli. Utilizza un servizio LUIS per riconoscere l'input dell'utente e restituire l'intento LUIS più rilevante riconosciuto.
Il modello linguistico ha tre finalità: Book Flight
, Cancel
e None
. LUIS userà queste finalità per comprendere cosa intende l'utente quando invia un messaggio al bot. Il modello linguistico definisce anche le entità che LUIS può estrarre dall'input dell'utente, ad esempio l'origine o l'aeroporto di destinazione.
Dopo ogni elaborazione dell'input utente, DialogBot
salva lo stato corrente di UserState
e ConversationState
. Dopo aver raccolto tutte le informazioni necessarie, l'esempio di codifica crea una demo di prenotazione voli. In questo articolo verranno illustrati gli aspetti LUIS di questo esempio. Tuttavia, il flusso generale dell'esempio è:
- Quando un nuovo utente si connette e visualizza una scheda di benvenuto, viene effettuata una chiamata a
OnMembersAddedAsync
. - Per ogni input utente ricevuto, viene effettuata una chiamata a
OnMessageActivityAsync
,
Il modulo OnMessageActivityAsync
esegue il dialogo appropriato tramite il metodo di estensione del dialogo Run
. Il dialogo principale chiama quindi l'helper LUIS per trovare l'intento utente con il punteggio più alto. Se la finalità con il punteggio massimo per l'input dell'utente restituisce "BookFlight", l'helper compila le informazioni dell'utente restituite da LUIS. Successivamente, il dialogo principale avvia BookingDialog
, che acquisisce eventuali informazioni aggiuntive necessarie all'utente, ad esempio:
-
Origin
: la città di origine -
TravelDate
: la data per cui prenotare il volo -
Destination
: la città di destinazione
Questo articolo illustra come aggiungere LUIS a un bot. Per informazioni sull'uso dei dialoghi o dello stato, vedere rispettivamente come raccogliere l'input degli utenti con una richiesta di dialogo o salvare i dati dell'utente e della conversazione.
Creare un'app LUIS nel portale LUIS
- Accedere al portale LUIS e, se necessario, creare un account e una risorsa di creazione di contenuti.
- Nella pagina App di conversazione in LUIS selezionare Importa, quindi Importa come JSON.
- Nella finestra di dialogo Importa nuova app :
- Scegliere il file FlightBooking.json nella cartella CognitiveModels dell'esempio.
- Immettere
FlightBooking
come nome facoltativo dell'app e selezionare Fine.
- Il sito può visualizzare Come creare un'app LUIS efficace e Aggiornare le finestre di dialogo delle entità composite. È possibile ignorare questi dialoghi e continuare.
- Allena l'app, quindi pubblicala nell'ambiente di produzione. Per altre informazioni, vedere la documentazione di LUIS su come eseguire il training e pubblicare un'app.
Perché usare le entità
Le entità LUIS consentono al bot di comprendere gli eventi oltre le finalità standard. In questo modo è possibile raccogliere informazioni aggiuntive dagli utenti, in modo che il bot possa porre domande e rispondere in modo più intelligente. Insieme alle definizioni per le tre finalità LUIS 'Book Flight', 'Cancel' e 'None', il file FlightBooking.json contiene anche un set di entità come 'From.Airport' e 'To.Airport'. Queste entità consentono a LUIS di rilevare e restituire le informazioni aggiuntive contenute nell'input originale dell'utente quando ha richiesto una nuova prenotazione di viaggio.
Ottenere i valori per connettersi all'app LUIS
Dopo aver pubblicato l'app LUIS, è possibile accedere all'app dal proprio bot. È necessario registrare diversi valori per accedere all'app LUIS dall'interno del bot. È possibile recuperare tali informazioni usando il portale LUIS.
Recuperare le informazioni sull'applicazione dal portale LUIS.ai
Il file di impostazioni (appsettings.json
, .env
o config.py
) riunisce tutti i riferimenti del servizio in un'unica posizione. Le informazioni recuperate verranno aggiunte a questo file nella sezione successiva.
Seleziona la tua app LUIS pubblicata da luis.ai.
Con l'app LUIS pubblicata aperta, selezionare la scheda MANAGE (Gestione).
Selezionare la scheda Impostazioni sul lato sinistro e registrare il valore visualizzato per ID applicazione come <YOUR_APP_ID>.
Selezionare Risorse di Azure e quindi Risorsa di previsione. Registrare il valore visualizzato per Location come <YOUR_REGION> e Primary Key come <YOUR_AUTHORING_KEY>.
In alternativa, è possibile usare l'area e la chiave primaria per la risorsa di creazione.
Aggiornare il file di impostazioni
Aggiungere le informazioni necessarie per accedere all'app LUIS, inclusi l'ID applicazione, la chiave di creazione e l'area nel appsettings.json
file. Nel passaggio precedente, hai recuperato questi valori dalla tua app LUIS pubblicata. Il nome host dell'API deve essere nel formato <your region>.api.cognitive.microsoft.com
.
appsetting.json
Avvertimento
Sembra che l'esempio che stai cercando sia stato spostato! Siamo certi che stiamo lavorando per risolvere questo problema.
Configurare il bot per l'uso dell'app LUIS
Assicurarsi che per il progetto sia installato il pacchetto NuGet Microsoft.Bot.Builder.AI.Luis.
Per connettersi al servizio LUIS, il bot esegue il pull delle informazioni aggiunte al file di appsetting.json. La classe FlightBookingRecognizer
contiene il codice con le impostazioni dal file appsetting.json ed esegue una query sul servizio LUIS chiamando il metodo RecognizeAsync
.
FlightBookingRecognizer.cs
Avvertimento
Sembra che l'esempio che stai cercando sia stato spostato! Siamo certi che stiamo lavorando per risolvere questo problema.
FlightBookingEx.cs
contiene la logica per estrarre From, To e TravelDate, estende la classe parziale FlightBooking.cs
usata per archiviare i risultati di LUIS quando si chiama FlightBookingRecognizer.RecognizeAsync<FlightBooking>
da MainDialog.cs
.
CognitiveModels\FlightBookingEx.cs
Avvertimento
Sembra che l'esempio che stai cercando sia stato spostato! Siamo certi che stiamo lavorando per risolvere questo problema.
LUIS è ora configurato e connesso per il bot.
Test del bot
Scaricare e installare l'ultima versione di Bot Framework Emulator
Esegui l'esempio localmente sul tuo computer. Se hai bisogno di istruzioni, fai riferimento al file per l'esempio C#, l'esempio JS o l'esempio Python.
Nell'emulatore digitare un messaggio come "travel to paris" o "going from paris to berlin". Usare qualsiasi espressione disponibile nel file FlightBooking.json per eseguire il training dell'intento "prenotare volo".
Se la finalità principale restituita da LUIS viene risolta in "Prenota volo", il bot chiederà altre domande fino a quando non dispone di informazioni sufficienti archiviate per creare una prenotazione di viaggio. A quel punto, restituirà le informazioni su questa prenotazione all'utente.
A questo punto, la logica del bot del codice verrà reimpostata e sarà possibile continuare a creare altre prenotazioni.
Informazioni aggiuntive
Per altre informazioni su LUIS, vedere la documentazione di LUIS:
- Che cos'è il servizio Language Understanding (LUIS)?
- Creare una nuova app LUIS nel portale LUIS
- Modelli di progettazione con finalità ed entità
- Eseguire la migrazione alle API di creazione V3
- Eseguire la migrazione alle API di stima V3
Suggerimento
Diverse parti dell'SDK definiscono classi di entità o elementi separati. Per le entità di messaggio, vedere Entità e tipi di attività.