Agente IA Conversacional
Descripcion
Sección titulada «Descripcion»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 conversacion en la tabla
agent_chatporchatId. Al recibir un nuevo mensaje, carga el historial existente y lo envia como contexto al modelo. - 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.
- 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 ultimos 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 (util para Telegram).
El modulo llama directamente a la API REST de Google Gemini (generativelanguage.googleapis.com).
Configuracion
Sección titulada «Configuracion»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| 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 dinamicas. |
| prompt | text | No | Prompt adicional o pregunta para el modelo. Soporta variables dinamicas. |
| memory_schema | object | No | Esquema de campos de memoria con patrones regex para extraccion automatica. |
| 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 basico
Sección titulada «Caso basico»{ "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 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).
API Utilizada
Sección titulada «API Utilizada»- 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_promptypromptse procesan antes de la llamada al modelo. - El system prompt solo se configura una vez por conversacion (en el primer mensaje).
- El campo
continueOnErroren 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.