martes, 19 de diciembre de 2017

Primer Chatbot - Dialogflow (Google Platform)

Al finalizar la entrada anterior del blog, comenté que iba a hacer un ejemplo usando Dialogflow (antes API.AI). Dialogflow es una plataforma Cloud de Google para desarrollar chatbots.

Me ha sorprendido la facilidad de uso de la plataforma, es bastante intuitiva y simple de usar. Previamente hay que diseñar y establecer el flujo de la conversación que deseamos implementar con el chatbot. Y una vez entendidos los conceptos que describimos en la introducción de esta serie de posts, podemos saltar a construir nuestro primer ejercicio.

La consola.


Para poder acceder al servicio, primero debemos darnos de alta. Esto se puede realizar teniendo una cuenta de correo de Google. La consola es limpia, simple y se ve de la siguiente forma una vez que hacemos login a la plataforma.


El agente.


Un agente contiene intents, entities y responses para poder interactuar con un usuario. Hablaremos con los nombres de los conceptos en inglés, que es como se encuentran en la plataforma.

Para poder crear un nuevo agente, basta con seleccionar el siguiente botón en la consola de la plataforma.

Posteriormente, veremos una pantalla que nos permitirá realizar las primeras configuraciones (programación) de nuestro agente.


Aquí basta con colocar un nombre al agente y el idioma que vamos a utilizar. La plataforma ofrece ya varias opciones: alemán, inglés, francés, español, italiano, japonés, coreano, holandés, portugués, ruso, ucraniano y varios tipos de chino. Además permite definir la zona horaria. Una vez que realizamos las primeras configuraciones, podemos presionar en el botón Create que se encuentra en la parte superior derecha.


Los intents.


Lo primero que nos ofrece la plataforma, es la configuración de los intents. Por default, existen dos intents previamente creados en nuestro agente, estos los mantendremos como originalmente configurados. El primero de ellos es para saludar (Default Welcome Intent) y el segundo es utilizado para dar una respuesta en caso de no comprender la solicitud del usuario (Default Fallback Intent).


Mi primer intent, decidí hacerlo para hablar de fútbol. El fútbol es el tema preferido de muchos, y mucho más cuando se acerca la fecha del mundial de Rusia 2018. Además de que acabamos de tener campeón regio del fútbol mexicano. Así que configuré el siguiente intent.


En el ejemplo anterior, al agregar las posibilidades de interacción con el usuario (User says), podemos observar algunas palabras resaltadas en colores: México, Rusia y 2018. Esto significa que son anotadas como parámetros que son asignados a algunas entidades del sistema como fecha y ciudad. Estos parámetros nos ayudarán a entender otras ciudades y fechas proporcionadas por el usuario y no sólo las que configuramos en el intent.

A continuación presionamos el botón Save que se encuentra arriba a la derecha para poder probar por primera vez nuestro agente. Veamos qué sucede.

Los responses.


Debido a que no tenemos configuradas las respuestas a nuestro intent (al menos no para el del fútbol), el chatbot no devolverá respuesta alguna. Sin embargo, podrá reconocer los parámetros que se colocan en el mensaje de entrada del usuario. Por ejemplo, una de las frases que colocamos en la sección User say del intent fue: "Equipo más popular en México". El intent automáticamente reconocerá México o Brasil o Rusia o cualquier otro país como un parámetro que forma parte de las entidades del sistema (sys.geo-city) y devolverá un valor "Not available" como respuesta default. Esto está bien, pues no hemos configurado respuesta alguna todavía. También notaremos que el intent ejecutado es el que configuramos "Futbol Intent"


En caso de que coloquemos una frase sin sentido, el intent que se ejecutará es el "Default Fallback Intent" y devolverá alguna de las respuestas configuradas. Intentemos eso.

Finalmente, vamos a configurar algunos responses para nuestro intent. En mi caso coloqué los siguientes. Notemos que en las respuestas asocié los parámetros recibidos en la solicitud del usuario. Entonces, el chatbot tiene manera de asociar esos parámetros de entrada, a la respuesta de salida que va a elegir de la lista.


Por lo tanto, si le pregunto cuál es el campeón del mundo actual, no podrá nunca responderme con: "El campeón del siguiente mundial en Rusia 2018 será Perú", puesto que en la entrada no estoy usando entidades del sistema como parámetros, por lo tanto el chatbot no elegirá una respuesta que sí usa esa información en alguna de las salidas posibles.

Las primeras pruebas.


Estas son las respuestas que obtenemos de este ejercicio:





Siguientes pasos.

En la siguiente entrada del blog, vamos a hacer al chatbot un poco más inteligente. Se me ocurre que puedo publicar un API que reciba algunos parámetros y devuelva estadísticas del fútbol que tanto nos gusta. Así, de acuerdo a las entradas recibidas podremos obtener las estadísticas de un API y devolver una respuesta más coherente al usuario.

No hay comentarios.:

Publicar un comentario