Nieves Ábalos

View Original

¿Cómo funcionan los chatbots?

¿Qué es un chatbot?

Una de las principales aplicaciones de la IA Conversacional son los chatbots. Un chatbot es un programa informático diseñado para simular una conversación entre personas a través de texto, y que busca ayudar a la persona a realizar ciertas tareas, socializar o informarse.

¿Cuál fue el primer chatbot?

El primer chatbot considerado como tal fue ELIZA[1]. Fue creado por Joseph Weizenbaum en 1966, y utilizaba un mecanismo sencillo de detección de palabras para responder a sus usuarios, simulando conversaciones realistas, tal y como expliqué en este artículo: “¿Qué es la IA Conversacional?”.

Ejemplo de chat con ELIZA. Fuente: Weizenbaum[1] 

Chatbots de comandos y botones

Las primeras interfaces consideradas como chatbots fueron las basadas en comandos. Un comando escrito puede ser reconocido a través de una expresión regular, y una vez detectado, se procede a responder o ejecutar la acción correspondiente. En realidad, este tipo de chatbot es más un “bot” que un “chat-bot”, por las pocas capacidades de entender lenguaje como tal.

Ejemplo de chatbot basado en comandos, en Telegram. Fuente: documentación de Telegram.

El boom de los chatbots de los años 2016 a 2018, se basaba más en la interfaz de chat que en las capacidades inteligentes de procesar lenguaje natural. De hecho, no todos las herramientas de creación de chatbots disponibles tenían capacidades lingüísticas, por lo que muchos diseños seguían basados en botones, que por detrás estaban asociados a comandos u acciones que se ejecutaban cuando el usuario pulsaban el botón. Ejemplos de estas plataformas eran Chatfuel o Landbot.

El concepto del que se hablaba en aquella época era el de “Conversational UI”, donde la UI se refiere a user interface o interfaz de usuario, más que del concepto actual, “Conversational AI” o Inteligencia Artificial Conversacional. Un ejemplo de Conversational UI fue la aplicación para iOS de noticias llamada Quartz[2], lanzada en 2016. Aunque no todos los chatbots tenían su propia aplicación de móvil, sino que los canales habituales donde podías encontrar estos chatbots eran Facebook Messenger, WeChat, LINE, Slack y Telegram.

Ejemplo de interacción de un chatbot basado en botones. Fuente: Dennis Snellenberg (Dribble)


¿Te puedo ayudar en este tema? Además de mis servicios de consultoría en IA Conversacional, doy formación, charlas, y mentorías.


Chatbots que conversan en lenguaje natural

Gracias a los avances en procesamiento del lenguaje natural (NLP) en determinados idiomas como el inglés o el español, los chatbots son capaces de entender expresiones escritas en lenguaje natural, por lo que la experiencia es más intuitiva y, a priori, natural, interpretando las necesidades del usuario y respondiendo de forma coherente.

En 2016, la startup api.ai fundada dos años antes fue adquirida por Google, y sería renombrada más tarde como Dialogflow[3]. Esta herramienta clave en el desarrollo de chatbots permite crear agentes que entienden lenguaje natural, utilizando técnicas de NLP para la clasificación de intents y extracción de entidades, y que eran las más avanzadas de la época.

En la actualidad, los modelos del lenguaje han supuesto un avance en tareas como la comprensión del lenguaje y generación del lenguaje.

Veamos a continuación cómo los chatbots son capaces de entendernos cuando interactuamos con ellos, explicando cómo se diseña el proceso de comunicación.

¿Cómo es el proceso de comunicación?

Cuando hablamos con un chatbot, se ponen en marcha varios procesos o pasos que permiten a la máquina entender y responder a lo que decimos, a través de una serie de turnos, simulando una conversación entre personas.

Una conversación entre personas. Fuente: elaboración propia con Midjourney v6.

Si examinamos este proceso en detalle, distinguiremos entre el enfoque tradicional, basado en una arquitectura modular, y el enfoque end-to-end (E2E), más reciente y últimamente basado en Grandes Modelos de Lenguaje (LLMs).

El proceso de comunicación tradicional

En el enfoque tradicional, el proceso de comunicación en texto se divide típicamente en tres fases o módulos en los que se aplican diferentes técnicas de NLP o aprendizaje automático (ML). Este proceso es el que encontramos habitualmente en múltiples herramientas de creación de chatbots como Dialogflow[3] o Microsoft LUIS [4]:

