IBM CLOUD: Come creare un chatbot con Watson Assistant

Questo articolo è il quinto di una serie scritta in collaborazione con Raoul Alfredo Rocher e Massimo Loaldi. Come IT Solution Architect in ambito Cloud e Intelligenza artificiale vogliamo proporvi alcune brevi review per facilitare l'uso e l'adozione di tecnologie emergenti e innovative.

IBM Cloud è la piattaforma cloud di IBM che aiuta gli sviluppatori a realizzare e ad eseguire applicazioni e servizi innovativi. Oggi approfondiremo l’area tecnologica degli Agenti Virtuali (Chiamati anche Chatbot), nello specifico vedremo come implementare un semplice Chatbot attraverso il servizio Watson Assistant, e come erogarlo come servizio all’interno di una pagina web. 

Come spiegato nell’articolo relativo ai moduli di intelligenza artificiale di IBM, Watson non è altro che un servizio di intelligenza artificiale, suddiviso in moduli. Ogni servizio di Watson è responsabile di un dominio specifico di intelligenza artificiale. Essi sono moduli componibili ed integrabili tra loro all’interno di soluzioni esistenti.

Requisito necessario per il proseguo della lettura e per la creazione delle risorse è essere in possesso dell’account IBM Cloud. Se non si disponesse dell’account seguire il tutorial per la creazione di un free account.

No alt text provided for this image

Dopo aver eseguito il login alla piattaforma IBM Cloud tramite il link, recarsi nel catalogo nella sezione AI, successivamente cliccare sul quadrato Watson Assistant, esattamente come indicato nell’immagine sottostante.

No alt text provided for this image

Per accedere all’interfaccia grafica di Watson Assistant è necessario recarsi nella pagina del servizio direttamente dall’elenco risorse e cliccare sul bottone blu come da immagine sottostante. 

All’interno di Watson Assistant è possibile creare più Assistenti virtuali, ognuno separato dagli altri. A sua volta ogni Assistente virtuale può essere costituito da uno o più skill. Le skill sono contenitori in grado di gestire conversazioni di diverso dominio.

Le skill a loro volta possono essere di due tipi: 

  • Dialog Skill: Permette di gestire flussi di dialogo. 
  • Search Skill: Permette di ricercare informazioni all’interno di dati non strutturati. Esso sfrutta il servizio di IBM Watson Discovery (Si approfondirà in uno dei prossimi articoli). 

Per iniziare a sviluppare è necessario creare inizialmente un Assistant, inserendo il nome e opzionalmente una descrizione. Successivamente è necessario creare una skill (In questo articolo ci concentreremo sulla Dialog skill).  

È possibile caricare nell’assistant una skill già sviluppata, oppure crearla da zero inserendo il Nome, una descrizione e la lingua (Fondamentale in quanto se la lingua è errata la skill non funzionerà correttamente). 

È possibile anche sfruttare il know how di IBM, e quindi utilizzare skills già sviluppate da IBM. Nell’ultima Tab è possibile invece importare una skill (Concetto che vedremo tra qualche momento).

No alt text provided for this image

Dopo aver creato una skill è possibile recarsi al link di preview della chatbot (Rettangolo rosso), oppure esportare l’intera skill in locale per backup (Quadrato blu), oppure iniziare a configurare la nostra skill cliccando direttamente all’interno del rettangolo verde.

No alt text provided for this image

Esportando la skill è possibile reimportarla nel momento in cui si crea un’altra skill.

Prima di presentare alcuni esempi di configurazione del chatbot è bene aver chiaro alcuni concetti fondamentali:


  • Cosa è un chatbot: È un assistente virtuale capace di interagire testualmente con uno o più utenti in uno specifico dominio.
  • Cosa è un intento: Un intento è l’intenzione da parte dell’utente che interagisce, lo scopo principale della frase in input dell’utente.
  • Cosa è un’entità: L’entità si utilizza per far capire a watson effettivamente di cosa l’utente sta parlando, è quindi la specificità dell’intento. 
  • Cosa è un dialogo: Un dialogo in Watson assistant è il flusso che determina tutto il funzionamento del chatbot. Il dialogo è composto da nodi, ognuno con una condizione. Il numero di nodi deve essere minimo 2, esistono infatti due nodi speciali da inserire sempre:
