Tabla de contenidos

Chatbots tradicionales

Teniendo en cuenta la imagen inferior, los chatbots tradicionales constan en realidad de cuatro elementos básicos. En el pasado reciente ha habido numerosos intentos de reimaginar esta estructura. El objetivo principal de estos intentos era relajar la rigidez de los elementos arquitectónicos fijos y codificados de un chatbot.

Comprensión del lenguaje natural (NLU)

El motor NLU facilita la comprensión de intenciones y entidades. Esta es la única parte de IA del chatbot, en la que las entradas del usuario se envían al motor NLU y las intenciones y entidades se detectan a partir de las entradas.

Normalmente hay una interfaz gráfica de usuario para definir los datos de entrenamiento del motor NLU e iniciar el entrenamiento del modelo basado en estos datos de entrenamiento. Las ventajas típicas de los motores NLU son:

  • Existen muchos modelos de código abierto.
  • Los motores de NLU ocupan poco espacio y no consumen muchos recursos; las instalaciones locales y periféricas son factibles.
  • La interfaz de usuario no es técnica y se necesitan pocos datos de entrenamiento.
  • Los NLU existen desde hace tanto tiempo que existen grandes corpus de entidades con nombre, junto con entidades predefinidas y datos de entrenamiento para sectores verticales específicos. Por ejemplo, banca, servicios financieros, recursos humanos, etc.
  • El tiempo de entrenamiento de los modelos es corto y, en un entorno de producción, los modelos pueden entrenarse varias veces al día.

Los datos de entrenamiento de NLU fueron una de las áreas en las que se introdujeron los LLM por primera vez. Los LLM se utilizaron para generar datos de entrenamiento para el modelo NLU a partir de conversaciones existentes y datos de entrenamiento de muestra.

Flujo de conversación y gestión de diálogos

El flujo y la lógica del diálogo están diseñados y construidos dentro de una GUI de nocode o lowcode. El flujo y la lógica son básicamente un flujo predefinido con puntos lógicos predefinidos. La conversación fluye según los datos de entrada coincidan con ciertos criterios de la puerta lógica.

Se ha intentado introducir flexibilidad en el flujo para dotarlo de cierta inteligencia.

Capa de abstracción de mensajes

La capa de abstracción de mensajes contiene respuestas predefinidas del bot para cada turno de diálogo. Estas respuestas son fijas y, en algunos casos, se utiliza una plantilla para insertar datos y crear mensajes personalizados.

La gestión de los mensajes supone un reto, sobre todo cuando la aplicación de chatbot crece y, debido a la naturaleza estática de los mensajes, el número total de mensajes puede ser significativo. La introducción de chatbots multilingües añade una complejidad considerable.

Cada vez que hay que cambiar el tono o el personaje del chatbot, hay que revisar y actualizar todos estos mensajes.

Esta es también una de las áreas en las que se introdujeron por primera vez los LLM para aprovechar la potencia de la Generación de Lenguaje Natural (NLG) dentro de los LLM.

Las preguntas fuera del dominio se gestionaban mediante bases de conocimiento y búsquedas de similitud semántica. Estas bases de conocimiento se utilizaban principalmente para QnA y las soluciones hacían uso de la búsqueda semántica. En muchos aspectos, esto podría considerarse como una versión temprana de RAG.

Teniendo en cuenta la imagen que se muestra a continuación, muchas organizaciones y proveedores de tecnología están realizando la transición de los Chatbots tradicionales a la introducción de Grandes Modelos de Lenguaje.

La imagen que se muestra a continuación describe los distintos elementos y características que componen un Modelo Lingüístico (LLM). En consecuencia, el reto consiste en acceder a cada una de estas características en el momento adecuado, garantizando la estabilidad, la previsibilidad y, hasta cierto punto, la reproducibilidad.

chatbot

Estructura de LangChain

Introducción

Los chatbots representan una de las aplicaciones más comunes de los modelos de grandes lenguajes (LLM).

Las capacidades fundamentales de los chatbots incluyen la realización de diálogos extensos (que requieren memoria) y con estado, y proporcionar a los usuarios respuestas pertinentes derivadas de información relevante.

El caso de uso es importante

Crear un chatbot implica evaluar diversas técnicas, cada una de las cuales ofrece ventajas y desventajas únicas.