1. Comprensión del lenguaje natural o NLU (Natural Language Understanding): Interpreta el significado de lo que ha escrito el usuario, es decir, su intención y las palabras clave a partir del texto. Esta arquitectura tradicional también es llamada “enfoque NLU” por este módulo, ya que es clave para el éxito de la comunicación.

  • Extrae la intención del usuario: intenta clasificar la frase recibida en las intenciones conocidas, que agrupan frases con las que ha sido entrenado el chatbot. Utiliza algoritmos de Machine Learning supervisados.

  • Extrae las palabras clave o entidades relevantes utilizando técnicas como etiquetado de partes de la frase o diccionarios, o con NER (Named Entity Recognition) basados en reglas, y corpus lingüísticos.

  • Por ejemplo, en "¿Cuál es el tiempo en Madrid hoy?", la intención podría ser "consulta_clima" y la entidad extraída sería "Madrid".

2. Gestión del diálogo o DM (Dialogue Manager): Determina la acción más adecuada en base al contexto de la conversación: en qué turno estamos, cuál es la intención del usuario, qué información se ha proporcionado anteriormente, y qué información es conocida a través de otros canales o bases de datos.

  • Puede utilizar sistemas basados en reglas o modelos de aprendizaje automático. Es necesario el diseño de los comportamientos del sistema de acuerdo a las intenciones existentes.

  • Contiene políticas, en las que se decide, por ejemplo si se necesita más información, porque falte o sea ambigua, o si se puede proceder a dar una respuesta. Un ejemplo de política es la de slot-filling, una tarea en la que se preguntará por la información necesaria para completar una acción.

  • Contiene mecanismos para mantener el contexto y trackear el estado de la conversación.

  • Tiene la capacidad de conectar con fuentes externas: bases de datos, aplicaciones y dispositivos mediante APIs u otros mecanismos.

  • En el caso en que no sea capaz de ayudar porque la petición está fuera de las intenciones que conoce (fuera del dominio), se dará una respuesta de “fallback” del estilo “Lo siento, no puedo ayudarte con eso…”.

3. Generación de respuesta o NLG, o de manera más común, RG (Response Generation): Crea una respuesta apropiada en lenguaje natural, en base a la acción determinada en el paso anterior.

  • Puede utilizar plantillas de respuesta predefinidas o técnicas más avanzadas de generación de texto. En el caso de las respuestas predefinidas, habrá que diseñar una o varias respuestas para cada tipo de situación y/o comportamiento del chatbot.

La arquitectura tradicional de comunicación en chatbots basada en NLU, DM y RG. Fuente: elaboración propia.

Así, los chatbots que utilizan este proceso tradicional y estos pasos, tienen las siguientes características:

  • Cada componente se desarrolla y se optimiza por separado.

  • Permite un control más preciso sobre cada módulo o paso del proceso.

  • Puede requerir mucho trabajo manual, especialmente en la clasificación de frases en intenciones, en la creación de reglas y la gestión del diálogo.

  • Puede ser menos flexible para manejar frases nuevas, entradas inesperadas o fuera de dominio.

El proceso de comunicación E2E basado en LLMs

Desde la aparición de ChatGPT[5] en 2022, los grandes modelos del lenguaje (Large Language Models, LLMs), empiezan a aplicarse en el desarrollo de chatbots a nivel académico y empresarial.

Una de las principales aproximaciones consiste en sustituir tres de los bloques, NLU, DM y RG, por un LLM, adoptando un enfoque más unificado, en el que realizan el proceso de comunicación del tirón, o de extremo a extremo (E2E, end-to-end).

Estos modelos, estén adaptados o no para dialogar, como sí era el caso de GPT3.5 Turbo (con RLHF), son capaces de generar una respuesta plausible a cualquier interacción o turno del usuario.

¿Esto significa que un LLM es un chatbot? No exactamente, y hay algunos matices a tener en cuenta. Esto lo explicaré en un artículo próximamente.

Documentación de GPT-3.5 Turbo. Fuente: OpenAI.

De manera simplificada, estos son algunos de los procesos que realiza el LLM para dar una respuesta en lenguaje natural:

  1. Tokenización

    • Convierte la frase del usuario o entrada (en este caso, será texto) en tokens que el modelo puede procesar.

  2. Procesamiento en el LLM

    • El modelo procesa la entrada junto con el contexto de la conversación, si así se le añade, y siempre que encaje en la ventana de contexto.

    • Realiza la comprensión, la acción y la generación de respuesta en un solo paso.

  3. Decodificación

    • Convierte la salida del modelo de nuevo en texto legible.

  4. Post-procesamiento (opcional)

    • El proceso puede incluir filtros de seguridad, formateo específico o integración con sistemas externos.

    • Por ejemplo, puede ser necesario utilizar un sistema basado en RAG (Retrieval Augmented Generation) para obtener información de fuentes de conocimiento externas.

La arquitectura del proceso de comunicación end-to-end con LLMs . Fuente: elaboración propia.

