Ciao, Habr! Oggi parleremo di come risolvere con Azure compiti che di solito richiedono l'intervento umano. Gli operatori impiegano molto tempo a rispondere alle stesse domande, gestire le telefonate e i messaggi di testo. I chatbot automatizzano le comunicazioni e il riconoscimento, riducendo il carico di lavoro sulle persone. I bot sono anche utilizzati in Azure DevOps, dove, ad esempio, possono approvare rilasci e gestire le build — visualizzare, avviare e arrestare — direttamente da Slack o Microsoft Teams. In effetti, un chatbot è un po' come una CLI, solo che è interattivo e consente agli sviluppatori di rimanere nel contesto della discussione in chat.
In questo articolo parleremo degli strumenti per la creazione di chatbot, mostreremo come migliorarli con i servizi cognitivi e descriveremo come accelerare lo sviluppo grazie ai servizi pronti in Azure.

Chatbot e servizi cognitivi: quali sono le somiglianze e quali le differenze.
Per creare bot in Microsoft Azure si utilizzano il servizio Azure Bot e la piattaforma Bot Framework. Insieme, costituiscono un insieme di software per costruire, testare, distribuire e gestire bot, che consente di realizzare sistemi di comunicazione sia semplici che complessi, 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 o, al contrario, creare un bot funzionale con un sistema di comunicazione ramificato complesso. A tal fine, puoi avvalerti di una serie di strumenti, suddivisi idealmente in tre gruppi:
- Servizi per lo sviluppo rapido di interfacce dialogiche (bot).
- Servizi cognitivi IA pronti per diversi scenari di utilizzo (riconoscimento di immagini, voce, basi di conoscenza e ricerca).
- Servizi per la creazione e la formazione di modelli IA.
Di solito, le persone mescolano intuitivamente i "bot" e i "servizi cognitivi", poiché entrambi i concetti si basano sul principio della comunicazione e nei casi d'uso di bot e servizi ci sono dialoghi. Tuttavia, i chatbot lavorano con parole chiave e trigger, mentre i servizi cognitivi si occupano di richieste arbitrarie che normalmente vengono gestite da esseri umani:

I servizi cognitivi sono un altro modo di comunicare con l'utente, aiutando a convertire una richiesta arbitraria in un comando chiaro da inviare successivamente al bot.
In questo modo, i chatbot sono applicazioni per gestire le richieste, mentre i servizi cognitivi sono strumenti per un'analisi intelligente delle richieste, attivati separatamente ma ai quali può accedere il chatbot, diventando "intelligente".
Creazione di chatbot
Lo schema di progettazione consigliato per il bot su Azure è il seguente:

Per la progettazione e lo sviluppo di bot in Azure, si utilizza . Su GitHub ci sono , le funzionalità del framework cambiano, quindi è necessario tenere conto della versione SDK utilizzata nei bot.
Il framework offre diverse modalità di creazione di bot: tramite codice classico, strumenti da linea di comando o diagrammi a blocchi. Quest'ultima opzione visualizza i dialoghi e può utilizzare un gestore. . È stato sviluppato sulla base del Bot Framework SDK come uno strumento di sviluppo visivo, utilizzabile da team interdisciplinari per creare bot.

Bot Framework Composer consente di costruire una struttura di dialogo utilizzando blocchi con cui il bot lavorerà. Inoltre, è possibile creare degli attivatori, ovvero parole chiave su cui il bot risponderà durante il dialogo. Ad esempio, parole come "operatore", "furto" oppure "stop" e "basta".
Nel Bot Framework Composer è possibile creare un sistema di dialoghi complesso e ramificato, utilizzando . I dialoghi possono sfruttare sia i servizi cognitivi che le schede adattative (Adaptive Cards):

