Marco Chatbot: un chatbot basado en GPT-2 y NLP

Marco chatbot conversation

En el desarrollo de proyectos de IA y automatización, a veces nos encontramos con la necesidad de simplificar la interacción entre humanos y sistemas digitales. Así es como surgió Marco Chatbot, un asistente virtual diseñado para ayudar en la creación de perfiles mediante conversaciones fluidas y naturales, simulando una experiencia lo más cercana posible a la interacción humana.

Este proyecto, disponible de forma pública en GitHub, está basado en el Framework de Python FastAPI, también, utiliza el modelo de Hugging Face de openai-community/gpt2 y Spacy, la librería de software para procesamiento de lenguajes naturales (NLP). El objetivo es claro: construir un sistema que sea capaz de extraer información de los usuarios de forma eficiente y adaptada, todo ello manteniendo un lenguaje amigable y cercano.

¿Por qué Marco Chatbot?

La clave detrás de Marco Chatbot es ofrecer una experiencia de usuario óptima al momento de realizar tareas repetitivas como registrar información personal. ¿Alguna vez has pasado por un formulario tedioso donde se requiere llenar datos, uno tras otro, en una secuencia que parece interminable? Marco busca eliminar esa fricción, ofreciendo una experiencia conversacional dinámica, permitiendo a los usuarios simplemente hablar con él como lo harían con otra persona.

En lugar de hacer clic de forma interminable en campos de texto, Marco te pregunta: “¿Cómo te llamas?”, “¿Dónde vives?”, “¿Cuál es tu número de teléfono?”. Y lo mejor, comprende la forma natural en la que los usuarios responden.

La tecnología detrás de Marco

El backend de Marco está construido sobre FastAPI, lo que permite una gestión eficiente de las peticiones y respuestas en tiempo real. FastAPI ha sido clave para la rapidez de la API, algo fundamental para una interacción fluida.

En cuanto a la IA, Marco utiliza un modelo preentrenado de GPT-2, que ha sido adaptado para manejar las particularidades del idioma español y las interacciones específicas de este chatbot. Aquí entra en juego la magia de Transformers, donde el modelo genera respuestas en base a los datos ingresados por los usuarios, adaptándose según las necesidades de la conversación.

Además, para extraer entidades como nombres, ciudades o universidades de las respuestas del usuario, hemos implementado Spacy, que ofrece un reconocimiento robusto de entidades nombradas. Esto permite que Marco no solo pregunte, sino que también entienda los detalles que le proporcionan, incluso cuando se presentan en distintas formas (“Me llamo Pedro” vs. “Soy Pedro”).

¿Cómo se construye la conversación?

El flujo conversacional de Marco se gestiona mediante un sencillo pero eficiente sistema de estados. A medida que el usuario responde, el chatbot cambia su estado interno para formular la siguiente pregunta. Este sistema le permite llevar el control de qué información ya tiene y qué falta por completar.

conversation_state = {
    "state": "awaiting_name",
    "user_data": {}
}

Dependiendo del estado actual, Marco ejecuta funciones específicas para extraer la información necesaria. Este diseño asegura que cada conversación fluya de manera coherente, incluso si el usuario cambia el formato de sus respuestas.

Por ejemplo, si el estado es “awaiting_name”, Marco espera una respuesta que contenga un nombre y utiliza Spacy o expresiones regulares para identificar el nombre del usuario.

if current_state == "awaiting_name":
    extracted_name = extract_name(user_input)
    if extracted_name:
        user_data["nombre"] = extracted_name
        conversation_state["state"] = "awaiting_email"

Un paso más allá: ¿Qué viene después?

Marco Chatbot ya cumple su propósito inicial, pero el potencial de este proyecto va más allá. Con la posibilidad de integrar funcionalidades avanzadas como análisis de sentimiento o mejoras en el reconocimiento de voz, Marco puede convertirse en una herramienta mucho más poderosa para diferentes tipos de interacción, desde asistentes educativos hasta atención al cliente.

Conclusión

Marco Chatbot es un proyecto vivo, en constante evolución. Lo que empezó como una idea sencilla de facilitar la interacción con formularios, se ha transformado en una solución inteligente y adaptable que promete eliminar la fricción en el proceso de recolección de datos. Si te interesa colaborar o simplemente explorar el código, el proyecto está disponible en GitHub.