Así, los chatbots que utilizan modelos basado en LLMs como sistemas E2E tienen las siguientes características:

  • Enfoque más unificado y simple.

  • Mayor flexibilidad para manejar una amplia gama de entradas y tareas.

  • Puede generar respuestas más naturales y contextuales.

  • Requiere menos diseño manual de reglas y flujos de diálogo.

  • Puede ser más difícil de controlar y puede generar alucinaciones, respuestas inesperadas o incorrectas.

Comparativa entre ambos enfoques

Entre los dos enfoques, el tradicional y el end-to-end con LLM, existen claras diferencias que resumo aquí:

  • Generación de respuesta (NLG/RG):

    • El LLM siempre da una respuesta.

    • El LLM proporciona respuestas variadas y distintas cada vez que recibe una petición.

    • El LLM tiene limitaciones con respecto a las alucinaciones, información no actualizada, no verificada (no veraz), sesgada, etc.

    • El enfoque tradicional necesita de la creación de respuestas personalizadas para cada situación, siendo una tarea tediosa y que puede dar lugar a una experiencia poco natural.

  • Gestión de diálogo (DM):

    • El LLM puede incorporar el contexto de la conversación para recordar lo hablado anteriormente y dar respuestas más contextuales. Puede tener como límite el tamaño de la ventana de contexto.

    • El LLM puede hacer uso de un sistema de RAG para dar respuestas más confiables y personalizadas.

    • El enfoque tradicional necesita de técnicas a medida para recordar el contexto de lo hablado.

    • El enfoque tradicional contiene comportamientos basados en reglas o ML, siendo éstos definidos de manera individual, acotando así las posibles respuestas del chatbot.

  • Comprensión de la intención del usuario (NLU):

    • El LLM no requiere de creación de intents ni de frases de ejemplo para poder entender al usuario.

    • El LLM puede entender otros idiomas si ha sido entrenado con datos en ese idioma.

    • El enfoque tradicional requiere de un trabajo de creación de intents para poder entender a los usuarios. Es un trabajo tedioso, y este enfoque no es escalable, pues cuando un chatbot tiene más de decenas de intents, se complica y es más difícil de actualizar.

Estas diferencias no solo se centran en las limitaciones asociadas a cada tecnología, sino que se trasladan a características clave que tenemos que tener en cuenta al desarrollar nuestro chatbot:

  • Flexibilidad: Los LLMs son generalmente más flexibles que el enfoque tradicional, y pueden manejar una gama más amplia de entradas y tareas sin necesidad de entrenamiento específico para cada dominio.

  • Control: En enfoque tradicional ofrece más control sobre cada etapa del proceso, algo clave en la industria, con chatbots que requieren alta fiabilidad en las respuestas, o donde los errores pueden tener consecuencias graves.

  • Contextualización: Los LLMs suelen ser mejores en mantener el contexto a lo largo de una conversación y en generar respuestas más naturales y contextualizadas.

  • Conocimiento: Los LLMs tienen un amplio conocimiento general incorporado, mientras que los chatbots con enfoque tradicional dependen más de bases de conocimiento específicas del dominio.

  • Requisitos computacionales: Los LLMs suelen requerir muchos más recursos computacionales, especialmente para modelos grandes. El coste económico, y el coste de recursos (electricidad, agua, etc.) asociados a este tipo de tecnología es elevado. Esto no es así en chatbots con un enfoque tradicional.

  • Interpretabilidad: Los chatbots con enfoque tradicional suelen ser más interpretables, ya que cada etapa del proceso está aislada y puede ser analizada por separado.

El futuro, ¿un proceso de comunicación híbrido?

En la industria, los chatbots modernos empiezan a adoptar un enfoque híbrido, combinando los puntos fuertes de ambos modelos, para conseguir una experiencia satisfactoria para el usuario, o para la empresa o negocio que pone a disposición del usuario este chatbot. Así, se intenta evitar problemas de confianza en situaciones de alucinaciones y datos no veraces en LLMs. Dentro de ese enfoque híbrido, hay varios modelos que están probándose, y herramientas que facilitan este tipo de desarrollo. Por ahora, parece la mejor estrategia de cara a futuro.

🗣 ¿Quieres saber más? Me gustaría desarrollar este enfoque híbrido en un artículo, déjame un comentario más abajo si te interesa el tema.


See this form in the original post

Referencias

[1] Weizenbaum, J. (1966). ELIZA—a computer program for the study of natural language communication between man and machine. Commun. ACM, 9(1), 36-45. https://doi.org/10.1145/365153.365168

[2] Quartz (2016) https://qz.com/613700/its-here-quartzs-first-news-app-for-iphone

[3] Google, Dialogflow https://cloud.google.com/dialogflow?hl=es-419

[4] Microsoft, LUIS https://www.luis.ai/

[5] OpenAI, O. (30/11/2022). Introducing ChatGPT. https://openai.com/index/chatgpt


See this gallery in the original post