Dopo la creazione, è possibile distribuire il chatbot all'interno di una sottoscrizione, con uno script preparato automaticamente che genera tutte le risorse necessarie: servizi cognitivi, piano applicativo, Application Insights, database, e così via.
QnA Maker
Per creare semplici bot basati su database aziendali di domande e risposte, è possibile utilizzare il servizio cognitivo QnA Maker. Realizzato come un semplice wizard web, consente di inserire un link a un database aziendale (FAQ Urls) o di utilizzare come base un database di documenti in formato *.doc o *.pdf. Dopo la creazione dell'indice, il bot sarà in grado di selezionare autonomamente le risposte più appropriate alle domande degli utenti.
Con QnAMaker è anche possibile creare catene di domande di chiarimento con la generazione automatica di pulsanti, arricchire il database di conoscenze con metadati e riaddestrare il servizio durante l'uso.
Il servizio può essere utilizzato come chatbot che implementa solo questa funzione o come parte di un chatbot complesso, che utilizza, a seconda della richiesta, altri servizi di intelligenza artificiale o elementi del Bot Framework.
Lavorare con altri servizi cognitivi
Sulla piattaforma Azure ci sono molti diversi servizi cognitivi. Tecnicamente, si tratta di servizi web autonomi che possono essere invocati dal codice. In risposta, il servizio restituisce un JSON in un formato specifico, che può essere utilizzato nel chatbot.

