Introduzione a IBM Watson Assistant

di Valerio Riva, IBM Cloud Engineer

IBM Watson Assistant è un servizio IBM Cloud che permette la realizzazione di Assistenti Virtuali attraverso l’utilizzo di una interfaccia semplice da usare e avanzate tecniche Machine Learning. Il servizio è disponibile su IBM Cloud, on-premise e sui cloud provider che supportano la piattaforma RedHat OpenShift (in questo caso il servizio è installabile sul prodotto IBM Cloud Pak for Data) ed è possibile provarlo in forma totalmente gratuita dal sito. I piani a pagamento offrono maggiori funzionalità che vanno incontro alle esigenze degli utenti enterprise. Lo scopo degli assistenti virtuali è quello di permettere la fruibilità di informazioni e servizi ad un pubblico sempre più vasto, grazie alle possibilità offerte dalla comprensione del linguaggio naturale, che può essere impiegata in presenza di richieste scritte e orali. Per creare un assistente virtuale è necessario creare una skill da assegnare ad un assistente (anch’esso da creare). Possiamo immaginare una skill come la base di conoscenza dell’assistente, che gli permette di interpretare le richieste dell’utente e fornire una risposta. Attualmente esistono tre tipi di skill: Actions, Dialog e Search. La prima tipologia di skill permette la creazione di assistenti virtuali con una struttura più semplice, orientata al botta e risposta (es: “che tempo fa?”) mentre la seconda tipologia permette di sviluppare dialoghi più complessi (es: ricerca e prenotazione di un volo); la terza tipologia permette di interfacciare Watson Assistant al servizio Watson Discovery per effettuare delle ricerche cognitive, su una base documentale, in linguaggio naturale laddove non sia presente una risposta nella base di conoscenza dell’assistente virtuale. Per dare un quadro più completo delle funzionalità di Watson Assistant, ci focalizziamo sulle skill di tipologia Dialog. Questa tipologia è incentrata principalmente su tre elementi: gli intenti, le entità, i nodi di dialogo.

Intenti: un intento rappresenta larichiesta dell’utente, come ad esempio una domanda relativa alla sede aziendale o al pagamento di una fattura. Si può definire un intento per ogni tipo di richiesta utente che si desidera supportare con l’assistente virtuale. L’intento è rappresentato da un nome preceduto dal carattere # (come gli hashtag). Per addestrare il servizio a riconoscere intenti, è sufficiente fornire almeno una decina di esempi per ogni intento creato. Per facilitare la creazione di intenti, è possibile importare intenti già pronti, suddivisi in categorie, dal catalogo dei contenuti. Ad esempio, la maggior parte delle applicazioni richiedono un intento nominato “#greetings” per comprendere quando l’utente sta salutando (avvio o chiusura sessione). Nel catalogo dei contenuti è presente la categoria di intenti denominata Generale che, oltre ad altri intenti, contiene anche il caso sopracitato, già fornito di numerosi esempi di intento.

Entità: un’entità rappresenta un termine o soggetto rilevante, in grado di caratterizzare o fornire un contesto specifico per un intento. Ad esempio, un’entità potrebbe rappresentare la città espressa dall’utente contestualmente all’intento di informazioni sulla sede aziendale o l’importo di una fattura. Nello strumento, il nome di un’entità ha sempre come prefisso il carattere @(come le mentions). Per creare entità, è necessario identificare i possibili nomiche l’utente può fornire, contestualmente all’intento, per specializzarne il contenuto. Questi valori devono essere inseriti, insieme a eventuali sinonimi, in entità ben definite: ad esempio è possibile caricare un dizionario contenente un elenco di case automobilistiche, i comuni di un determinato paese, etc..

Dialogo: un dialogo è un flusso di conversazione ramificato che definisce come l’assistente virtuale deve rispondere quando si verificano delle condizioni basate sugli intenti e sulle entità che sono stai definiti. Dialoghi complessi possono essere facilmente gestiti grazie all’editor integrato nel servizio, anche senza avere bisogno di competenze tecniche. Le condizioni che possono essere impostate attraverso una semplice interfaccia, sfruttano la logica booleana (operatori AND, OR e NOT) oppure è possibile un uso più avanzato mediante espressioni SpEL per condizioni più complesse.

