Agente IA Conversacional
Descripción
Sección titulada «Descripción»Este modulo implementa un agente conversacional basado en Google Gemini con persistencia de historial y memoria inteligente. Sus caracteristicas principales son:
- Historial persistente: Almacena el historial de conversación en la tabla
agent_chatporchatId. Al recibir un nuevo mensaje, carga el historial existente y lo envia como contexto al modelo. - Memoria con extracción automática: Utiliza un esquema de memoria configurable con patrones regex para extraer automáticamente información del usuario (nombre, email, telefono, DNI, empresa, productos de interes, ubicación, etc.) tanto del mensaje actual como del historial completo.
- Soporte de imagenes: Puede recibir y analizar imagenes enviadas por el usuario. Las imagenes se procesan como base64 y se envian junto con el prompt al modelo Gemini.
- Contexto enriquecido: Antes de cada llamada al modelo, inyecta un resumen categorizado de la memoria extraida como contexto.
- Truncamiento inteligente: Si el historial crece demasiado (>50000 chars), se trunca manteniendo el system prompt y los últimos 10 mensajes.
- Retry con backoff: Implementa reintentos con backoff exponencial para errores 503 y 429.
- Escape de Markdown: La respuesta se devuelve tanto en texto plano como con caracteres Markdown escapados (útil para Telegram).
El modulo llama directamente a la API REST de Google Gemini (generativelanguage.googleapis.com).
Configuración
Sección titulada «Configuración»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credentials | Si | ID de las credenciales que contienen el apiKey de Google Gemini. |
| system_prompt | text | No | Prompt del sistema que define la personalidad y comportamiento del agente. Soporta variables dinámicas. |
| prompt | text | No | Prompt adicional o pregunta para el modelo. Soporta variables dinámicas. |
| memory_schema | object | No | Esquema de campos de memoria con patrones regex para extracción automática. |
| model | select | No | Modelo de Gemini a utilizar. Default: gemini-2.0-flash. |
Credenciales
Sección titulada «Credenciales»Se requiere credentials_id con un objeto que contenga apiKey (clave de API de Google Gemini, obtenible desde https://aistudio.google.com/app/apikey).
{ "nextModule": "siguiente-nodo", "data": { "chatId": "chat-123", "reply": "Texto de respuesta del modelo", "replyhtml": "Texto con Markdown escapado", "history": [], "memory": { "nombre": "Juan", "email": "juan@ejemplo.com", "empresa": "Mi Empresa S.L." }, "imageProcessed": false, "imageMetadata": null, "historyTruncated": false, "historyLength": 15 }}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso básico
Sección titulada «Caso básico»{ "credentials_id": "credencial-gemini", "system_prompt": "Eres un asistente de ventas amable. Ayuda a los clientes con informacion de productos.", "model": "gemini-2.0-flash", "memory_schema": { "nombre": { "pattern": "me llamo ([A-Za-z ]+)", "required": true }, "email": { "pattern": "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})", "required": false } }}Datos de entrada esperados
Sección titulada «Datos de entrada esperados»chatId: Identificador único de la conversación (requerido).prompt/content: Mensaje del usuario.filePath: Ruta a un archivo de imagen para análisis visual (opcional).width,height,file_size: Metadatos de imagen (opcional).caption: Pie de foto de la imagen (opcional).
API Utilizada
Sección titulada «API Utilizada»- Google Gemini API:
POST https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent - Autenticación mediante header
X-goog-api-key.
- El esquema de memoria por defecto incluye campos para: nombre, email, telefono, DNI, NIE, CIF, pasaporte, empresa, cargo, sector, productos de interes, presupuesto, urgencia, ciudad y pais.
- El historial se trunca automáticamente a los últimos 10 mensajes si supera 50000 caracteres, y a 30000 si supera 60000.
- Las variables dinámicas en
system_promptypromptse procesan antes de la llamada al modelo. - El system prompt solo se configura una vez por conversación (en el primer mensaje).
- El campo
continueOnErroren la configuración permite que el flujo continue con un mensaje de error en lugar de detenerse. - Soporta imagenes en formatos: JPEG, PNG, GIF, WebP, BMP.