Estas consideraciones dependen de los tipos de consultas que se espera que el chatbot aborde con eficacia.

Los chatbots suelen recurrir a la generación aumentada por recuperación (RAG) cuando acceden a datos privados para mejorar su capacidad de respuesta a consultas específicas del dominio.

Además, los diseñadores pueden optar por implementar mecanismos de enrutamiento a través de múltiples fuentes de datos, garantizando la selección del contexto más relevante para ofrecer respuestas precisas.

El uso de formas especializadas de historial o memoria de chat más allá del mero intercambio de mensajes puede enriquecer aún más las capacidades del bot.

Arquitectura básica de Chatbot

Chroma es una base de datos para construir aplicaciones de IA con embeddings, y necesita ser instalada.

Para este chatbot, OpenAI se utiliza como la columna vertebral del chatbot con el modelo gpt-3.5-turbo-1106 definido.

El código también muestra cómo se pasan los mensajes al historial de conversación. Esta idea básica sustenta la capacidad de un chatbot para interactuar conversacionalmente.

Se hace uso de la plantilla Prompt para facilitar el formateo. Y el MessagesPlaceholder como se ve a continuación inserta los mensajes de chat pasados a la entrada de la cadena como chat_history directamente en el prompt.

Ejemplo completo de LangChain

El siguiente código puede copiarse literalmente y pegarse en un cuaderno Colab. El único cambio que tendrás que hacer, es añadir tu clave API de OpenAI en la línea cuatro…

%pip install –upgrade –quiet langchain langchain-openai langchain-chroma
##########
import os
os.environ[‘OPENAI_API_KEY’] = str(«<Your API Key Goes Here>»)
##########
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(model=»gpt-3.5-turbo-1106″, temperature=0.2)

##########
from langchain_core.messages import HumanMessage

chat.invoke(
[

HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
)
]
)
########## Generate Response 1
chat.invoke([HumanMessage(content=»What did you just say?»)])
##########
from langchain_core.messages import AIMessage

chat.invoke(
[

HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
),
AIMessage(content=»J’adore la programmation.»),
HumanMessage(content=»What did you just say?»),
]
)

########## Generate Response 2
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
[
(
«system»,
«You are a helpful assistant. Answer all questions to the best of your ability.»,

),
MessagesPlaceholder(variable_name=»messages»),
]
)

chain = prompt | chat
##########
chain.invoke(
{
«messages»: [
HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
),
AIMessage(content=»J’adore la programmation.»),
HumanMessage(content=»What did you just say?»),
],
}

)
##########
demo_ephemeral_chat_history.add_user_message(
«Translate this sentence from English to French: I love programming.»
)

response = chain.invoke({«messages»: demo_ephemeral_chat_history.messages})

response
##########
demo_ephemeral_chat_history.add_ai_message(response)

demo_ephemeral_chat_history.add_user_message(«What did you just say?»)

chain.invoke({«messages»: demo_ephemeral_chat_history.messages})

En conclusión

Los grandes modelos lingüísticos (LLM) han revolucionado el desarrollo tradicional de chatbots al ofrecer capacidades sin precedentes de comprensión del lenguaje natural y, sobre todo, de generación.

A diferencia de los anteriores enfoques basados en reglas o plantillas, los LLM permiten a los chatbots comprender y generar respuestas similares a las humanas de forma dinámica, adaptándose a diversos contextos conversacionales.

Este cambio ha trastornado el desarrollo de chatbots y las arquitecturas establecidas y asentadas. Al reducir la dependencia de reglas elaboradas a mano y bases de conocimiento específicas del dominio.

Además, los LLM facilitan la creación de chatbots más sofisticados capaces de manejar una gama más amplia de consultas con mayor precisión y fluidez.

La atención de los desarrolladores se ha desplazado hacia el perfeccionamiento de los modelos, la GAR, el aprendizaje en contexto (ICL) y otras técnicas avanzadas, en lugar de centrarse únicamente en la elaboración de guiones de diálogo.


 Sígueme en LinkedIn para estar al día sobre la IA conversacional 

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

Por Cobus Greyling

Rasa Hero. NLP / NLU, Chatbots, Voz, UI / UX conversacional, Diseñador CX, Desarrollador, Interfaces de usuario ubicuas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *