Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Ciao, Habr! Oggi parleremo di come risolvere compiti che di solito richiedono l'intervento umano utilizzando Azure. Gli operatori passano molto tempo a rispondere alle stesse domande, gestire telefonate e messaggi di testo. I chatbot automatizzano la comunicazione e il riconoscimento, riducendo il carico di lavoro per le persone. Inoltre, i bot vengono utilizzati in Azure DevOps, dove consentono, ad esempio, di approvare rilasci e gestire build—visualizzare, avviare e fermare—direttamente da Slack o Microsoft Teams. Fondamentalmente, un chatbot è in qualche modo simile a un CLI, solo che è interattivo e consente agli sviluppatori di rimanere nel contesto della discussione in chat.

In questo articolo parleremo degli strumenti per creare chatbot, mostreremo come possono essere migliorati grazie ai servizi cognitivi e descriveremo come accelerare lo sviluppo grazie ai servizi pronti in Azure.

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Chatbot e servizi cognitivi: somiglianze e differenze

Per creare bot in Microsoft Azure si utilizzano il servizio Azure Bot e la piattaforma Bot Framework. Insieme, formano un insieme di strumenti per costruire, testare, distribuire e amministrare i bot, consentendo di creare sia sistemi di comunicazione semplici che avanzati con supporto per la voce, riconoscimento del linguaggio naturale e altre funzionalità.

Supponiamo che tu debba implementare un bot semplice basato su un servizio aziendale di domande e risposte oppure, al contrario, creare un bot funzionale con un sistema di comunicazione complesso e ramificato. Per questo puoi avvalerti di una serie di strumenti, suddivisi in tre gruppi: 

  1. Servizi per la rapida sviluppo di interfacce dialogiche (bot).
  2. Servizi cognitivi di intelligenza artificiale pronti per diversi scenari d'uso (riconoscimento di immagini, voce, database di conoscenze e ricerca).
  3. Servizi per la creazione e formazione di modelli di intelligenza artificiale.

Di solito, le persone confondono intuitivamente "bot" e "servizi cognitivi", poiché entrambi sono basati sul principio della comunicazione e nei casi d'uso dei bot e dei servizi ci sono dialoghi. Tuttavia, i chatbot lavorano con parole chiave e trigger, mentre i servizi cognitivi gestiscono richieste generiche che di solito vengono elaborate da persone: 

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

I servizi cognitivi sono un altro modo di comunicare con l'utente, aiutando a convertire una richiesta generica in un comando chiaro da inoltrare al bot. 

Pertanto, i chatbot sono applicazioni per gestire le richieste, mentre i servizi cognitivi sono strumenti di analisi intelligente delle richieste, che vengono attivati separatamente, ma a cui il chatbot può accedere per diventare "intelligente". 

Creazione di chatbot

Lo schema di progettazione raccomandato per il bot in Azure è il seguente: 

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Per progettare e sviluppare bot in Azure si utilizza Bot Framework. Su GitHub ci sono esempi di bot, le funzionalità del framework cambiano, quindi è necessario considerare la versione dell'SDK utilizzata nei bot.

Il framework prevede diversi modi per creare bot: utilizzando codice classico, strumenti della riga di comando o diagrammi di flusso. Quest'ultimo opzione visualizza i dialoghi, per questo è possibile utilizzare il gestore Bot Framework Composer. È stato creato sulla base di Bot Framework SDK come strumento di sviluppo visivo, che le team interdisciplinari potrebbero usare per creare bot.

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Bot Framework Composer consente di costruire la struttura del dialogo tramite blocchi, con cui il bot lavorerà. È possibile anche creare trigger, ossia parole chiave su cui il bot reagirà durante il dialogo, ad esempio, le parole "operatore", "furto" o "stop" e "basta".

In Bot Framework Composer è possibile creare un sistema di dialoghi complesso e ramificato, utilizzando Adaptive Dialogs. I dialoghi possono utilizzare sia servizi cognitivi che schede eventi (Adaptive Cards):

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Dopo la creazione, è possibile distribuire il chatbot nell'abbonamento, con uno script preparato automaticamente che creerà tutte le risorse necessarie: servizi cognitivi, piano di applicazione, Application Insights, database e così via.

