Resumen Ejecutivo
Este documento detalla la configuración, el funcionamiento y los beneficios del chatbot diseñado para interactuar con sus clientes a través de WhatsApp. El chatbot utiliza la información de sus documentos cargados en PrivateGPT y el poder del modelo de lenguaje Ollama para proporcionar respuestas precisas y relevantes, actuando como un asesor virtual de su empresa.
¿Qué es este Chatbot y cómo funciona?
Este chatbot es una herramienta avanzada diseñada para mejorar la comunicación y la atención al cliente. Opera en WhatsApp y utiliza la combinación de tres componentes principales:
- Ollama: Es el modelo de lenguaje (LLM) que genera respuestas contextuales y coherentes a las consultas de sus clientes.
- PrivateGPT: Actúa como una base de conocimientos inteligente. Almacena y gestiona la información contenida en los documentos que usted le proporciona.
- Chatbot (app-node.exe): Es el componente que conecta WhatsApp con PrivateGPT y Ollama para proporcionar el servicio al cliente.
El chatbot analiza las preguntas de los clientes, consulta la base de conocimientos en PrivateGPT, genera respuestas a través de Ollama, y las entrega de forma clara y concisa en WhatsApp. El proceso se conoce como RAG (Retrieval-Augmented Generation), que implica recuperar información relevante y utilizarla para generar una respuesta.
Características Principales
- Respuestas Precisas: Utiliza la información cargada en PrivateGPT para ofrecer respuestas relevantes a las consultas de los clientes.
- Horarios Flexibles: Configurable para operar durante las horas de trabajo deseadas, adaptándose a su negocio.
- Manejo de Inactividad: Se desconecta automáticamente si no hay interacción después de un tiempo definido, liberando recursos.
- Contexto de Conversación: Mantiene el hilo de la conversación, ofreciendo respuestas coherentes a cada interacción.
- Integración con LLM: Se apoya en la potencia de Ollama para la generación de respuestas avanzadas.
- Atención 24/7 (Opcional): Con la configuración adecuada, puede ofrecer asistencia incluso fuera de horario laboral, mejorando la disponibilidad para sus clientes.
- Soporte Multilenguaje (dependiendo del modelo LLM usado en Ollama): Puede ser configurado para soportar diferentes idiomas si el modelo de lenguaje utilizado lo permite.
- Mejora continua: A medida que se carga más información en PrivateGPT y se ajustan los parámetros del modelo de Ollama, la calidad de las respuestas mejora.
- Generación de Resúmenes: Al finalizar una conversación o por inactividad, genera un resumen de la misma.
- Manejo de Escalaciones: Capacidad para dirigir la conversación a un agente humano cuando el bot no pueda resolver un problema.
Configuración Detallada
La configuración del chatbot se realiza principalmente a través de dos archivos clave: config.json
para el chatbot y settings-ollama.yaml
para PrivateGPT.
config.json
(Configuración del Chatbot)
Este archivo contiene los parámetros que controlan el comportamiento y la funcionalidad del chatbot:
{
"responseDelay": 5000,
"inactivityLimit": 120000,
"maxMessageAge": 300000,
"ESCALATION_THRESHOLD": 15,
"llmConfig": {
"url": "http://localhost:8001/v1/chat/completions",
"model": "private-gpt"
},
"llmConfigOllama": {
"url": "http://localhost:11434/api/generate",
"model": "falcon3:10b"
},
"ByeBye": "Parece que te has desconectado, ¡Hasta luego!. 😊",
"initialGreeting": "¡Hola! Soy tu asistente virtual. Estoy aquí para ayudarte con cualquier consulta sobre nuestros productos o servicios. 😊",
"defaultPrompt": "Eres un asistente que representa a ForgeNEX una empresa de informatica y consultoria y respondes a consultas de WhatsApp. Usa la información proveniente de los documentos cargados para informar al cliente sobre los servicios que ofrecemos y otra información relevante de la empresa informatica.",
"schedule": {
"monday": { "start": "07:00", "end": "23:00" },
"tuesday": { "start": "07:00", "end": "23:00" },
"wednesday": { "start": "07:00", "end": "23:00" },
"thursday": { "start": "07:00", "end": "23:00" },
"friday": { "start": "07:00", "end": "23:00" },
"saturday": { "start": "07:00", "end": "23:00" },
"sunday": null
}
}
Configuración básica del chatbot
Parámetros Clave:
responseDelay
: Tiempo (en milisegundos) que espera el bot antes de responder un mensaje. Ajuste este valor según el tiempo de procesamiento deseado.inactivityLimit
: Tiempo (en milisegundos) de inactividad tras el cual el bot envía un mensaje de despedida y se desconecta.maxMessageAge
: Tiempo máximo (en milisegundos) que debe tener un mensaje para ser procesado. Los mensajes más antiguos serán ignorados.ESCALATION_THRESHOLD
: Número de interacciones antes de preguntar al usuario si desea ser transferido a un agente humano.llmConfig
: Configuración de la API de PrivateGPT, incluyendo la URL y el modelo a utilizar.llmConfigOllama
: Configuración para conectar con la API de Ollama, también especificando URL y modelo a usar.ByeBye
: Mensaje que envía el bot al finalizar la conversación debido a inactividad.initialGreeting
: Mensaje de bienvenida que el bot envía al iniciar la conversación.defaultPrompt
: Instrucciones (prompt) que se le dan al LLM para que funcione como asistente de la empresa, es importante que este prompt sea claro y bien definido para obtener respuestas precisas y correctas.schedule
: Horario de funcionamiento del chatbot, se define un inicio y fin de dia para cada dia de la semana.
url
en llmConfig
apunte a su servidor de PrivateGPT (que corre en `localhost:8001`) y la url
en llmConfigOllama
apunte a su servidor Ollama (que corre en `localhost:11434` por defecto). Ajuste el modelo según sus necesidades.
settings-ollama.yaml
(Configuración de PrivateGPT con Ollama)
Este archivo configura la conexión de PrivateGPT con el servidor de Ollama y especifica los parámetros para la generación de texto:
server:
env_name: ${APP_ENV:ollama}
llm:
mode: ollama
max_new_tokens: 512
context_window: 3900
temperature: 0.8
embedding:
mode: ollama
ollama:
llm_model: falcon3:10b
embedding_model: nomic-embed-text
api_base: http://localhost:11434
embedding_api_base: http://localhost:11434
keep_alive: 5m
tfs_z: 1.0
top_k: 40
top_p: 0.9
repeat_last_n: 64
repeat_penalty: 1.2
request_timeout: 120.0
vectorstore:
database: qdrant
qdrant:
path: local_data/private_gpt/qdrant
Configuración para la conexión con el servidor Ollama
Parámetros Clave:
llm.mode
: Debe ser "ollama" para utilizar Ollama como modelo de lenguaje.max_new_tokens
: Número máximo de tokens que el modelo puede generar en una respuesta.context_window
: Tamaño de la ventana de contexto para el modelo.temperature
: Parámetro que controla la aleatoriedad del modelo. Un valor más bajo (cercano a 0) resulta en respuestas más predecibles y deterministas. Un valor más alto (cercano a 1) resulta en respuestas más creativas pero posiblemente menos consistentes.ollama.llm_model
: Nombre del modelo de lenguaje a utilizar desde Ollama.ollama.embedding_model
: Nombre del modelo de embeddings a utilizar desde Ollama.api_base
: URL del servidor de Ollama para la generación de texto.embedding_api_base
: URL del servidor de Ollama para la generación de embeddings.vectorstore.database
: Tipo de base de datos de vectores a usar, normalmente qdrant.qdrant.path
: Ubicación local de la base de datos de vectores qdrant.
Lógica del Chatbot (main.js
)
El archivo main.js
contiene la lógica principal del chatbot. Aquí se describen los aspectos más importantes del código:
Manejo de Conexión y Desconexión
El bot maneja las siguientes acciones al conectarse y desconectarse del servidor de WhatsApp:
- Conexión: Al conectarse el bot imprime "El cliente está listo." en la consola, y reinicia el contador de intentos de reconexión.
- Desconexión: Cuando se desconecta, el bot intenta reconectarse hasta un número máximo de veces, y con un intervalo de tiempo de espera.
- Errores de Autenticación: En caso de error de autenticación, el bot intenta reconectar tambien.
Procesamiento de Mensajes
El chatbot procesa los mensajes de la siguiente manera:
- Verificación de Bloqueo: Verifica si un cliente está bloqueado temporalmente.
- Control Manual: Verifica si el modo manual está activado para un usuario, si lo está no responderá al mensaje.
- Horario de Trabajo: Valida si la consulta se realiza dentro del horario laboral configurado.
- Mensajes Antiguos: Ignora mensajes que superan el tiempo máximo permitido.
- Saludo Inicial: Envía un saludo al usuario si es necesario, o si ha pasado un tiempo desde la ultima interacción.
- Almacenamiento de Mensajes: Guarda los mensajes de cada usuario en una lista para mantener el contexto.
- Contador de Interacciones: Registra el número de interacciones por usuario.
- Escalación a Humano: Si un usuario ha interactuado un número determinado de veces, el bot preguntará si desea escalar la consulta a un agente humano.
- Procesamiento de Mensajes con PrivateGPT: Utiliza la función
fetchResponse
para enviar la pregunta a la API de PrivateGPT y obtener una respuesta. - Respuesta al Cliente: Envía la respuesta obtenida al usuario.
- Temporizador de Inactividad: Configura un temporizador para desconectar el chat y generar un resumen en caso de inactividad.
- Manejo de Errores: Si hay un error en el procesamiento, el bot lo registrará en la consola e informará al cliente.
Generación de Resúmenes
El bot es capaz de generar resúmenes de la conversación:
- Resumen HTML: Genera un resumen en formato HTML que incluye la fecha, duración, contexto general y la conversación completa.
- Almacenamiento Local: Guarda los resúmenes en la carpeta
resumenes
con un nombre de archivo basado en el número del cliente y la fecha. - Contexto General con LLM: El resumen general se genera utilizando el LLM de Ollama, pidiéndole un resumen de la conversación.
Funciones Adicionales
-
enableHumanOverride(contact)
: Habilita el modo manual para un usuario específico durante 60 minutos, durante ese tiempo el bot no responderá y la conversación será tomada por un humano.
isWithinSchedule()
, isRecentMessage()
, fetchResponse()
, createSummaryHtml()
, y processMessages()
para una configuración y uso adecuados.
Proceso de Despliegue (Distribución Compilada)
Siga estos pasos para implementar el chatbot utilizando la distribución compilada:
- Instalación de Ollama: Descargue e instale Ollama desde su sitio web oficial.
-
Carga de Modelos de Lenguaje: Abra una terminal o línea de comandos y ejecute los siguientes comandos para cargar los modelos de lenguaje necesarios:
ollama pull falcon3:10b ollama pull nomic-embed-text:latest
Nota: Puede usar otros modelos si lo desea, pero asegúrese de configurar los modelos correspondientes en el archivo
settings-ollama.yaml
. -
Ejecución del Launcher: Ejecute el archivo
launcher.exe
. Este iniciará automáticamente los componentes necesarios. - Conexión a WhatsApp: Siga las instrucciones en la consola para escanear el código QR y conectar el bot a WhatsApp.
Acceso a Resúmenes y Carga de Documentos
Una vez que el sistema esté en funcionamiento, puede acceder a las siguientes funcionalidades a través de su navegador:
-
Resúmenes de Conversaciones: Abra su navegador web y vaya a
http://localhost:8000
para ver los resúmenes generados por el chatbot. -
Carga de Documentos: Abra su navegador web y vaya a
http://localhost:8001
para cargar y gestionar los documentos que se utilizarán como base de conocimiento en PrivateGPT.
Ventajas Clave para su Empresa
- Atención al Cliente Instantánea: Responde consultas de clientes en tiempo real, mejorando la satisfacción y reduciendo los tiempos de espera.
- Disponibilidad Continua: El chatbot puede operar incluso fuera del horario de oficina, ofreciendo soporte 24/7 y mejorando la disponibilidad de su empresa.
- Consistencia y Profesionalismo: Proporciona respuestas coherentes y profesionales, manteniendo la imagen de la empresa en todas las interacciones.
- Escalabilidad: Puede manejar un gran volumen de consultas simultáneamente, sin necesidad de contratar personal adicional.
- Reducción de Costos: Automatiza parte del servicio al cliente, reduciendo la necesidad de personal de soporte y sus respectivos costos.
- Eficiencia Mejorada: Permite a los empleados centrarse en tareas más complejas, mientras el chatbot maneja las consultas más comunes.
- Conocimiento Centralizado: Asegura que toda la información de la empresa esté disponible para los clientes de forma rápida y precisa.
- Adaptabilidad: Puede ser configurado para diferentes departamentos y servicios, adaptándose a las necesidades específicas de cada área de su empresa.
- Mejora Continua: La integración con PrivateGPT y Ollama permite actualizar la información y refinar las respuestas con el tiempo, mejorando continuamente la calidad del servicio.
Consideraciones Adicionales
- Mantenimiento: Mantenga actualizados los documentos de PrivateGPT con la información más reciente de la empresa.
- Monitoreo: Supervise regularmente el rendimiento del chatbot y ajuste los parámetros según sea necesario.
- Integración con otros Sistemas: Explore la posibilidad de integrar el chatbot con otros sistemas de la empresa para una mayor eficiencia. (Ejemplo CRM)
- Capacitación: Entrene a su equipo para comprender el funcionamiento del chatbot y cómo utilizarlo de manera efectiva.