Saltearse al contenido

Agente IA Conversacional

Este modulo implementa un agente conversacional basado en Google Gemini con persistencia de historial y memoria inteligente. Sus caracteristicas principales son:

  1. Historial persistente: Almacena el historial de conversacion en la tabla agent_chat por chatId. Al recibir un nuevo mensaje, carga el historial existente y lo envia como contexto al modelo.
  2. Memoria con extraccion automatica: Utiliza un esquema de memoria configurable con patrones regex para extraer automaticamente informacion del usuario (nombre, email, telefono, DNI, empresa, productos de interes, ubicacion, etc.) tanto del mensaje actual como del historial completo.
  3. 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.
  4. Contexto enriquecido: Antes de cada llamada al modelo, inyecta un resumen categorizado de la memoria extraida como contexto.
  5. Truncamiento inteligente: Si el historial crece demasiado (>50000 chars), se trunca manteniendo el system prompt y los ultimos 10 mensajes.
  6. Retry con backoff: Implementa reintentos con backoff exponencial para errores 503 y 429.
  7. Escape de Markdown: La respuesta se devuelve tanto en texto plano como con caracteres Markdown escapados (util para Telegram).

El modulo llama directamente a la API REST de Google Gemini (generativelanguage.googleapis.com).

ParametroTipoRequeridoDescripcion
credentials_idcredentialsSiID de las credenciales que contienen el apiKey de Google Gemini.
system_prompttextNoPrompt del sistema que define la personalidad y comportamiento del agente. Soporta variables dinamicas.
prompttextNoPrompt adicional o pregunta para el modelo. Soporta variables dinamicas.
memory_schemaobjectNoEsquema de campos de memoria con patrones regex para extraccion automatica.
modelselectNoModelo de Gemini a utilizar. Default: gemini-2.0-flash.

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
}
}
{
"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
}
}
}
  • chatId: Identificador unico de la conversacion (requerido).
  • prompt / content: Mensaje del usuario.
  • filePath: Ruta a un archivo de imagen para analisis visual (opcional).
  • width, height, file_size: Metadatos de imagen (opcional).
  • caption: Pie de foto de la imagen (opcional).
  • Google Gemini API: POST https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent
  • Autenticacion 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 automaticamente a los ultimos 10 mensajes si supera 50000 caracteres, y a 30000 si supera 60000.
  • Las variables dinamicas en system_prompt y prompt se procesan antes de la llamada al modelo.
  • El system prompt solo se configura una vez por conversacion (en el primer mensaje).
  • El campo continueOnError en la configuracion permite que el flujo continue con un mensaje de error en lugar de detenerse.
  • Soporta imagenes en formatos: JPEG, PNG, GIF, WebP, BMP.
  • gemini - Gemini AI (modulo base sin historial)
  • Agent - Agente IA (multiproveedor)