QnA Maker

Per creare bot semplici basati su database aziendali di domande e risposte, è possibile utilizzare il servizio cognitivo QnA Maker. Realizzato come un semplice wizard web, consente di fornire un link a un database di conoscenze aziendali (FAQ Urls) o di utilizzare un database di documenti in formato *.doc o *.pdf. Dopo la creazione dell'indice, il bot selezionerà autonomamente le risposte più appropriate alle domande dell'utente.

Con QnAMaker è possibile anche creare catene di domande di chiarimento con creazione automatica di pulsanti, arricchire la base di conoscenze con metadati e riqualificare il servizio durante l'uso.

Il servizio può essere utilizzato come chatbot che implementa solo questa funzione, oppure come parte di un chatbot complesso che utilizza, a seconda della richiesta, anche altri servizi di intelligenza artificiale o elementi del Bot Framework.

Lavorare con altri servizi cognitivi

Sulla piattaforma Azure ci sono molti diversi servizi cognitivi. Tecnologicamente questi sono servizi web autonomi che possono essere chiamati dal codice. In risposta, il servizio invia json di un formato specifico che può essere utilizzato nel chatbot.

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma
Nei chatbot sono più comunemente utilizzati i seguenti:

  1. Riconoscimento del testo.
  2. Riconoscimento delle categorie di immagini definite dallo sviluppatore Servizio Custom Vision (caso d'uso: riconoscimento se un dipendente indossa un casco, occhiali protettivi o una maschera).
  3. Riconoscimento facciale (un ottimo caso d'uso è controllare se il soggetto ha caricato la propria foto o, ad esempio, una foto di un cane o di una persona di sesso diverso).
  4. Riconoscimento vocale.
  5. Analisi delle immagini.
  6. Traduzione (tutti ricordiamo quanto rumore abbia fatto la traduzione simultanea su Skype).
  7. Controllo ortografico e suggerimenti per correzioni.

LUIS

Per la creazione di bot potrebbe essere necessario anche LUIS (Language Understanding Intelligent Service). Le funzioni del servizio sono:

  • Determinare se le affermazioni dell'utente hanno senso e se è necessaria una reazione da parte del bot.
  • Ridurre gli sforzi per trascrivere il discorso (testo) dell'utente in comandi comprensibili per il bot.
  • Prevedere gli obiettivi/intenzioni reali degli utenti ed estrarre informazioni chiave dalle frasi nel dialogo.
  • Consentire allo sviluppatore di far partire il bot utilizzando solo pochi esempi di riconoscimento del significato e successiva riqualificazione del bot nel corso dell'operatività.
  • Fornire agli sviluppatori strumenti di visualizzazione per valutare la qualità della trascrizione dei comandi.
  • Aiutare a miglioramenti graduali nel riconoscimento degli obiettivi reali.

In sostanza, l'obiettivo principale di LUIS è comprendere con una certa probabilità cosa intendeva l'utente e convertire una richiesta naturale in un comando strutturato. Per riconoscere i significati delle richieste, LUIS utilizza un set di intenti (significati, intenzioni) ed entità (sia preimpostate dagli sviluppatori, sia derivate da «domini» preformati – alcune librerie di frasi standard preparate da Microsoft). 

Un semplice esempio: hai un bot che fornisce previsioni meteo. Per lui, l'intento sarà la traduzione della richiesta naturale in un "azione" – richiesta di previsione del tempo, e le entità saranno il tempo e il luogo. Ecco lo schema di lavoro dell'intento CheckWeather per questo bot.

Intento
Entità
Esempio di richiesta naturale

CheckWeather
{«type»: «location», «entity»: «moscow»}
{«type»: «builtin.datetimeV2.date», «entity»: «future», "resolution": "2020-05-30"}
Che tempo farà domani a Mosca

CheckWeather
{«type»: «date_range», «entity»: «this weekend»}
Mostrami le previsioni per questo fine settimana

Per combinare QnA Maker e LUIS, puoi utilizzare Dispatcher

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Quando lavori con QnA Maker e ricevi una richiesta dall'utente, il sistema determina con quale percentuale di probabilità la risposta di QnA si adatta alla richiesta. Se la probabilità è alta, viene fornita semplicemente la risposta dalla base di conoscenza aziendale, se è bassa – la richiesta può essere inviata a LUIS per ulteriori chiarimenti. L'uso di Dispatcher consente di non programmare questa logica, ma di determinare automaticamente questo confine di separazione delle richieste e di distribuirle rapidamente.

Testare e pubblicare il bot

Per il test si utilizza un'altra applicazione locale, Bot framework emulator. Con l'emulatore puoi comunicare con il bot e controllare i messaggi che invia e riceve. L'emulatore visualizza i messaggi come appariranno nell'interfaccia della chat web e registra le richieste e le risposte JSON durante lo scambio di messaggi con il bot.

Un esempio di utilizzo dell'emulatore è presentato in questa demo, dove viene mostrata la creazione di un assistente virtuale per BMW. Nel video si parla anche dei nuovi acceleratori per la creazione di chatbot – templates:

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma
https://youtu.be/u7Gql-ClcVA?t=564

Puoi anche utilizzare templates nella creazione dei tuoi chatbot. 
I template consentono di non dover riscrivere nuovamente le funzioni standard del bot, ma di aggiungere codice già pronto come "abilità". Un esempio può essere la gestione di un calendario, la pianificazione di incontri, ecc. Codice delle abilità pronte pubblicato su github.

Il test ha avuto successo, il bot è pronto e ora deve essere pubblicato e collegato ai canali. La pubblicazione avviene tramite strumenti Azure e come canali possono essere utilizzati messaggeri o social media. Se non c'è il canale desiderato per l'ingresso dei dati, si può cercarlo nella comunità pertinente su GitHub. 

Inoltre, per creare un chatbot completo come interfaccia di comunicazione con gli utenti e i servizi cognitivo, è necessario, ovviamente, disporre di servizi Azure aggiuntivi, come database, serverless (Azure Functions), oltre a servizi LogicApp e, possibilmente, Event Grid.

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Valutazione e analisi

Per valutare l'interazione con gli utenti è possibile utilizzare sia l'analisi integrata di Azure Bot Service, sia il servizio specifico Application Insights.

Di conseguenza, è possibile raccogliere informazioni sui seguenti criteri:

  • Quanti utenti hanno avuto accesso al bot da vari canali nel periodo di tempo scelto.
  • Quanti utenti, che hanno inviato un messaggio, sono tornati in seguito e ne hanno inviato un altro.
  • Quante azioni sono state inviate e ricevute tramite ciascun canale nell'intervallo di tempo specificato.

Con Application Insights è possibile monitorare qualsiasi applicazione in Azure e, in particolare, chatbot, ottenendo dati aggiuntivi sul comportamento degli utenti, sui carichi e sulla reazione del chatbot. È importante notare che il servizio Application Insights ha la propria interfaccia nel portale Azure.

Inoltre, i dati raccolti tramite questo servizio possono essere utilizzati per creare ulteriori visualizzazioni e report analitici in PowerBI. Un esempio di questo report e un template per PowerBI possono essere presi qui.

Acceleriamo lo sviluppo con i servizi Azure: creiamo chatbot e servizi cognitivi utilizzando la piattaforma

Grazie a tutti per l'attenzione! In questo articolo abbiamo utilizzato il materiale del webinar dell'architetto Microsoft Azure, Anna Fenushina, "Quando le persone non riescono a stare al passo. Come utilizzare al 100% chatbot e servizi cognitivi per automatizzare i processi di routine", in cui abbiamo dimostrato visivamente cosa siano i chatbot in Azure e quali siano gli scenari di applicazione, oltre a dimostrare come creare un bot in QnA Maker in 15 minuti e come si decompongono le strutture delle richieste in LUIS. 

Abbiamo realizzato questo webinar nell'ambito dell'online marathon per sviluppatori Dev Bootcamp. È stato incentrato sui prodotti che accelerano lo sviluppo e alleviano parte del carico di lavoro ripetitivo dei dipendenti aziendali attraverso strumenti di automazione e moduli preconfigurati di Azure. Le registrazioni di altri webinar inclusi nella maratona sono disponibili ai seguenti link:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster