Skip to content

Conociendo a Watson: asistente virtual

asistente virtual

Hace ya tres años, quién lo diría, llegó a nuestro cliente (sector AAPP)  un equipo de IBM para hablarnos de algo llamado “Watson Conversation”. Su objetivo era proponer la creación de un Asistente Virtual para atender una previsible avalancha de solicitud de información que iba a tener lugar un año más tarde.

Como ocurre con toda novedad, aquella tecnología encontró gente interesada, gente que lo rechazaba y gente escéptica. Tengo que admitir (e incluso al equipo de IBM se lo he contado alguna vez) que yo estaba entre los últimos: nuestro cliente ya había rechazado anteriormente los Asistentes Virtuales, y no acababa de entender que esta vez fuera a resultar diferente.

Sin embargo, se aprobó un piloto, con lo que escépticos o no, nos encomendaron trabajar junto a nuestro cliente e IBM para construirlo, así que nos pusimos manos a la obra.

Y es aquí cuando pasé de escéptico a converso.

Watson Conversation, que actualmente se conoce como Watson Assistant (en adelande WA), resultó ser una tecnología muy potente, versátil y hasta podría decirse que atractiva.

Tengo que confesar que fue una época bastante frenética pero enormemente divertida. Mientras un pequeño grupo de tres/cuatro personas trabajaba en el modelo de uno de los ámbitos que íbamos a responder, otro grupo desarrollaba el segundo ámbito y otra parte elaboraba el interfaz del Asistente Virtual.

Hasta tal punto la herramienta de diseño era versátil que en una sola noche fuimos capaces de desarrollar el esqueleto de uno de los ámbitos de conocimiento, que luego fuimos puliendo y afinando (en concreto el segundo que había mencionado anteriormente).

En honor a la corrección hay que indicar que este ámbito estaba más orientado a procesos técnicos, errores informáticos… y sus contenidos estaban mucho más acotados. El ámbito principal, para el que los expertos de IBM estaban echando el resto junto al cliente, era infinitamente más complejo y requería de muchísimos más análisis, con lo que su desarrollo implicaba mucho más tiempo y mucha más sinergia entre diseñadores de diálogos y los expertos en el conocimiento a trasladar.

Dicho esto, y aun así, en un tiempo bastante razonable empezaron a generarse árboles de diálogo, a entrenarse intenciones y entidades -te recomendamos leer (1) si no estás familiarizado con la nomenclatura- y a ver algunos resultados, aún sin entrar en producción, lógicamente, … y sin embargo, para mí, eso sólo es una pequeña parte de lo que me empezó a gustar de WA.

Ya hemos dicho que WA tiene una interfaz bastante cómoda (de hecho ahora es bastante más cómodo que como lo era entonces, como todas las cosas que han pasado tres años evolucionando), esto facilita muchas tareas, pero al mismo tiempo es una solución “abierta”.

Como desarrollador tengo que confesar que no me gustan los productos cerrados. Si no puedo intervenir en la ejecución de las cosas, las adaptaciones que todos los clientes acaban necesitando que requieren hacer malabarismos innecesarios.

Y luego están las soluciones que proporcionan mecanismos de personalización e incorporación de procesos para los que es necesario realizar cinco rituales y sacrificar varios animales a algún dios oscuro para poder añadir una librería.

En el caso de WA no hay nada de eso: proporciona API's (2) para varios lenguajes que permiten que nuestros desarrollos conecten con sus servicios y realicen las tareas de cada proceso. Yo personalmente soy fan de su API Rest, que me ha permitido hacer infinidad de cosas en entornos con una seguridad tan específica que normalmente se escapaba a lo que estaba implementado en otras APIs (sin ir más lejos, la API de Java no era capaz de conectarse al servicio a través de un proxy, cosa que con la API REST pura sí podemos hacer).

Pues bien, la existencia de esta API nos permitió desenvolvernos por el proyecto con el entusiasmo de quien descubre una tierra ignota (es decir, para quien le guste descubrir tierras ignotas):

Por un lado, pudimos desempolvar una interfaz de asistentes virtuales que había caído en el olvido e integrarlo fácilmente con WA. Por otro, pudimos empezar a desarrollar mecanismos que no existían en el seno de Watson y que empezaron a darle mucho valor añadido a la solución (historial de conversaciones, análisis de los resultados, mecanismos de despliegue entre entornos…).

Incluso desarrollamos mecanismos de comunicación entre WA y el Interfaz para realizar ciertas acciones personalizadas (algo que actualmente ya se considera una buena práctica en el seno de Watson), y permitimos que los dos ámbitos de conocimiento pudieran complementarse entre sí haciendo que el interfaz pudiera ir saltando de uno a otro.