Nei chatbot, di solito possono essere utilizzati i seguenti:
- Riconoscimento del testo.
- Riconoscimento delle categorie di immagini definite dallo sviluppatore con il servizio Custom Vision (caso d'uso: riconoscimento se un dipendente indossa un casco, occhiali protettivi o una maschera).
- Riconoscimento facciale (eccellente caso d'uso — verifica se il volto registrato è quello della persona interrogata, o, ad esempio, una foto di un cane o una foto di una persona di un sesso diverso).
- Riconoscimento vocale.
- Analisi delle immagini.
- Traduzione (tutti ricordiamo quanto rumore abbia fatto la traduzione simultanea in Skype).
- Verifica ortografica e proposte di correzione degli errori.
LUIS
Per la creazione di bot potrebbe anche essere necessario (Language Understanding Intelligent Service). Obiettivi del servizio:
- Determina se l'affermazione dell'utente ha senso e se è necessaria una reazione del bot.
- Ridurre lo sforzo di trascrizione del parlato (testo) dell'utente in comandi comprensibili per il bot.
- Prevedere le reali intenzioni/obiettivi degli utenti ed estrarre informazioni chiave dalle frasi nel dialogo.
- Consentire allo sviluppatore di avviare il bot utilizzando solo alcuni esempi di riconoscimento del significato e successivo perfezionamento del bot durante il funzionamento.
- Consentire agli sviluppatori di utilizzare la visualizzazione per valutare la qualità della trascrizione delle comandi.
- Assistere nei miglioramenti graduali del riconoscimento degli obiettivi reali.
In sostanza, l'obiettivo principale di LUIS è comprendere con una certa probabilità ciò che l'utente intendeva e convertire la richiesta naturale in un comando strutturato. Per riconoscere il significato delle richieste, LUIS utilizza un insieme di intenti (significati, intenzioni) ed entità (sia preimpostate dai programmatori, sia prelevate e già formate da 'domini' - alcune biblioteche di frasi tipiche preparate da Microsoft).
Un semplice esempio: hai un bot che fornisce previsioni del tempo. Per lui, l'intento sarà tradurre la richiesta naturale in un 'azione' – richiesta di previsione meteorologica, mentre le entità saranno tempo e luogo. Illustriamo il funzionamento dell'intento CheckWeather per tale 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 si può utilizzare .

Quando lavori con QnA Maker e ricevi una richiesta dall'utente, il sistema determina con quale probabilità la risposta dall'archivio QnA sia adatta alla richiesta. Se la probabilità è alta, viene semplicemente fornita 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 dover programmare questa logica, ma di determinare automaticamente il confine delle richieste e smistarle in modo efficiente.
Test e pubblicazione del bot
Per il test si utilizza un'altra applicazione locale, . Con l'emulatore è possibile interagire con il bot e controllare i messaggi che invia e riceve. L'emulatore mostra i messaggi come apparirebbero nell'interfaccia della chat web e registra richieste e risposte JSON durante lo scambio di messaggi con il bot.
Un esempio di utilizzo dell'emulatore è presentato in questa dimostrazione, in cui viene mostrato come creare un assistente virtuale per BMW. Nel video vengono inoltre presentati nuovi acceleratori per la creazione di chatbot – modelli:

Puoi anche utilizzare i template per creare i tuoi chatbot.
I template consentono di non scrivere nuovamente le funzioni standard del bot, ma di aggiungere codice già pronto come "abilità". Un esempio può essere l'interazione con il calendario, la pianificazione di incontri, ecc. Codice delle abilità pronte. su github.
Il test è andato a buon fine, il bot è pronto e ora deve essere pubblicato e collegato ai canali. La pubblicazione avviene tramite Azure, mentre i canali possono includere messenger o social network. Se non esiste il canale desiderato per l'ingresso dei dati, è possibile cercarlo nella comunità appropriata su GitHub.
Inoltre, per creare un chatbot completo come interfaccia per l'interazione con gli utenti e i servizi cognitivi, avrai sicuramente bisogno di ulteriori servizi Azure, come i database, il serverless (Azure Functions), così come i servizi Logic App e, possibilmente, Event Grid.

Valutazione e analisi
Per valutare l'interazione con gli utenti, puoi utilizzare sia l'analisi integrata di Azure Bot Service sia il servizio Application Insights.
Di conseguenza, è possibile raccogliere informazioni secondo i seguenti criteri:
- Quanti utenti hanno avuto accesso al bot tramite diversi canali nel periodo di tempo selezionato.
- Quanti utenti, dopo aver 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, i chatbot, ottenendo ulteriori dati sul comportamento degli utenti, i carichi e le reazioni del chatbot. È importante notare che il servizio Application Insights ha la propria interfaccia nel portale di Azure.
Inoltre, i dati raccolti tramite questo servizio possono essere utilizzati per creare ulteriori visualizzazioni e report analitici in PowerBI. Un esempio di tale report e un template per PowerBI possono essere presi .

Grazie a tutti per l'attenzione! In questo articolo abbiamo utilizzato dal webinar dell'architetto Microsoft Azure, Anna Fenushina «Quando le persone non riescono. Come sfruttare al 100% i chatbot e i servizi cognitivi per automatizzare i processi di routine», in cui abbiamo mostrato chiaramente cosa sono i chatbot in Azure e quali sono gli scenari di utilizzo, oltre a dimostrare come creare un bot in QnA Maker in 15 minuti e come viene interpretata la struttura delle richieste in LUIS.
Abbiamo realizzato questo webinar nell'ambito dell' марафона online per sviluppatori Dev Bootcamp. È stato trattato il tema dei prodotti che accelerano lo sviluppo e alleviano parte del carico di lavoro routinario dei dipendenti aziendali mediante strumenti di automazione e moduli preconfigurati di Azure. Le registrazioni degli altri webinar inclusi nel maratona sono disponibili ai seguenti link:
-
Parliamo dell'evoluzione e delle nuove possibilità del servizio Azure DevOps. Analizziamo in dettaglio tutti e cinque i suoi componenti principali e come il servizio supporta l'organizzazione dello sviluppo software industriale. Presentatore — Vladimir Gusаров, Microsoft MVP.
Esploriamo come implementare l'approccio 'build as code' per qualsiasi linguaggio di programmazione utilizzando pipeline YAML multi-staged. Conduttore: Vladimir Gusаров, Microsoft MVP.
Discutiamo come sviluppare strategie di archiviazione del codice sorgente software e come utilizzare i sistemi di gestione delle versioni con Azure Repos. Conduttore: Vladimir Gusаров, Microsoft MVP.
Introduzione alle metodologie di gestione dell'open source nello sviluppo e utilizzo pratico dello strumento WhiteSource. Parliamo di come individuare le vulnerabilità nelle componenti open source e garantire la conformità alle licenze con WhiteSource. Conduttori: Diana Lisbaron, Direttore Vendite WhiteSource, e Daria Oreshkina, Web Control, distributore ufficiale di WhiteSource in Russia.
Fonte: habr.com
