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.

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:
- Servizi per la rapida sviluppo di interfacce dialogiche (bot).
- Servizi cognitivi di intelligenza artificiale pronti per diversi scenari d'uso (riconoscimento di immagini, voce, database di conoscenze e ricerca).
- 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:

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:

Per progettare e sviluppare bot in Azure si utilizza . Su GitHub ci sono , 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 . È stato creato sulla base di Bot Framework SDK come strumento di sviluppo visivo, che le team interdisciplinari potrebbero usare per creare bot.

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 . I dialoghi possono utilizzare sia servizi cognitivi che schede eventi (Adaptive Cards):

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.

Nei chatbot sono più comunemente utilizzati i seguenti:
- Riconoscimento del testo.
- 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).
- 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).
- Riconoscimento vocale.
- Analisi delle immagini.
- Traduzione (tutti ricordiamo quanto rumore abbia fatto la traduzione simultanea su Skype).
- Controllo ortografico e suggerimenti per correzioni.
LUIS
Per la creazione di bot potrebbe essere necessario anche (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 .

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, . 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:

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

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 .

Grazie a tutti per l'attenzione! In questo articolo abbiamo utilizzato 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:
-
Parliamo dell'evoluzione e delle nuove funzionalità del servizio Azure DevOps. Analizziamo nei dettagli tutti e cinque i principali componenti e come il servizio supporta l'organizzazione dello sviluppo software industriale. Il relatore è Vladimir Gusarov, Microsoft MVP.
Esploriamo come implementare l'approccio 'build as code' per qualsiasi linguaggio di programmazione utilizzando pipeline YAML multi-stagiate. Il relatore è Vladimir Gusarov, Microsoft MVP.
Discutiamo come sviluppare strategie di archiviazione del codice sorgente dei software, come utilizzare i sistemi di controllo versione con Azure Repos. Il relatore è Vladimir Gusarov, Microsoft MVP.
Introduciamo le metodologie di gestione dell'open source nello sviluppo e l'applicazione pratica dello strumento WhiteSource. Parliamo di ricerca di vulnerabilità nei componenti open source e di conformità licenziale grazie a WhiteSource. I relatori sono Diana Lisbaron, Director of Sales WhiteSource, e Daria Oreshkina, Web Control, distributore ufficiale di WhiteSource in Russia.
Fonte: habr.com