Pero las posibilidades son infinitas, más allá de todo lo que implementamos o llegamos a proyectar.

Tampoco nos llamemos a engaño: en un sentido o en otro, todos los clientes que utilizan WA acaban teniendo que implementarse ciertos mecanismos propios para monitorizar, añadir funcionalidades,… puede que parezca que es un producto que nos obliga a reinventar la rueda en cada implantación, pero en realidad podemos planteárnoslo como un nicho en el que se pide a gritos un conjunto de herramientas estandarizadas que otros clientes puedan usar.

Os pongo un par de ejemplos de herramientas que llegamos a desarrollar y algunas que están en el taller como quien dice:

  • Visualización gráfica de los árboles de diálogo para que los clientes pudieran monitorizar (dentro de la intranet del cliente y con controles de acceso específicos del cliente y no de IBM) los contenidos implantados.
  • Herramientas de corrección de contenidos que, a través de otros servicios de búsqueda, contrastan si la respuesta correcta ya se encontraba en otra parte del árbol de diálogo o no.
  • Generar documentación automatizada a partir de los árboles y sus respuestas.
  • Adaptar los contenidos a los idiomas de cada petición
  • Herramientas que simplifiquen los procesos de despliegue y de vuelta atrás en los mismos.

La opción de los idiomas, sin ir más lejos, es una solución que ya se encuentra en el seno de Watson con su servicio Watson Translator. Se puede identificar el idioma de la consulta y a partir de ahí hacer traducciones automáticas tanto de los mensajes de entrada como de las respuestas. Y si os dais cuenta, internamente sólo manejaríamos un modelo en un único idioma, ya que la traducción se hace en las entradas y en las salidas.

El proyecto tuvo un muy buen resultado, hasta el punto de desembocar en la creación de un equipo especializado en desarrollar estos Asistentes y en la petición de un segundo Asistente Virtual que atendiera a otras cuestiones.

A partir de aquí, todo sigue siendo afianzar pasos de lo que dejamos atrás y descubrir nuevos territorios. Se trabaja muy a fondo en algo que permita separar los conocimientos en árboles diferentes pero, al mismo tiempo, que estén conectados entre sí. Incluso nos hemos puesto como objetivo que esa conexión, ese conocimiento de “yo no lo sé pero este otro sí” se haga de forma automática, y poder adaptar los contenidos en función del canal de entrada.

Porque el canal de entrada es otro de esos territorios por explorar y explotar, y aquí hay que hacer mucho hincapié, ya que actualmente todas estas soluciones las abordamos a través de chat pero, ¿y si incorporamos los servicios de text to speech y speech to text? Las opciones son muy interesantes y, por las pruebas que hemos realizado hasta ahora, prometen muchísimo. Incluso a título personal hemos probado algunas conexiones con la famosa Alexa de Amazon, y los resultados también prometen.

Me veo obligado a señalar aquí, por cierto, que aunque nuestros desarrollos están abordando la conexión multicanal (telefonía) con algunas tecnologías que no están incluidas de serie en WA (es decir, implementando la conexión desde cero) IBM sí que proporciona algunos servicios que funcionan prácticamente “out-of-the-box” a este respecto.

Yo, por ejemplo, he sido capaz de generar una demo de atención telefónica contra un árbol de WA en apenas dos días, utilizando Twilio como centralita virtual y Voice Agent como conector entre teléfono, transcripción, WA y speech to text.

Os animo a hacer una prueba, ya que hay opción de crearse una cuenta gratuita en ibmcloud, o a preguntarme directamente si lo necesitáis, porque merece mucho la pena ver un poco de esta tecnología para hacerse una idea de lo que podríamos llegar a hacer.

Watson como plataforma y Watson Assistant en particular es un producto que sigue creciendo y evolucionando, con lo que aún nos queda mucho por ver de lo que IBM nos va a ir ofreciendo. Lo que está claro, al margen de lo que nos deparen sus novedades, es que lo que llevamos viendo estos últimos tres años es potente, con potencial, con una curva de aprendizaje suave y, por qué no decirlo, divertido.

Contadme vuestras inquietudes y necesidades y seguro que nos podemos ayudar mutuamente.

(1) Artículo "¿Qué es un asistente conversacional?"
(2) API: Acrónimo de la interfaz que presenta un sistema para comunicarse con otro.

Autor: Israel López Mena, Consultor en Sistemas de Atención de Cibernos

Sobre el autor: Israel López Mena

Israel López Mena

Consultor en Sistemas de Atención de Cibernos

¡Contáctanos y te ayudamos!