Dopo aver preso confidenza con gli elementi necessari per costruire un assistente virtuale, proviamo a costruire insieme il primo. Iniziamo importando un esempio già pronto. Il servizio IBM Watson Assistant permette l’esportazione e l’importazione di assistenti virtuali via interfaccia e API, mediante file .json opportunamente strutturati. Al seguente indirizzo è possibile scaricare l’esempio per procedere creando una nuova skill di dialogo importando il file Skill-pizza-a-domicilio.json. Ora è possibile creare una istanza di Watson Assistant seguendo il link. Creata l’istanza, sarà possibile accedervi cliccando sul pulsante blu.

Creazione di un assistente virtuale

Watson Assistant viene fornito con un assistente e una skill di default, ma sarà impiegato il file json linkato in precedenza. Si può procedere cliccando sul secondo pulsante del menù laterale a comparsa, da qui si può creare una nuova skill cliccando sul relativo pulsante blu.

Creazione di una nuova skill

Ci concentreremo su una skill di tipo Dialogo, che permete di creare scenari più complessi. Effettuare la selezione e procedere cliccando sul pulsante blu.

Selezione di una skill di tipo Dialogo

Selezionare Upload Skill e importare il file json scaricato in precedenza, trascinandolo o selezionandolo con la prompt di sistema.

Caricamento di una skill esistente

Navigate le sezioni Intenti, Entità e Dialogo per vedere cosa è stato importato dall’operazione precedente.

Intenti ed Entità importati
Dialogo importato

A questo punto è possibile provare ad ampliare le capacità della skill, aggiungendo un intent sulle offerte speciali (“avete dei menù a prezzo fisso”, “quali sono le offerte speciali?”, “che promozioni ci sono?”, “posso avere lo sconto”…) a cui agganciare un nodo di dialogo che può rispondere con le promozioni in corso o provando ad estendere il dialogo già esistente per permettere di ordinare anche delle bibite, creando nuovi intenti e nuove entità sulla falsariga di quelle già esistenti.

Aggangiamento della skill all’assistente

È possibile rilasciare la skill, in pochi click, agganciandola ad un Assistente che avrà il compito di gestire una interfaccia web o l’integrazione con i canali social (Facebook Messenger, Slack), oppure si può sviluppare una applicazione capace di consumare le REST API di dialogo messe a disposizione dal servizio IBM Watson Assistant. Vediamo insieme quali sono i passaggi da fare per pubblicare la skill appena creata attraverso un Assistente per ottenere una interfaccia web. Per creare un Assistente, cliccare sul primo pulsante del menù laterale a scomparasa mostrato in figura e cliccare sul pulsante blu Crea assistente.

A questo punto scegliere e digitare un nome per l’assistente e una descrizione (opzionale). Procedere cliccando sul pulsante blu Crea assistente.

Assegnazione del nome all’assistente

Apparirà la seguente schermata, dove è necessario premere sul pulsante blu Aggiungere skill di dialogo evidenziato in figura.

Aggiunta della skill di dialogo

Selezionare ora la skill desiderata, fra quelle già esistenti, oppure è possibile crearne una nuova (vuota) al volo. La selezione avviene cliccando sul box della skill desiderata.

Aggiunta della skill esistente

Dopo aver selezionato la skill, la pagina riassuntiva dell’Assistente cambierà analogamente a come riportato in figura.

Schermata dell’assistente con la skill aggiunta

Ora è possibile occuparsi delle integrazioni. Queste permettono di agganciare una interfaccia all’assistente appena configurato. Per avere una idea di quale sarà il risultato finale, è possibile cliccare sul pulsante Anteprima per interagire con l’assistente virtuale.

Pulsante Anteprima

Per creare una interfaccia web customizzabile e integrabile (embedding) all’interno di una pagina web, bisogna fare ancora qualche click. Cliccare su Integra web chat.

Integrazione della web chat

E procedere scegliendo un nome per l’integrazione.

Assegnazione del nome alla web chat

A questo punto sarà possibile configurare l’aspetto estetico del widget web e alcune delle sue funzionalità, come riportato nella schermata seguente (si ricorda di premere Salva per applicare le modifiche).

Modifica dello stile della web chat

Selezionando la scheda Embed è possibile ottenere il codice javascript da integrare in una pagina web per vedere il widget al lavoro!

Script per l’integrazione della web chat

--

--