A modo ilustrativo, en este tutorial pretendo mostrar los pasos a seguir a la hora de diseñar un chatbot que en nuestro caso utilizará IBM Watson (tecnologías cognitivas de IBM) y que podremos desplegar en un web chat, en Whatsapp o en Facebook Messenger.
Como regla general, a la hora de ponernos manos a la obra para diseñar el bot, lo primero que tendremos que preguntarnos es qué alcance queremos que tenga nuestro bot, y lo segundo es, en qué canales tiene sentido desplegarlo (en una web, en Facebook Messenger, en Whatsapp, en Telegram, integrado dentro de la app del propio banco, etc).
En nuestro caso, vamos a suponer que desarrollamos un chatbot de banca (“Banquito”) que va a tener un alcance inicialmente acotado y que queremos que la conversación sea abierta, es decir, permitiremos que el cliente escriba texto libre en todo momento. Para ello, tendremos que integrar una tecnología de inteligencia artificial (IA), y para el desarrollo de este chatbot conceptual utilizaremos IBM Watson.
Tabla de contenidos
Manos a la obra, el diseño del chatbot utilizando IBM Watson (o cualquier otra tecnología de Inteligencia Artificial).
Supongo que se trata de un bot que permite hacer estas 3 acciones:
- Consultar el saldo.
- Sacar dinero (encontrar un cajero).
- Mostrar los últimos movimientos.
Nota: Para hacer un bot funcional que tenga estas 3 posibilidades podríamos ir adelante con una estructura visual, guiada y vía botones, con una lógica de árbol pero sin el uso de herramientas de IA. En este caso, se ha tomado la decisión de realizar una estructura mixta vía botones y el uso de texto libre. ¿Por qué puede darse esta situación mixta? Muy sencillo:
- Porque aunque a veces de cara al usuario final lo visual es mejor que la integración de IA, ofrecer dicha opción (permitir introducir texto libre), hace que el bot sea más “listo”.
- Porque el uso de la IA cuesta dinero, y conviene realizar un buen diseño funcional que contemple todos los recursos disponibles.
- Porque se quieren sentar las bases de futuro de un bot con un macro alcance.
- Porque canales como Whatsapp no cuentan aún con elementos visuales.
Watson de IBM trabaja con 3 conceptos: las intenciones, las entidades y los diálogos.
- El primero de ellos hace referencia a las acciones que puede querer hacer el cliente (“quiero sacar dinero”).
- El segundo, a los datos que necesitaremos para definir la acción y que el bot sepa exactamente que hacer (¿sacar dinero dónde? ¿A mi alrededor, en el cajero más cercano, en el más barato? ¿En otro sitio al que voy a ir dentro de media hora?).
- El tercero, el lugar donde definiremos el diálogo, vía nodos y preguntas que se desencadenen cuando el bot necesite más información para saber qué acción llevar a cabo.
Dentro del scope definido de 3 acciones, tendremos que tener en cuenta varias cosas:
- Definición del alcance: ¿cuál es la funcionalidad de mi bot?¿Cuáles son las acciones que el bot será capaz de ejecutar?
- Preguntarme lo anterior, me servirá para definir las entidades que necesitaré usar. Por ejemplo, si el cliente pide mostrarle los últimos movimientos, ¿le enseño los 5 últimos? ¿los 10 últimos? ¿le doy las 2 opciones anteriores? ¿o le dejo al cliente que me diga un número de operaciones?
- Por último, tendremos que dar de alta intenciones genéricas: saludos, agradecimientos, ayuda, etc.
Manos a la obra: ¿cómo empezar? Por la definición del alcance concreto.
Como decía, lo primero que tenemos que definir completamente el alcance. Al ser un ejemplo, lo acotaré. Teníamos 3 acciones:
Primera acción: Consultar el saldo
- Simplifico el caso: el cliente solo puede tener una cuenta en el banco.
- Además, supongo que el usuario ya está logueado; en otro caso, cuando saquemos la intención “consultar saldo”, deberíamos pedirle que se loguee.
Segunda acción: Sacar dinero (encontrar cajero)
- Sólo dejaré que el cliente encuentre un cajero a su alrededor, no que haga búsquedas en otra localización.
- Sin embargo, tendré en cuenta la urgencia que tiene. Es decir, abro dos posibilidades: ir al cajero más cercano, o ir al cajero más cercano de la red (un cajero en el que no le cobren comisiones).
Tercera acción: Mostrar los últimos movimientos
- En este ejemplo, mostraré por defecto los últimos 5 movimientos. En una fase posterior, se habilitarán más opciones y/o filtros.
- De nuevo, supongo que cliente está logueado.
¿Cómo enfocar el desarrollo?
Me gusta pensar en el diálogo con el cliente y hacerme la siguiente pregunta, ¿cómo podría decirme un cliente que quiere realizar cada una de las acciones que quiero desarrollar? Estas alternativas, son las que doy de alta para cada una de las intenciones, para que Watson identifique frases similares como esa intención.
Definiendo la intención #ConsultarSaldo: listamos diferentes formas en las que un usuario nos podría escribir para indicarnos que quiere conocer su saldo. Habrá alguno más directos y otros más conversacionales, tendremos que dar de alta todas las alternativas 😉 Aquí algunos ejemplos de lo que daré de alta:
- ¿Cuál es mi saldo?
- ¿Cuál es el saldo que tengo disponible?
- Conocer mi saldo
- Conocer mi saldo disponible
- Saldo disponible
- Saldo
- Consultar saldo
- Saldo en cuenta
- Saldo de mi cuenta
- ¿Qué dinero tengo?
- Dinero en cuenta.
- Dinero en el banco.
- Cash en el banco.
- Caja disponible
Para no eternizar el desarrollo de este artículo, pasaremos a otro donde muestro la configuración del propio Watson (cómo dar de alta intenciones y configurarlas, cómo dar de alta las entidades, y los nodos del diálogo). Pero, creo que con lo que cuento, ya hay una buena introducción a la lógica a seguir para diseñar un sistema de inteligencia artificial y que nos permita entender intenciones, entidades, etc. 😊
El resto de pasos para tener un diseño técnico completo del bot sería:
- Desarrollar la lógica completa del bot (no sólo de la IA)
- Realizar las adaptaciones según el canal en el que se despliega (cada uno tiene unos elementos visuales)
- Y desplegar el chatbot en dichos canales
Si te ha gustado, no olvides dejar ❤️ para que todos tus seguidores puedan leerlo. 💬😍
¡Ah, y que el chocolate te acompañe!🍫🤖
Senior Chatbot Developer en Chatbot Chocolate.