Configuración de un flujo de conversación

Configuración de un flujo de conversación

Anteriormente

En los dos primeros episodios, vimos cómo configurar una base de datos estructurada y fácilmente accesible a partir de una gran cantidad de datos en forma de archivos de texto.

Esta base de datos nos permitió, en el segundo episodio, construir y perfeccionar un primer modelo NLP capaz de manejar varios dominios relacionados con RFQs (Solicitudes de Cotización).
Hoy, vamos a ver cómo configurar un flujo de conversación entre el solicitante y nuestra inteligencia artificial.


Objetivo

Ahora tenemos un modelo sólido, que puede interpretar de manera efectiva varias intenciones diferentes. Este modelo se basa en ejemplos del mundo real, por lo que estamos seguros de que no está sesgado y satisfará las necesidades de nuestro cliente.

El siguiente paso es poder configurar conversaciones fluidas entre nuestros clientes y la IA. Veremos que existen dos filosofías en esta área y nos enfocaremos en la elección que hemos hecho.


El problema de la gestión de la conversación

La conversación es una interacción compleja, por lo que crear una IA que pueda simular una conversación es tan complejo. Si está más interesado en las características de la conversación humana, puede consultar este documento académico de la Universidad de Stanford: “Chatbots & Sistemas de Diálogo”. Aquí resumiremos el pensamiento general y los puntos esenciales de nuestro problema.

El objetivo es crear un intercambio fluido entre los diferentes interlocutores. Por lo tanto, es necesario ir más allá de simplemente entender una solicitud: ahora es necesario poner esta solicitud en perspectiva en relación con los intercambios anteriores, e incluso anticipar los intercambios futuros.

También debemos tener en cuenta la base. La base es un concepto esencial. Asegura que el Chatbot entienda gradualmente los elementos de la conversación a medida que llegan.

Discusión del chatbot

Vemos aquí que los mensajes tomados por separado no tienen sentido. Sin embargo, es natural para cualquier ser humano deducir el significado general de una conversación creada por una secuencia de líneas. Utilizamos nuestra memoria inmediata para hacerlo, así como nuestra capacidad para comprender contextos, particularmente conociendo al interlocutor y poniendo sus palabras en perspectiva en relación con lo que sabemos sobre él o ella y sus líneas anteriores. Esto es lo que necesitamos dar a nuestra IA: una memoria inmediata y conocimiento del contexto.

Existen dos enfoques distintos para resolver este problema. El primero es confiar únicamente en la herramienta NLP para gestionar el flujo de conversación. De hecho, un Chatbot no estaría completo sin un sistema de gestión de conversación.

El segundo es usar una solución «a medida», que pueda adaptarse a nuestras necesidades. Para ello, será necesario tener en cuenta los elementos cruciales de las solicitudes anteriores y procesar las siguientes a la luz de estos.

Motivados por el dominio específico de las finanzas y por el deseo de una gestión de usuarios específica, elegimos la segunda solución. Dicha solución nos permitirá adaptar el comportamiento de nuestra IA a la especificidad de los usuarios.

Presentaremos la arquitectura que hemos elegido, así como sus ventajas.


La elección de la arquitectura hecha en casa

La elección de configurar nuestra propia arquitectura fue obvia desde el principio del proyecto. Esta elección nos permitió implementar una gestión de conversaciones más flexible y adaptable, sin permanecer encerrados en una interpretación estricta del modelo: Nos ha permitido añadir inteligencia a nuestro modelo.

Esta arquitectura nos permite añadir una dimensión de «perfil de usuario» a nuestro modelo. Esto nos permite añadir una interpretación a una respuesta considerando el dominio empresarial del usuario y las solicitudes que probablemente hará.

También simplifica la gestión del historial de conversaciones. Almacenar una conversación en vivo nos permitirá gestionar el flujo de la conversación, pero al mismo tiempo crear un historial, que será extremadamente útil para avanzar en nuestro modelo y para actuar rápidamente en caso de problemas.

Además, esta elección nos permitió establecer una estandarización sistemática de nuestras entidades, utilizando solo datos conocidos, sin dejar espacio para la interpretación.

Aquí está una presentación de nuestra arquitectura simplificada:

NLP - arquitectura hecha en casa

Cada mensaje que se enviará al bot pasará por todos estos pasos. El mensaje primero será enviado al modelo NLP, que lo analizará para determinar las entidades de interés. Estas entidades serán luego normalizadas, es decir, transformadas en un número finito de valores predefinidos. Estos valores luego serán vinculados en un diccionario a los atributos a los que corresponden.

Finalmente, estos atributos serán almacenados en una base de datos que nos permite reconstruir conversaciones y que constituye la «memoria» de nuestra herramienta. Es esta base de datos la que nos permitirá implementar el concepto de conversación y base.

Ahora mostraremos cómo funciona nuestra arquitectura con un ejemplo concreto de una conversación.


Un flujo de conversación concreto

Para este ejemplo, repetiremos la conversación presentada al principio de este documento. El usuario quiere comprar acciones de Apple. Para registrar su solicitud, necesitamos cierta información:

  • El nombre de la empresa, con su código corto
  • El mercado en el que comprarla
  • El número de acciones
  • El precio al que desea comprarlas (por defecto, el precio de mercado)
  • La cantidad (por defecto, solo una)

Además, dado que este usuario está registrado con nosotros, sabemos que está especializado en los mercados americanos. Por lo tanto, lógicamente, comprará acciones en los mercados de Nueva York.

Tarjeta de identificación NLP

Para un usuario determinado, la consulta inicial será interpretada por el NLP, pero también a la luz de lo que se sabe sobre el usuario. Aquí, nuestro usuario está claramente interesado en comprar acciones, no vamos a sugerir la compra de materias primas, por ejemplo.

Esto se puede hacer permitiendo al usuario acceder solo a ciertas intenciones, o verificando la interpretación de nuestro modelo a la luz de lo que sabemos sobre el usuario.

Una vez comprendida la intención general del usuario, le pediremos la información adicional necesaria para ejecutar su solicitud, en este caso, el mercado en el que desea ejecutarla.

Luego podemos proponer una lista de mercados que sean apropiados para su campo. Aquí vemos que solo tenemos una lista de dos mercados para proponer, lo que simplifica el intercambio.

Nuestro usuario elige el mercado, especifica la cantidad y luego ejecuta la consulta.


Conclusión

En este tercer episodio, hemos visto cómo tratar con un flujo de conversaciones y todas las herramientas que ponemos a su servicio.

De hecho, la elección arquitectónica que hemos hecho nos permite añadir inteligencia además de NLP puro, notablemente la gestión de usuarios. Es posible imaginar incluso más engranajes que mejoren su IA y le den activos para permitir un mejor análisis de su rendimiento, por ejemplo. Así, una vez que una conversación ha sido registrada en la plataforma de su elección, puede imaginar todo tipo de herramientas de monitoreo y análisis, o incluso creación o anotación automática.

¡Esté atento a la próxima temporada!