No alt text provided for this image
  • Nodo Welcome: Il messaggio iniziale del chatbot. Quando l’utente inizierà la chat riceverà dal chatbot questo messaggio.
  • Nodo Anything else: Partendo dal primo nodo, Watson controllerà la condizione e se essa è verificata eseguirà l’azione, altrimenti continuerà a controllare la condizione successiva. Nel caso in cui nessuna condizione risulti vera entra in gioco il nodo anything else, ovvero contiene una frase che induce l’utente a riformulare la domanda in quanto fuori contesto.

Cosa si intende per condizione If/Else: È un costrutto di programmazione fondamentale da conoscere per creare dialoghi con Watson Assistant, si definisce una condizione di uguaglianza o di disuguaglianza e se la condizione è vera si esegue un’azione, in alternativa, se la condizione è falsa se ne esegue un’altra. Nello specifico la condizione sarà l’appartenenza ad un’entità o ad un intento, se la condizione è vera si eseguirà le azioni dentro il nodo del dialogo, se la condizione è falsa si passerà al nodo successivo.

Dopo che questi concetti sono stati assimilati è possibile iniziare a programmare utilizzando l’interfaccia grafica web di Watson assistant. 

No alt text provided for this image

Per creare un’entità invece recarsi in alto a sinistra nella tab Entità e cliccare il pulsante “Crea Entità”, successivamente inserire il nome dell’entità, inserire le categorie dell’entità e degli esempi per ogni categoria che la identificano. Per esempio, si vuole creare l’entità plastica che contiene due tipi di plastica esistenti: Riciclabile (Thermoplastic) e non riciblabile (Thermosets).

No alt text provided for this image

Il Fuzzy Matching è una funzionalità che permette a Watson di capire la semantica della frase inserita dall’utente anche se essa dovesse contenere errori grammaticali o di digitazione (per maggiori informazioni su come funziona si veda la documentazione qui).

Oltre ai due nodi di default (Welcome e Anything else) già citati precedentemente, per inserire un nuovo nodo recarsi nel tab Dialogo e cliccare sul pulsante aggiungi nodo.

No alt text provided for this image

Successivamente per configurare il nodo è necessario:

  • Impostare un nome univoco che permette allo sviluppatore, all’aumentare dei nodi, di riconoscere immediatamente il nodo.
  • Settare la condizione: Se la condizione sarà verificata allora verrà eseguito il nodo, altrimenti si passerà alla valutazione della condizione del nodo successivo.
No alt text provided for this image

Configurare la risposta del nodo: È possibile selezionare dal menù a tendina la risposta più adatta, infatti essa può essere un testo, un’immagine, un elenco, una Search Skill (Vedremo nei prossimi articoli Watson Discovery) oppure la connessione ad un agente umano. È possibile impostare risposte testuali multipli in modo casuale o sequenziale, in modo che quando il bot interroga lo stesso nodo esso risponda diversamente. È possibile impostare risposte multiple una in seguito ad un’altra: la prima testuale la seconda opzionale e la terza un’immagine. All’interno di una risposta testuale è possibile inserire dei tag html (<b> per il grassetto, <i> per il corsivo, <a href=””> per inserire dei link esterni).

  • Dopo aver eseguito la risposta è possibile aspettare un nuovo input dall’utente oppure eseguire un jump ad un altro nodo del dialogo.

Se invece si vuole testare il chatbot basta recarsi in alto a destra nel pulsante “Try It Out”:

No alt text provided for this image

La risposta del “Try It Out” è infatti la stessa configurata precedentemente nel nodo: La prima risposta testuale, la seconda risposta opzionale e la terza risposta visuale. Cliccando su una delle opzioni il bot prenderà in input il valore corrispondente all’opzione, esattamente come indicato nella configurazione del nodo Thermoset dell’immagine precedente, prenderà come valore Non riciclabile e Termoplastica prenderà come valore Riciclabile. Prendendo in input il valore Riciclabile o Non Riciclabile. A questo punto il bot valuterà tutte le condizioni dei nodi ed eseguirà l’azione del nodo solo se la condizione dello stesso è rispettata. In questo nostro esempio rappresentato nell’immagine qui sotto, si creerà un nuovo nodo, si assegnerà il nome “Tipi di plastica”, successivamente ci si recherà nel menù customize (rettangolo rosso) e si attiveranno le risposte multiple.

La condizione da settare è che l’entità plastica esista (@Plastica) le condizioni multiple saranno:

  • @Plastica:Thermoplastic
  • @Plastica:Thermoset

Successivamente si attribuirà la risposta per ogni condizione.

In questo caso per ottenere la risposta della condizione Thermoset l’input potrà essere:

  • Domandare direttamente al Chatbot qual’è la plastica non Riciclabile?
  • Cliccare sull’opzione Thermosets settata nel nodo Plastica.

Nel flusso di Dialogo è possibile inserire anche dei rami interni, i cosiddetti child node, si utilizzano nel caso in cui si vogliono specificare le varie entità. Thermoplastic e Thermosets possono essere dunque configurate con un approccio differente come quello del child node.

No alt text provided for this image

Come si evince dall’immagine oltre che creare child node è possibile anche aggiungere un nodo sotto (Below), un nodo sopra (above), raggruppare più nodi in una cartella, oppure muovere, duplicare o cancellare il nodo.

Parliamo ora di una funzionalità avanzata di Watson assistant: Webhook. È una funzionalità che permette di generare una chiamata API direttamente dal dialogo verso un’applicazione esterna per svolgere una azione programmatica sulla base di qualcosa che accade nel dialogo.

No alt text provided for this image

Grazie al webhook è possibile inviare i dati raccolti durante la conversazione come parte di una richiesta HTTP POST ad un URL personalizzato e specificato dall’utente come parte della definizione del webhook. Il servizio che riceve il webhook esegue un’azione predefinita utilizzando le informazioni che gli si passano e può opzionalmente restituire una risposta.

Ora mostriamo passo passo come definire un webook nella Dialog Skill e come abilitarla in un nodo di dialogo.

No alt text provided for this image

Dalla dialog skill dove si vuole definire il webhook selezionare la tab Options (in alto a sinistra) e poi Webhooks. Nel campo URL digitare l’url della richiesta all’applicazione esterna.

Una volta definito il webhook nelle impostazioni della Skill è necessario abilitarla in un nodo di dialogo, definire i dati da passargli e come gestire l’eventuale risposta del webhook. Selezionando un nodo di dialogo dove attivare il webhook si clicca su Customize in alto a destra e si abilita il Webhook. Una volta attivato il webhook compaiono nel nodo due sezioni: la sezione Then callout to my webhook e una sezione di risposte condizionali. Nella prima si definiscono i dati da passare nelle coppie Key e Value e la variabile di ritorno che, di default, è “webhok_result_n” (con n un numero intero a partire da 1 che viene incrementato per ogni nodo in cui viene attivato il webhook). È possibile rinominare questa variabile, l’importante è che sia univoca per ogni nodo con il webhook.

No alt text provided for this image

Nella sezione delle risposte condizionali viene gestita la risposta del webhook. Di default vengono create due condizioni: una che verifica la presenza della risposta (verificando se la variabile di ritorno $webhook_result_n è non nulla) e l’altra è la condizione anything_else che si verifica quando non sono soddisfatte le condizioni precedenti. È possibile aggiungere altre condizioni. Successivamente per ogni condizione va definita una risposta (Rettangoli rossi).

Dopo aver configurato in modo soddisfacente il nostro agente virtuale, è possibile renderlo disponibile agli utenti in modo facile e rapido, senza dover costruirsi un’interfaccia grafica.

È possibile cliccare su “Preview link” (Rettangolo rosso) per avere un link da condividere con gli utilizzatori finali, oppure cliccare su “Add integration” (Rettangolo verde) per deployarlo su altri canali come Slack, Facebook Messengeroppure Intercom. È disponibile anche un plugin per il CMS Wordpress per integrarlo direttamente nel vostro sito web, oppure integrarlo in altre app di instant messanging come Telegram.

No alt text provided for this image

Per poter avere una visione olistica dell’utilizzo del chatbot è possibile, dopo essere entrati nella skill di dialogo, analizzare le statistiche associate al dialogo (Solo tramite i canali sopra citati, non nel “Try It” di Watson assistant). Per far questo recarsi nel tab Analytics, come indicato nell’immagine sottostante. Sarà dunque possibile andare ad analizzare i rami del dialogo più utilizzati e avere anche a disposizione le intere conversazioni di tutti gli utenti che hanno interagito con l’assistente virtuale.

No alt text provided for this image

La guida di riferimento ufficiale di IBM Watson Assistant è disponibile al link:

https://cloud.ibm.com/docs/assistant?topic=assistant-getting-started




To view or add a comment, sign in

Explore topics