Ir al contenido
Logotipo de mrdc.tech
mrdc.tech
Guatemalan based, for all the world

Manual de usuario · Inteligencia artificial en Odoo

Asistente de Inteligencia Artificial para Odoo 19

Cómo configurar y usar el módulo MRDC AI Base: agentes conectados a OpenAI, Google Gemini y Anthropic que consultan y modifican los datos de Odoo con herramientas, generan reportes y documentos, envían correos, ejecutan tareas programadas y misiones autónomas, aprenden de una base de conocimiento y se mantienen bajo gobernanza y presupuesto.

Plataforma: Odoo 19 · módulo mrdc_ai_base 19.0.2 Proveedores: OpenAI, Google Gemini, Anthropic, DeepSeek, xAI, Groq, Kimi, Perplexity, Ollama Autor: Rodrigo Contreras — mrdc.tech

1.Cómo usar este manual

Una guía completa para quien va a configurar el asistente, para quien lo va a usar a diario y para quien tiene que responder por lo que la inteligencia artificial hace dentro del ERP.

Este manual documenta el módulo MRDC AI Base (mrdc_ai_base), que integra modelos de lenguaje de OpenAI, Google, Anthropic y otros proveedores dentro de Odoo 19. No es un chat decorativo: el asistente tiene herramientas con las que lee y escribe datos reales de la base de datos, genera reportes y archivos, envía correos, programa trabajos recurrentes y ejecuta misiones largas de varios pasos. Por eso el manual le dedica el mismo espacio a lo que el asistente puede hacer que a cómo se limita, se aprueba y se mide lo que hace.

Está escrito para tres lectores distintos:

  • El administrador de Odoo, que instala el módulo, registra las claves de los proveedores, crea los agentes y define la gobernanza y los presupuestos (capítulos 3 a 9, 33 a 36).
  • El usuario de negocio —gerencia, ventas, contabilidad, compras—, que conversa con sus datos, pide reportes, crea registros desde el chat y recibe los correos automáticos (capítulos 10 a 20 y 26 a 31).
  • El responsable de mejorar al asistente, que cura las pistas de modelo, las recetas, la memoria y la base de conocimiento para que las respuestas sean exactas y baratas (capítulos 21 a 25 y 37 a 39).

Todas las capturas provienen de un ambiente de demostración real —la empresa ficticia Distribuidora El Quetzal, S.A., con ventas, compras, inventario, CRM y contabilidad de 2026— y todas las respuestas del asistente que aparecen son respuestas reales del modelo configurado (GPT-5.4 de OpenAI para el agente principal), obtenidas con las herramientas del módulo sobre esos datos. Los nombres técnicos de campos, herramientas y modelos aparecen en este formato.

Convención importante. En todo el manual, «el agente» es la configuración que define cómo responde la IA (modelo, instrucciones, capacidades, límites); «una herramienta» es una función concreta que el agente puede llamar dentro de Odoo (search_records, send_email, render_report…); «una tarea» es un trabajo que el agente ejecuta solo, según un horario o un evento; y «una misión» es un objetivo grande que el agente planifica y ejecuta paso a paso.

Qué encontrará en cada bloque

Puesta en marcha

Instalación, claves de proveedores, ajustes generales, modelos disponibles y la configuración de los agentes (capítulos 3 a 9).

Uso diario

El panel de chat, las consultas en lenguaje natural, reportes, documentos, registros, correos, navegación y la consulta rápida (capítulos 10 a 20).

Inteligencia curada

Pistas de modelo, recetas, memoria, base de conocimiento y el Centro de hallazgos (capítulos 21 a 25).

Automatización

Tareas programadas, aprobaciones, tareas por evento, KPIs, el caso práctico del reporte semanal y las misiones (capítulos 26 a 32).

Control

Seguridad, costos, automatizaciones internas, resolución de problemas, buenas prácticas y la referencia de herramientas (capítulos 33 a 39).

2.Qué es MRDC AI Base y cómo funciona

Un modelo de lenguaje no sabe nada de su empresa. El módulo le presta ojos y manos dentro de Odoo —con permisos, límites y registro de todo lo que hace.

Un modelo de lenguaje (GPT, Gemini, Claude…) solo sabe conversar. Lo que convierte esa conversación en trabajo útil dentro del ERP es el ciclo de herramientas: el usuario pide algo, el modelo decide qué herramienta necesita, el módulo la ejecuta dentro de Odoo con los permisos del usuario que pregunta, le devuelve el resultado al modelo, y así hasta que el modelo tiene lo suficiente para responder. Una pregunta como «¿cuánto vendimos en julio y a quién?» termina en tres o cuatro llamadas: una para recuperar una receta validada de ventas por período, otra para agrupar pedidos por cliente, y la respuesta final con los números reales y la explicación de cómo se obtuvieron.

Puntos de entrada Panel de chat (systray) Chat de IA a pantalla completa Consulta rápida Tareas programadas · eventos Misiones (deep work) Agente de IA modelo principal · rápido · de respaldo prompt del sistema + contexto memoria · conocimiento · pistas · recetas capacidades · gobernanza · presupuesto ciclo de herramientas (hasta N iteraciones) Proveedores OpenAI · Google Gemini Anthropic · DeepSeek · xAI Groq · Kimi · Perplexity Ollama (local) clave por proveedor en Ajustes ejecuta como el usuario que pregunta Herramientas dentro de Odoo (40) Lectura: modelos, campos, búsqueda, agrupación, conteo, SQL de solo lectura, recetas, pistas, conocimiento, memoria Escritura: crear, actualizar, botones, métodos, acciones de servidor, imagen en registro, hallazgos Salida: reportes, gráficas, documentos, reportes oficiales PDF/XLSX, correo, notificaciones, tareas y misiones Base de datos de Odoo — con los permisos, reglas de registro y compañías del usuario todo queda registrado: mensajes, llamadas a herramientas, tokens, costo, acciones pendientes, ejecuciones
Figura 1. Arquitectura del asistente: los puntos de entrada conversan con un agente, que llama a un proveedor de IA y ejecuta herramientas dentro de Odoo como el usuario que pregunta. Nada sale de Odoo salvo el texto que se envía al proveedor del modelo.

Las piezas, en una frase cada una

PiezaQué esDónde se administra
AgenteLa personalidad y los permisos de la IA: modelo, prompt del sistema, estilo, capacidades habilitadas, modelos de respaldo, presupuesto y gobernanza. Vienen tres de fábrica: MRDC Assistant, Ask AI y Report Generator.MRDC AI → Configuración → Agentes de IA
HerramientaUna función concreta que el agente puede invocar: buscar registros, agrupar, crear, actualizar, generar un reporte, enviar un correo… Se habilitan por bloques con las casillas de capacidades del agente.Capacidades del agente (capítulo 7) y referencia (capítulo 39)
ConversaciónEl hilo entre un usuario y un agente, con sus mensajes, adjuntos, llamadas a herramientas, tokens, costo y retroalimentación.Panel de chat · MRDC AI → Historial
Tarea programadaUn trabajo que el agente ejecuta sin nadie delante: cada N horas/días/semanas/meses o cuando ocurre un evento sobre un modelo. Puede ejecutarse en modo autónomo o dejar sus escrituras y correos en una cola de aprobación.MRDC AI → Tareas programadas · Acciones pendientes
MisiónUn objetivo grande que el agente descompone en un plan de pasos, ejecuta paso a paso con reintentos y notas de trabajo, y cuyas escrituras pueden requerir aprobación.MRDC AI → Misiones
Pista de modeloConocimiento curado sobre un modelo de Odoo: qué campos importan, cuáles no están almacenados, qué trampas hay (IVA incluido, fechas en UTC…).Configuración → Pistas de modelo
RecetaUna consulta SQL u ORM parametrizada, probada y validada por una persona, que el agente prefiere sobre consultas improvisadas.Configuración → Recetas
MemoriaHechos duraderos por usuario, por agente o por conversación: preferencias, decisiones, mapeos. También la memoria y los KPIs de cada tarea.Configuración → Memorias · pestaña Memoria de la tarea
Base de conocimientoTextos, adjuntos (PDF, Word, Excel) y registros de Odoo indexados con embeddings para que el agente cite políticas y procedimientos reales.MRDC AI → Base de conocimiento
HallazgoUna anomalía, riesgo u oportunidad que el agente detecta y registra con números, responsable y fecha límite.MRDC AI → Centro de hallazgos
Precio de modeloCosto por millón de tokens de entrada y salida de cada modelo; con él se calcula el costo de cada mensaje, ejecución y paso, y se vigilan los presupuestos.Configuración → Precios de modelos

El menú de la aplicación

Al instalar el módulo aparece la aplicación MRDC AI con los menús de la figura siguiente. El orden refleja el uso: lo conversacional primero (Chat de IA, Consulta rápida), después la automatización (Misiones, Tareas programadas, Acciones pendientes), el Historial, los dos repositorios de inteligencia (Centro de hallazgos, Base de conocimiento) y, al final, la Configuración.

Menú de la aplicación MRDC AI
Figura 2. La aplicación MRDC AI y su menú: Chat de IA, Consulta rápida, Misiones, Tareas programadas, Acciones pendientes, Historial, Centro de hallazgos, Base de conocimiento y Configuración.
Qué viaja hacia el proveedor de IA. Al proveedor solo se le envía texto: el prompt del sistema, el contexto (memoria, conocimiento, resumen de la conversación), el mensaje del usuario y los resultados de las herramientas que el modelo pidió (recortados a un máximo de caracteres). El proveedor nunca se conecta a la base de datos ni recibe credenciales de Odoo. Las herramientas se ejecutan en el servidor de Odoo con el usuario que conversa, así que la IA no puede ver ni modificar nada que ese usuario no pueda ver ni modificar.

3.Instalación y requisitos

El módulo se instala como cualquier otro de Odoo 19; lo que hay que preparar antes son las claves de los proveedores y, si se quieren todas las funciones, tres paquetes de Python.

Requisitos

RequisitoDetalle
Odoo 19 (Community o Enterprise)El módulo depende de base, web, mail y bus (notificaciones en tiempo real). Funciona en cualquier base con esas aplicaciones; aprovecha Ventas, Contabilidad, Inventario, CRM, etc. si están instaladas, pero no las exige.
Al menos una clave de proveedorUna clave de API de OpenAI, Google Gemini o Anthropic (o de DeepSeek, xAI, Groq, Kimi, Perplexity) o un servidor Ollama local. Sin clave el módulo se instala, pero el agente responde con un error al primer mensaje.
Salida a internet desde el servidorLas llamadas a los proveedores salen del servidor de Odoo (no del navegador) hacia api.openai.com, generativelanguage.googleapis.com, api.anthropic.com, etc. Si hay proxy o cortafuegos, hay que permitir esos destinos.
wkhtmltopdfEl mismo que usa Odoo para sus reportes PDF. Lo necesita la herramienta render_report para producir reportes oficiales en PDF (capítulo 13).
Paquetes de Python opcionalespypdf (indexar PDF en la base de conocimiento), openpyxl (leer Excel) y python-docx (leer Word). Sin ellos el módulo funciona y solo esas indexaciones quedan en estado de error con un mensaje claro. Se instalan con pip install pypdf openpyxl python-docx en el entorno de Odoo.
Micrófono y HTTPS (opcional)Para dictar por voz desde el panel, el navegador exige un origen seguro (HTTPS o localhost). La transcripción usa la API de audio del proveedor de OpenAI.

Instalación

  1. Copie la carpeta mrdc_ai_base a una ruta incluida en el addons_path del servidor y reinicie Odoo (o actualice la lista de aplicaciones en modo desarrollador).
  2. En Aplicaciones, busque MRDC - AI Base e instálelo. La instalación crea la aplicación MRDC AI, los tres agentes de fábrica, los temas, las pistas de modelo, las recetas de ventas y cobranza, la tabla de precios de modelos y tres acciones planificadas (capítulo 36).
  3. Vaya a Ajustes → MRDC AI, pegue la clave del proveedor que va a usar y guarde (capítulo 4).
  4. Abra MRDC AI → Configuración → Agentes de IA, elija el modelo de cada agente (el valor de fábrica es gemini-2.5-flash; cámbielo a un modelo del proveedor cuya clave registró) y active las capacidades que necesite (capítulos 6 y 7).
  5. Pulse el icono de la varita mágica en la barra superior y escriba su primera pregunta.
El módulo MRDC - AI Base en la lista de aplicaciones
Figura 3. El módulo en la lista de aplicaciones de Odoo. La versión instalada en este manual es la 19.0.2.0.0.

Actualizar a una versión nueva

Reemplace la carpeta y actualice el módulo (Aplicaciones → MRDC - AI Base → Actualizar, o -u mrdc_ai_base desde la línea de comandos). Los datos marcados como noupdate —los agentes, las pistas y las recetas de fábrica que usted haya modificado— se respetan. Las nuevas funciones suelen añadir campos a los agentes (por ejemplo los modelos de respaldo o los reportes permitidos); tras actualizar conviene revisar el formulario de cada agente y activar lo que corresponda.

Datos de demostración. El módulo no trae datos de demostración propios: conversa con los datos reales de su base. En una base de pruebas conviene cargar primero datos de ventas y contabilidad para que las respuestas tengan sustancia; en este manual se usa una empresa distribuidora con ocho meses de operaciones.

4.Configuración general: Ajustes → MRDC AI

Una sola pantalla concentra las claves de los proveedores, el agente por defecto, el modelo de embeddings, el presupuesto global y los límites de seguridad del ciclo de herramientas.

Vaya a Ajustes → MRDC AI. La sección está dividida en tres bloques: Proveedores, Valores predeterminados y Avanzado.

Ajustes de proveedores de IA
Figura 4. Bloque de proveedores: una clave por proveedor. Basta con registrar la de los proveedores que se van a usar; los demás campos pueden quedar vacíos.

Proveedores

CampoQué ponerParámetro del sistema
Google GeminiClave de API de Google AI Studio.mrdc_ai.gemini_api_key
OpenAIClave sk-… de la plataforma de OpenAI. También se usa para embeddings, imágenes y transcripción de voz.mrdc_ai.openai_api_key
AnthropicClave de la consola de Anthropic (modelos Claude).mrdc_ai.anthropic_api_key
DeepSeek · Kimi (Moonshot AI) · xAI (Grok) · Perplexity · GroqClaves de esos proveedores; todos exponen una API compatible con la de OpenAI.mrdc_ai.deepseek_api_key, …kimi…, …xai…, …perplexity…, …groq…
OllamaURL base de un servidor Ollama propio (por ejemplo http://localhost:11434) para correr modelos abiertos sin salir de la red.mrdc_ai.ollama_base_url
Las claves son secretos. Se guardan como parámetros del sistema y solo pueden leerlas los administradores. No las comparta en conversaciones con el agente: la memoria y las herramientas rechazan explícitamente guardar textos que parezcan claves, contraseñas o tokens. Rote la clave en el proveedor si sospecha que se filtró.
Valores predeterminados y ajustes avanzados
Figura 5. Valores predeterminados y ajustes avanzados: agente por defecto, embeddings de la base de conocimiento, presupuesto mensual global, calidad de imágenes y los límites del ciclo de herramientas.

Valores predeterminados

  • Agente de IA predeterminado (mrdc_ai.default_agent_id): el agente que se selecciona al abrir el panel de chat por primera vez. Si no se define, se usa el primero por secuencia (de fábrica, MRDC Assistant).
  • Embeddings de la base de conocimiento (mrdc_ai.embedding_model): modelo que convierte los textos indexados en vectores. Las opciones son text-embedding-3-small y text-embedding-3-large de OpenAI y text-embedding-004 de Gemini. Si lo cambia, reindexe las fuentes (capítulo 24), porque los vectores de modelos distintos no son comparables.
  • Presupuesto mensual de IA (mrdc_ai.monthly_budget_usd): tope global en dólares para todos los agentes, conversaciones, tareas y misiones del mes. Cuando se alcanza, cualquier llamada nueva se rechaza con un mensaje claro. 0 = sin tope (capítulo 35).
  • Calidad de generación de imágenes (mrdc_ai.image_model_quality): calidad que usa generate_image / generate_and_set_image.

Avanzado: los frenos del ciclo de herramientas

  • Máximo de iteraciones de herramientas (mrdc_ai.max_successive_calls): cuántas rondas «modelo pide herramienta → Odoo responde» se permiten por mensaje. Evita bucles en los que el modelo insiste en una consulta que falla. El valor del agente (Máx. iteraciones de herramientas, capítulo 8) tiene prioridad si está definido.
  • Máximo de herramientas por iteración (mrdc_ai.max_tool_calls_per_call): cuántas herramientas puede pedir el modelo en una sola ronda.
  • Tiempo de espera de la petición (mrdc_ai.request_timeout): segundos máximos por llamada al proveedor. Las llamadas que fallan con errores transitorios (429, 5xx) se reintentan con espera creciente hasta mrdc_ai.max_retries veces (3 por defecto).
Dónde están los otros parámetros. Algunos ajustes finos no tienen campo en la pantalla y se editan como parámetros del sistema (Ajustes → Técnico → Parámetros del sistema): mrdc_ai.mission_steps_per_cycle (pasos de misión por ciclo del cron, 3), mrdc_ai.max_retries (reintentos por llamada, 3). Los demás comportamientos se configuran en el propio agente.

5.Proveedores y modelos soportados

Nueve proveedores y unos sesenta modelos, seleccionables por agente. Lo que cambia entre ellos es el precio, la calidad del razonamiento con herramientas y si aceptan o no el parámetro de temperatura.

El desplegable Modelo del agente lista todos los modelos conocidos por el módulo, agrupados por proveedor. Cualquiera puede seleccionarse; solo funcionará si la clave del proveedor correspondiente está registrada en Ajustes. Esta es la familia soportada en la versión documentada:

ProveedorModelosNotas
OpenAIgpt-5.4, gpt-5.4-mini, gpt-5.1, gpt-5.1-mini, gpt-5.1-nano, gpt-5, gpt-5-mini, o3, o3-mini, o4-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4o, gpt-4o-miniEl mejor equilibrio calidad/herramientas en las pruebas de este manual es gpt-5.4 como principal y gpt-4.1-mini como rápido/de respaldo. La misma clave sirve para embeddings, imágenes y transcripción de voz.
Google Geminigemini-3.1-pro-preview, gemini-3-flash-preview, gemini-3.1-flash-lite-preview, gemini-2.5-pro, gemini-2.5-flash, gemini-2.0-flash, gemini-2.0-flash-lite, gemini-1.5-pro, gemini-1.5-flash, gemini-1.5-flash-8bLos agentes de fábrica vienen con gemini-2.5-flash, muy económico. Embeddings con text-embedding-004.
Anthropicclaude-opus-4-6, claude-sonnet-4-6, claude-sonnet-4-5, claude-haiku-4-5, claude-3-5-sonnet, claude-3-5-haikuExcelentes siguiendo instrucciones largas (tareas programadas con muchas reglas).
DeepSeekdeepseek-chat, deepseek-reasonerAPI compatible con OpenAI; muy bajo costo.
xAIFamilia grok-4 y grok-3 (5 modelos)API compatible con OpenAI.
Groq6 modelos abiertos (Llama, Mixtral, Gemma…) servidos a gran velocidadÚtiles como modelo rápido para resúmenes.
Kimi (Moonshot AI)4 modelosAPI compatible con OpenAI.
PerplexityFamilia sonar (5 modelos, incluidos los de razonamiento e investigación)Orientados a búsqueda; los de razonamiento no aceptan temperatura.
Ollama7 modelos abiertos locales (Llama 3, Qwen, Mistral…)Todo ocurre dentro de su red: ideal cuando los datos no pueden salir, a cambio de menos capacidad con herramientas.

Temperatura y modelos de razonamiento

El estilo de respuesta del agente (capítulo 6) se traduce en un valor de temperatura. Algunos modelos de razonamiento —gpt-5, gpt-5-mini, o1, o3, o4-mini, deepseek-reasoner, los sonar de razonamiento— rechazan ese parámetro. El módulo lo sabe y simplemente no lo envía para ellos, de modo que puede cambiar de modelo sin tocar nada más.

Precios de modelos

En Configuración → Precios de modelos está la tabla de costo por millón de tokens de entrada y de salida de cada modelo (27 precios de fábrica, editables). Con ella el módulo calcula el costo en dólares de cada mensaje, de cada ejecución de tarea y de cada paso de misión, y controla los presupuestos. Si un modelo no tiene precio, su costo se registra como cero: añada una fila si incorpora un modelo nuevo.

Lista de precios de modelos
Figura 6. Precios de modelos: costo por millón de tokens de entrada y salida. La lista es editable y se usa para calcular el costo real de cada conversación, tarea y misión.
Cómo elegir. Para un asistente general que crea y modifica registros, use el modelo más capaz que su presupuesto permita como principal y uno pequeño como rápido (resúmenes de conversación) y como respaldo (cuando el principal falla). Para tareas masivas y baratas —clasificar oportunidades, resumir notas— un modelo mini o flash suele bastar. El costo real por agente y mes se ve en el propio formulario del agente.

6.Los agentes: crear y configurar

Un agente es una configuración completa de la IA: el modelo que piensa, las instrucciones que lo gobiernan, las capacidades que tiene y los límites que no puede cruzar. Puede haber tantos como roles necesite la empresa.

Vaya a MRDC AI → Configuración → Agentes de IA. La vista kanban muestra los agentes con su avatar, descripción y modelo; de fábrica existen tres, todos marcados como agentes del sistema (no se pueden borrar, sí modificar o archivar):

  • MRDC Assistant: asistente general; consulta, analiza, navega y genera reportes. Es el candidato natural a agente predeterminado y el que más capacidades recibe.
  • Ask AI: especialista en consultas en lenguaje natural; descubre modelos y campos y responde con datos, conciso y tabular.
  • Report Generator: especialista en reportes de negocio con análisis y recomendaciones.
Kanban de agentes de IA
Figura 7. Agentes de IA en vista kanban: los tres de fábrica con su modelo y el número de conversaciones de cada uno.

El formulario del agente

El formulario tiene cinco grupos en la cabecera y un cuaderno con dos pestañas. Los grupos Enrutamiento de modelos, Costo y presupuesto y Gobernanza se explican en los capítulos 8 y 9; aquí van los dos primeros.

Formulario del agente MRDC Assistant
Figura 8. Formulario del agente MRDC Assistant con la configuración de IA, las capacidades, el enrutamiento de modelos, el costo del mes y la gobernanza.

Configuración de IA

CampoSignificado
Nombre y DescripciónComo se muestran en el selector del panel de chat. La descripción (subtítulo) ayuda al usuario a elegir el agente correcto.
AvatarImagen que acompaña a los mensajes del agente en el chat.
ModeloEl modelo principal del proveedor (capítulo 5).
Estilo de respuestaAnalítico (preciso), Equilibrado o Creativo. Se traduce en la temperatura que se envía al modelo (baja, media, alta); en los modelos que no aceptan temperatura no tiene efecto.
Límite de historialCuántos mensajes anteriores de la conversación se envían al modelo en cada turno. Lo anterior a ese límite no se pierde: se condensa en un resumen automático que el agente recibe como contexto (capítulo 20).
Agente del sistemaMarca los agentes de fábrica; impide borrarlos.
Activo y SecuenciaArchivar un agente lo oculta del selector sin perder sus conversaciones ni sus tareas (las tareas de un agente archivado no se ejecutan y lo dicen en su ejecución). La secuencia ordena el selector.

Capacidades

Siete casillas que habilitan bloques de herramientas. Se detallan en el capítulo 7; la regla general es dar a cada agente solo lo que su función exige.

La pestaña Prompt del sistema

Es la instrucción base que define la personalidad, el método de trabajo y los límites del agente. El módulo la completa automáticamente en cada petición con secciones que usted no tiene que escribir: la fecha y hora actuales en UTC, el usuario y la compañía, la memoria confirmada, el resumen de la conversación, el conocimiento curado disponible (pistas y recetas), las reglas de escritura cuando las escrituras están habilitadas, las pautas de las respuestas rápidas y, si el usuario está mirando un registro, el contexto de ese registro.

Pestaña de prompt del sistema
Figura 9. Prompt del sistema del agente MRDC Assistant: rol, capacidades y pautas de trabajo. Conviene escribirlo en el idioma en que se quiere que responda o pedirle expresamente que responda en el idioma del usuario.
Qué poner en el prompt y qué no. Ponga el rol («eres el asistente comercial de…»), el tono, las preferencias de formato (moneda, separadores, tablas) y las reglas del negocio que no cambian. No ponga conocimiento sobre modelos de Odoo (para eso están las pistas de modelo, que solo se inyectan cuando hacen falta) ni consultas concretas (para eso están las recetas) ni datos que cambian (para eso están la memoria y la base de conocimiento). Un prompt corto y estable cuesta menos tokens en cada mensaje.

La pestaña Temas y herramientas

Los temas (capítulo 33) agrupan instrucciones especializadas —consultas en lenguaje natural, generación de reportes, navegación— que se añaden al agente. Los tres agentes de fábrica ya tienen los suyos; al crear un agente nuevo puede arrastrar los que correspondan.

Crear un agente nuevo

  1. En Agentes de IA pulse Nuevo, póngale nombre, descripción y avatar.
  2. Elija el modelo principal y, en Enrutamiento de modelos, un modelo rápido y uno de respaldo (capítulo 8).
  3. Escriba el prompt del sistema: rol, tono, formato y reglas del negocio.
  4. Marque las capacidades mínimas. Para un agente de solo consulta: Herramientas de Odoo y Generación de reportes.
  5. En Gobernanza, restrinja los modelos (sale.*, account.move, res.partner) y los dominios de correo si el agente va a enviar correos (capítulo 9).
  6. Defina un presupuesto mensual y guarde. El agente aparece de inmediato en el selector del panel de chat.

7.Capacidades: qué puede hacer cada agente

Siete casillas deciden qué herramientas recibe el modelo. Cada una abre un bloque concreto; lo que no está marcado ni siquiera se le describe al modelo, así que no puede pedirlo.

Casillas de capacidades del agente
Figura 10. Capacidades del agente MRDC Assistant en el ambiente de demostración: todas activas, incluidas SQL de solo lectura y métodos y acciones de servidor.
CapacidadHerramientas que habilitaRecomendación
Habilitar herramientas de Odoo
enable_odoo_tools
Lectura y descubrimiento: get_available_models, get_fields, search_records, read_group, count_records, get_menus, get_record_link; conocimiento: get_model_hint, list_recipes, run_recipe, search_knowledge (si hay fuentes indexadas), create_insight; memoria: remember_fact, forget_fact; automatización: schedule_ai_task, list_ai_tasks, update_ai_task, start_ai_mission, list_ai_missions.La base de todo. Sin ella el agente es un chat sin acceso a datos.
Generación de reportes
enable_report_generation
generate_report (tabla HTML desde una agrupación), generate_chart (gráfica interactiva), generate_document (PDF, XLSX, CSV, TXT, HTML descargables), generate_image (imagen por IA), list_reports y render_report (reportes oficiales de Odoo en PDF, XLSX o HTML).Activar en los agentes que entregan salidas a personas.
Operaciones de escritura
enable_write_operations
create_record, update_record, update_field, get_record_actions, execute_action (botones de la vista, p. ej. confirmar un pedido), generate_and_set_image. Añade al prompt las reglas de cómo crear registros correctamente (consultar campos requeridos, líneas de documentos, verificación posterior).Solo en agentes de usuarios que ya tienen permiso de escribir en Odoo; combinar con Gobernanza (modelos permitidos, límite de registros).
Notificaciones
enable_notifications
send_notification (mensaje en la bandeja de Odoo) y send_system_notification (aviso emergente en tiempo real en la sesión del destinatario).Útil para tareas programadas que avisan a personas.
Enviar correo
enable_send_email
send_email con asunto, cuerpo HTML y adjuntos generados (documentos, reportes oficiales).Limitar los dominios de destino en Gobernanza.
SQL de solo lectura
enable_sql_queries
run_sql_query: consultas SELECT/WITH directas sobre PostgreSQL dentro de una transacción de solo lectura (capítulo 16).Para analistas. Acelera agregaciones complejas, pero no pasa por las reglas de registro de Odoo: combinar con la lista de modelos permitidos.
Métodos y acciones de servidor
enable_method_calls
get_model_methods, call_method (cualquier método público de un modelo, con argumentos), list_server_actions, run_server_action.El mayor alcance. Solo para administradores o procesos muy acotados con Métodos permitidos y Acciones de servidor permitidas.

Cómo se combinan con las tareas y las misiones

Las capacidades del agente son el techo. Cada tarea programada y cada misión tiene además sus propios permisos (Permitir operaciones de escritura, Permitir enviar correo, Permitir notificaciones) que solo pueden restringir: una tarea no puede escribir si su agente no tiene escrituras, aunque la casilla de la tarea esté marcada. Además, las tareas en modo aprobación y las misiones con aprobación de escrituras no ejecutan las herramientas de escritura ni el correo: las encolan como acciones pendientes (capítulo 28).

Las herramientas de programación se retiran en las ejecuciones desatendidas. Cuando una tarea o una misión corre sola, el módulo le quita al agente schedule_ai_task, update_ai_task, start_ai_mission, remember_fact y similares: un trabajo automático no puede crear más trabajos automáticos ni reescribir la memoria del usuario. Las tareas tienen en su lugar su propia memoria (remember, forget, save_kpis, capítulo 30).

8.Enrutamiento de modelos, costo y presupuesto del agente

Tres modelos por agente —principal, rápido y de respaldo—, un modo de selección de herramientas que ahorra tokens y un presupuesto mensual que frena el gasto antes de que duela.

Grupos de enrutamiento de modelos y costo y presupuesto
Figura 11. Enrutamiento de modelos y Costo y presupuesto del agente: modelo rápido, de respaldo, selección de herramientas, presupuesto mensual, gasto del mes en curso y tope de iteraciones.

Enrutamiento de modelos

CampoQué hace
Modelo rápidoModelo barato para trabajo auxiliar: el resumen automático de la conversación (cada 10 mensajes el módulo condensa lo anterior para no reenviar todo el historial) y otras tareas de apoyo. Si se deja vacío se usa el principal.
Modelo de respaldoModelo que se usa automáticamente cuando el principal falla por una causa del proveedor: límite de velocidad (429), error 5xx, sobrecarga, tiempo de espera agotado. El módulo registra en el log «gpt-5.4 failed …; falling back to gemini-2.5-flash» y el mensaje, ejecución o paso queda marcado con el modelo realmente usado, y su costo se calcula con el precio de ese modelo.
Selección de herramientasEnviar todas las herramientas en cada petición (por defecto) o Herramientas básicas + grupos bajo demanda. En el segundo modo el modelo recibe solo el núcleo de lectura y una meta-herramienta enable_tools(grupo) con la que pide los grupos write, reports, communication o automation cuando los necesita. Ahorra miles de tokens por mensaje en agentes con muchas herramientas, a cambio de una ronda extra cuando el modelo decide que necesita escribir o enviar.

Costo y presupuesto

  • Presupuesto mensual (USD): gasto estimado permitido para este agente en el mes calendario, sumando conversaciones, ejecuciones de tareas y pasos de misión. Al llegar al 80 % el módulo notifica una sola vez al usuario y al administrador; al 100 % rechaza las llamadas nuevas con «El agente … agotó su presupuesto mensual». 0 = sin tope.
  • Este mes (USD): el gasto real acumulado, calculado con la tabla de precios de modelos. Es un campo de solo lectura que se recalcula al abrir el formulario.
  • Máx. iteraciones de herramientas por ejecución: tope de rondas modelo↔herramientas por petición para este agente (0 = el valor global de Ajustes). Una tarea compleja con recetas suele resolverse en 8–15 rondas; un valor de 25–30 es un buen techo.

El presupuesto global de Ajustes (capítulo 4) se comprueba antes que el del agente y suma lo de todos los agentes. Los dos se evalúan al inicio de cada mensaje, ejecución o paso; una respuesta en curso nunca se corta a mitad por presupuesto.

De dónde sale el costo. Cada respuesta del proveedor trae los tokens de entrada y salida consumidos. El módulo los guarda en el mensaje (token_input, token_output), en la ejecución de la tarea y en el paso de la misión, y los multiplica por el precio del modelo usado. El costo de un mensaje se ve en el Historial (capítulo 20); el de una tarea, en su ejecución (capítulo 27); el total del agente, aquí. Todo es una estimación: la factura real la emite el proveedor.

9.Gobernanza: hasta dónde llega cada agente

Las capacidades dicen qué tipo de cosas puede hacer el agente; la gobernanza dice sobre qué y cuánto. Las políticas se evalúan en un solo lugar, tanto cuando el modelo llama a una herramienta como cuando alguien aprueba una acción pendiente.

Grupo de gobernanza del agente
Figura 12. Gobernanza del agente: modelos permitidos, métodos permitidos, acciones de servidor permitidas, reportes permitidos, dominios de correo permitidos y máximo de registros por operación.
PolíticaCómo se escribeA qué se aplica
Modelos permitidosLista separada por comas de modelos técnicos; admite comodín final: sale.*, account.move, res.partner. Vacío = cualquier modelo al que el usuario tenga acceso.A todas las herramientas que reciben model_name (búsquedas, agrupaciones, escrituras, métodos, reportes oficiales…). En run_sql_query se traduce a tablas: si la consulta toca una tabla cuyo modelo no está permitido, se rechaza.
Métodos permitidosEntradas modelo.metodo o solo metodo: sale.order.action_confirm, message_post. Vacío = comportamiento por defecto (botones de la vista y lista segura interna; call_method usa además su lista de bloqueo).execute_action y call_method.
Acciones de servidor permitidasSelección de registros de ir.actions.server. Vacío = cualquiera que el usuario pueda ejecutar.run_server_action.
Reportes permitidosSelección de reportes (ir.actions.report). Vacío = cualquier reporte que el usuario pueda imprimir.list_reports y render_report.
Dominios de correo permitidosDominios separados por comas: elquetzal.com.gt, mrdc.tech. Vacío = cualquier destinatario.send_email, incluidos los correos encolados para aprobación.
Máximo de registros por operaciónUn número. 0 = sin límite.Escrituras y métodos masivos (execute_action, call_method, run_server_action, render_report sobre registros): una llamada que afecte a más registros se rechaza.

Lo que la gobernanza no sustituye

Las políticas se suman a la seguridad de Odoo, no la reemplazan. El agente ejecuta cada herramienta con el usuario que conversa (o el usuario dueño de la tarea o misión), de modo que los grupos de acceso, las reglas de registro y las compañías permitidas del usuario siguen mandando. Hay además listas de bloqueo internas que no se pueden desactivar: call_method nunca llama a métodos privados, a unlink, write, create directos ni a modelos sensibles (usuarios, claves, parámetros, reglas, módulos); el SQL de solo lectura rechaza cualquier verbo que no sea de lectura y las tablas de credenciales.

Aprobar no salta las políticas. Cuando una acción pendiente se aprueba, el módulo vuelve a evaluar las políticas del agente en ese momento (modelos, métodos, dominios de correo, límite de registros). Si entre la propuesta y la aprobación alguien restringió el agente, la acción falla con el motivo y no se ejecuta.

10.El panel de chat

La varita mágica de la barra superior abre un panel flotante que acompaña al usuario por todo Odoo; también existe como pantalla completa en MRDC AI → Chat de IA.

Icono del asistente en la barra superior
Figura 13. El icono de la varita en la barra superior (systray) está disponible en todas las pantallas de Odoo. Un clic abre el panel; otro lo cierra.
Panel de chat abierto sobre una vista de Odoo
Figura 14. El panel abierto sobre la lista de pedidos de venta: cabecera con el agente, barra de contexto («Puedo ver lo que estás viendo»), zona de mensajes con sugerencias y la caja de entrada con adjuntos, captura de pantalla y micrófono.

Anatomía del panel

ZonaQué contiene
CabeceraAvatar y nombre del agente activo; botones Historial, Nuevo chat, Maximizar/Restaurar, Minimizar y Cerrar. El panel se puede redimensionar arrastrando sus bordes y recuerda tamaño, posición y si estaba plegado.
Barra de agentePíldoras con los agentes disponibles; un clic cambia de agente y abre una conversación nueva con él.
Barra de contextoAparece cuando el usuario está en una vista de un modelo: «Puedo ver lo que estás viendo» con el modelo y el registro actuales. Un clic en el icono de la mira captura los datos visibles (capítulo 17).
MensajesBurbujas del usuario y del agente, en orden cronológico. Las del agente muestran HTML enriquecido (tablas, negritas, enlaces), gráficas interactivas, imágenes, los adjuntos generados con botón de descarga y, al pie, los pulgares de retroalimentación. Arriba del todo, el botón Cargar anteriores trae mensajes más antiguos de a 30.
Línea de tiempo de progresoMientras el agente trabaja, una lista en vivo muestra cada herramienta que está llamando («Buscando en sale.order», «Ejecutando receta …», «Generando documento», «Enviando correo») con su estado, y el botón Cancelar.
Respuestas rápidasSugerencias de seguimiento que el agente propone al final de algunas respuestas; un clic las envía.
EntradaCaja de texto multilínea (Enter envía, Mayús+Enter salta de línea), clip para adjuntar archivos, cámara para capturar la pantalla actual y micrófono para dictar.

Historial y búsqueda

El botón Historial despliega las conversaciones recientes del usuario con el agente, con un buscador por título; al seleccionar una, se cargan sus mensajes. Cada fila tiene un icono de papelera para borrarla. Las conversaciones son privadas de cada usuario: nadie más las ve en el panel, y en el menú Historial de la aplicación solo el administrador ve las de todos (capítulo 34).

Historial de conversaciones dentro del panel
Figura 15. El historial dentro del panel: conversaciones recientes con el agente, buscador y borrado.

Maximizar

El botón de maximizar amplía el panel a casi toda la ventana, cómodo para leer reportes y tablas largas. El menú MRDC AI → Chat de IA ofrece además una pantalla completa con la lista de conversaciones a la izquierda y la conversación a la derecha.

Panel maximizado con un reporte
Figura 16. Panel maximizado mostrando una respuesta con tabla y gráfica.

Adjuntar archivos

Con el clip se adjuntan hasta 10 archivos por mensaje, de máximo 15 MB cada uno y 40 MB en total. Se aceptan imágenes (PNG, JPG, GIF, WebP), PDF, Word, Excel, CSV y texto; el módulo comprueba el tipo real del archivo, no solo la extensión, y rechaza lo demás con un mensaje en español. Las imágenes se envían al modelo como imágenes (los modelos con visión las interpretan); los documentos de texto se transcriben al contexto; los demás se describen. El agente puede, por ejemplo, leer una factura en PDF adjunta y crear el proveedor y la factura de compra.

Capturar la pantalla

El botón de la cámara toma una captura de la vista actual de Odoo y la adjunta al mensaje: sirve para preguntar «¿qué significa este error?» o «¿por qué esta factura está en este estado?» sin copiar nada. En las vistas que no son formulario, lista ni kanban —tableros, informes dinámicos, pantallas especiales— el panel la toma automáticamente al enviar, porque ahí no hay registros que capturar como datos.

Dictar por voz

El micrófono graba audio en el navegador (requiere HTTPS o localhost y permiso del usuario) y al detenerlo lo transcribe con el servicio de audio de OpenAI; el texto aparece en la caja de entrada para revisarlo antes de enviar. El idioma por defecto de la transcripción es español.

Cancelar una respuesta

Si el agente se está tardando —una cadena larga de herramientas, una consulta pesada— el botón Cancelar de la línea de tiempo pide la cancelación. El módulo la atiende en la siguiente frontera de herramienta: el ciclo se detiene, la conversación recibe el mensaje «⏹️ Respuesta cancelada por el usuario» y nada de lo que estaba por escribirse se escribe.

Línea de tiempo de progreso con el botón Cancelar
Figura 17. Línea de tiempo en vivo mientras el agente encadena herramientas, con el botón Cancelar al pie.

Retroalimentación

Debajo de cada respuesta del agente hay dos pulgares. Marcar 👍 o 👎 guarda la retroalimentación en el mensaje (solo el dueño de la conversación puede hacerlo), y con 👎 el panel pide opcionalmente un comentario. Esa señal queda en el Historial para que el responsable del asistente revise las respuestas malas y mejore prompts, pistas y recetas (capítulo 38).

Pulgares de retroalimentación bajo una respuesta
Figura 18. Retroalimentación 👍/👎 al pie de una respuesta del agente.

11.Conversar con los datos: consultas en lenguaje natural

Pregunte como le preguntaría a un analista. El agente descubre el modelo, elige la receta o la agrupación correcta, ejecuta la consulta con sus permisos y explica de dónde salió cada número.

Las respuestas de este capítulo son reales, obtenidas en el ambiente de demostración con el agente MRDC Assistant (GPT-5.4) sobre los datos de 2026 de Distribuidora El Quetzal. Cada figura muestra la pregunta tal como se escribió y la respuesta tal como llegó.

Ventas del mes y clientes principales

Consulta de ventas de julio y clientes principales
Figura 19. «¿Cuánto vendimos en julio de 2026 y cuáles fueron los 3 clientes principales?». El agente usa la receta validada sales_orders_in_period para el total y una agrupación por cliente para el ranking, y advierte que una cifra es sin IVA y la otra con IVA, ofreciendo unificar la base.

Vale la pena detenerse en ese último detalle: el agente no solo responde, declara la base de cálculo (pedidos confirmados, sin impuestos) y señala la inconsistencia entre dos fuentes. Eso sale de las pistas de modelo (capítulo 21), que le enseñan que amount_total incluye impuestos y amount_untaxed no.

Cuentas por cobrar vencidas

Consulta de clientes con facturas vencidas
Figura 20. «¿Qué clientes tienen facturas vencidas y cuánto deben en total?». Respuesta con la tabla de deudores ordenada de mayor a menor, la factura más antigua de cada uno y el total; en el segundo turno el agente cruza los días de mora con la política de crédito de la base de conocimiento y recomienda acciones.

Existencias y rotación

Consulta de existencias y ventas de café
Figura 21. «¿Cuántos quintales de café oro tenemos y cuánto hemos vendido mes a mes? ¿Para cuántas semanas alcanza?». Combina inventario (stock.quant) con líneas de pedido agrupadas por mes y calcula la cobertura.

Oportunidades del CRM con Ask AI

Consulta de oportunidades abiertas con el agente Ask AI
Figura 22. El agente Ask AI (GPT-4.1 mini, estilo analítico) responde cuántas oportunidades abiertas hay, cuánto suman y cuáles son las tres mayores.

Cómo razona el agente una consulta

  1. Entender qué se pide y en qué modelo vive: si duda, llama a get_available_models o lee la pista del modelo con get_model_hint.
  2. Preferir una receta. Si existe una receta validada que responde la pregunta (list_recipes / run_recipe), la usa: es más barata y está aprobada por una persona.
  3. Si no hay receta, construye la consulta con read_group (totales, promedios, conteos por grupo), search_records (listas con campos concretos) o count_records; y si tiene SQL habilitado y la agrupación es compleja, run_sql_query.
  4. Responder con contexto: cuántos registros encontró, qué filtros aplicó, qué base de cálculo usó, y un enlace directo (get_record_link) cuando nombra un documento.
Consejos para preguntar. Diga el período con fechas o nombres de mes claros («julio de 2026», «la semana pasada»), la moneda si hay varias, si quiere montos con o sin IVA, y cuántos resultados quiere («los 10 mayores»). Si una respuesta no le convence, pregunte «¿de dónde salió ese número?»: el agente repite la base de cálculo y los filtros, y puede corregir el criterio en el siguiente turno.

12.Reportes, gráficas, documentos e imágenes

Con la capacidad de generación de reportes el agente devuelve tablas formateadas, gráficas interactivas y archivos descargables —PDF, Excel, CSV, texto, HTML— construidos a partir de los datos que acaba de consultar.

Reportes en tabla y gráficas

generate_report ejecuta una agrupación sobre un modelo (dominio, campos a sumar, agrupar por, ordenar, límite) y la devuelve como tabla HTML con título; generate_chart hace lo mismo pero dibuja una gráfica de barras, líneas, pastel o dona que se renderiza dentro del chat con Chart.js y se puede abrir a pantalla completa con un clic.

Reporte de ventas por mes con gráfica
Figura 23. El agente Report Generator produce la tabla de ventas confirmadas por mes de 2026 (sin impuestos y número de pedidos) y la gráfica de barras correspondiente, con un comentario de los hallazgos principales.

Documentos descargables

generate_document crea un archivo y lo adjunta al mensaje con un botón de descarga: PDF a partir de HTML (tablas, encabezados, estilos), XLSX a partir de una matriz de filas (la primera fila son los encabezados), CSV, TXT y HTML. El adjunto queda en el mensaje de la conversación y su identificador puede pasarse a send_email o send_notification para enviarlo.

Excel de facturas pendientes generado por el agente
Figura 24. «Hazme un Excel con las facturas pendientes de cobro…»: el agente consulta las facturas, arma la hoja con número, cliente, vencimiento, días vencida y saldo, añade la fila de total y adjunta el archivo descargable.

Imágenes

generate_image crea una imagen a partir de una descripción (relación de aspecto y calidad configurables) y la muestra en el chat; generate_and_set_image hace lo mismo y la guarda en el campo de imagen de un registro —por ejemplo la foto de un producto que no la tiene—, lo que requiere la capacidad de escritura. Ambas usan el proveedor de OpenAI.

Tres maneras de obtener un reporte: cuál usar

NecesidadHerramientaResultado
Ver una tabla o gráfica rápida en el chatgenerate_report / generate_chartHTML y gráfica en la conversación; sin archivo.
Un archivo a medida para enviar o archivargenerate_documentPDF, XLSX, CSV, TXT o HTML con el diseño que el agente decida.
El reporte oficial de Odoo (factura, libro de ventas, estado de cuenta…)render_report (capítulo 13)El mismo PDF o Excel que imprime Odoo, con el formato y el papel de la empresa.
Los archivos generados son adjuntos de Odoo. Quedan guardados como ir.attachment ligados al mensaje de la conversación; se descargan desde el chat y siguen disponibles en el Historial. Si una tarea programada los genera, quedan en la ejecución y en el correo que los envía.

13.Reportes oficiales de Odoo: facturas, libros y estados de cuenta

Cualquier reporte que Odoo sepa imprimir —la factura, el libro de ventas de la SAT, un estado de cuenta, una orden de compra— el agente puede generarlo en PDF, Excel o HTML, adjuntarlo y enviarlo por correo, sin que nadie abra el asistente del reporte.

Los reportes de Odoo son registros de ir.actions.report. Hay dos familias: los que se imprimen sobre registros (la factura, el pedido, la orden de compra) y los que se piden a través de un asistente con parámetros (los libros de la SAT de l10n_gt_extra, los reportes contables con fechas, el libro mayor). El agente maneja las dos con dos herramientas:

  • list_reports: lista los reportes disponibles (nombre, identificador XML, modelo, formatos) filtrando por modelo o por texto; para los reportes de asistente muestra además los campos del asistente y cuáles son obligatorios.
  • render_report: genera el reporte en pdf, xlsx (cuando el reporte tiene versión Excel) o html (que además devuelve el contenido para incrustarlo en un correo). Para reportes sobre registros se pasan los ids; para los de asistente, los valores del asistente —y los campos relacionales aceptan nombres, no solo ids: «Facturas de Cliente (FEL)», «IVA por ventas 12%».

El libro de ventas de la SAT por correo

Conversación que genera el libro de ventas y lo envía por correo
Figura 25. «Envíame el libro de ventas de julio de 2026 en PDF y en Excel…». El agente localiza el reporte Libro de ventas de l10n_gt_extra, crea el asistente con el diario, el impuesto, las fechas y el folio, lo genera en los dos formatos y envía el correo con ambos adjuntos y el total del libro en el cuerpo.
Correo enviado con el libro de ventas adjunto
Figura 26. El correo tal como queda en Odoo: asunto, resumen del total en el cuerpo y los dos adjuntos (.pdf y .xlsx) generados por el reporte oficial.

Cómo lo hace por dentro

  1. Resuelve el reporte por id, por identificador XML (l10n_gt_extra.action_reporte_ventas) o por nombre exacto, y comprueba las políticas: Reportes permitidos y Modelos permitidos del agente.
  2. Si el modelo del reporte es un asistente, lo crea con los valores recibidos (resolviendo nombres a ids y avisando si un nombre es ambiguo o no existe), llama a su método de impresión (print_report, export_xls… detectados automáticamente o indicados en wizard_method) y usa los datos y el contexto que ese método devuelve —exactamente lo que haría el botón en pantalla.
  3. Renderiza con el motor de reportes de Odoo (_render_qweb_pdf / _render_qweb_html) o captura la exportación Excel del asistente. Para reportes sobre registros verifica que el usuario pueda leerlos y respeta el máximo de registros por operación.
  4. Guarda el resultado como adjunto y devuelve su id; el agente lo pasa a send_email o lo deja descargable en el chat.
Requisitos. El PDF necesita wkhtmltopdf operativo en el servidor (igual que los reportes normales de Odoo). Los asistentes con folio —como el libro de ventas— no llevan cuenta de los folios usados: indique el folio inicial en la instrucción o en la tarea programada, o deje que el agente lo guarde en su memoria entre corridas.

14.Crear y modificar registros desde el chat

Con la capacidad de escritura el agente crea contactos, pedidos, facturas y cualquier registro, actualiza campos y pulsa los botones de la vista. Lo hace con su usuario, con verificación posterior y, si así se configura, con aprobación humana.

Un contacto nuevo en dos turnos

Creación de un cliente desde el chat
Figura 27. «Crea el contacto 'Abarrotes El Trébol, S.A.' como cliente de Chimaltenango…». El agente consulta los campos del modelo, crea el registro, verifica los valores guardados y devuelve el enlace directo; en el segundo turno actualiza el campo de notas con update_field.
El contacto creado, abierto en Odoo
Figura 28. El contacto tal como quedó en Odoo, con la nota interna añadida en el segundo turno.

Las herramientas de escritura

HerramientaPara quéProtecciones
create_recordCrear un registro con un diccionario de valores; las líneas (pedido, factura) se pasan como lista de diccionarios.Convierte tipos según el campo, ignora el campo name cuando lo asigna una secuencia (no rompe la numeración de documentos), devuelve los valores guardados y pide al agente verificarlos.
update_fieldCambiar un solo campo: es la herramienta preferida.Valida tipo y existencia del campo; explica errores del ORM en lenguaje claro (p. ej. un campo no almacenado).
update_recordCambiar varios campos a la vez, incluidas líneas.Igual que la anterior; las líneas aceptan comandos de creación, actualización y borrado.
get_record_actions + execute_actionDescubrir los botones de la vista (Confirmar, Validar, Registrar pago…) y ejecutarlos sobre uno o varios registros.Solo métodos que aparecen como botones o en la lista segura, o en Métodos permitidos; respeta el máximo de registros por operación.
generate_and_set_imageGenerar una imagen por IA y guardarla en el campo de imagen de un registro.Requiere escritura y la clave de OpenAI.

Las reglas que el agente recibe

Cuando la escritura está habilitada, el prompt del sistema incorpora automáticamente una sección de operaciones de escritura que el modelo debe seguir: consultar siempre get_fields antes de crear (campos requeridos, solo lectura, relaciones); resolver clientes y productos por nombre y confirmar el correcto antes de usarlos; crear las líneas de un documento junto con el documento; verificar lo guardado y corregir con update_record si algo no coincide con la intención; no inventar campos ni valores; no ejecutar un botón sin antes descubrirlo con get_record_actions; y reportar siempre qué cambió, con el enlace al registro.

Confirmaciones y aprobación

En el chat, el agente pregunta antes de actos con consecuencias (confirmar un pedido, validar una factura, cambiar muchos registros) salvo que el usuario ya lo haya pedido explícitamente. En tareas programadas en modo aprobación y en misiones con aprobación de escrituras las herramientas de escritura no se ejecutan: cada llamada se convierte en una acción pendiente con una vista previa «valor actual → valor propuesto», que una persona aprueba o rechaza (capítulo 28).

Responsabilidad. El agente escribe con los permisos del usuario. Si un usuario puede borrar facturas, el agente que habla con él también puede (a través de los botones y métodos que ese usuario tenga). Restrinja con Modelos permitidos, Métodos permitidos y el máximo de registros por operación, y active la escritura solo en los agentes que la necesitan.

15.Métodos y acciones de servidor: el mayor alcance

Cuando ninguna herramienta dedicada encaja, la capacidad de métodos y acciones de servidor deja al agente llamar a cualquier método público de un modelo y ejecutar las acciones de servidor del menú «Acción», con listas de bloqueo que no se pueden apagar.

Las cuatro herramientas

HerramientaQué hace
get_model_methodsLista los métodos públicos de un modelo con su firma (parámetros), filtrando por un texto. El agente la usa antes de llamar a un método para no adivinar nombres ni argumentos.
call_methodLlama a un método público sobre uno o varios registros (o sobre el modelo) con argumentos posicionales y con nombre. El resultado se serializa con criterio: recordsets como listas de id/nombre, acciones de ventana como «devolvió una acción», valores simples tal cual.
list_server_actionsLista las acciones de servidor (ir.actions.server) ejecutables: automatizaciones, entradas del menú Acción, acciones de correo, actividad o código, con su modelo.
run_server_actionEjecuta una acción de servidor por id sobre los registros indicados, igual que el menú Acción de la interfaz.

Ejemplo real: una nota interna en la oportunidad

La tarea por evento del capítulo 29 califica cada oportunidad nueva del CRM y publica su análisis como nota interna. No existe una herramienta «publicar nota», así que el agente usa call_method sobre crm.lead.message_post con el cuerpo en HTML y el subtipo de nota. La figura muestra las llamadas registradas en la ejecución.

Llamadas a herramientas de la ejecución por evento
Figura 29. Pestaña de llamadas a herramientas de la ejecución: lectura de la oportunidad, historial del cliente y la llamada a call_method con message_post, con su duración y el tamaño del resultado.

Lo que nunca se permite

  • Métodos privados (que empiezan por _) ni los métodos de bajo nivel create, write, unlink, read, search y similares: para eso están las herramientas dedicadas, que validan y registran.
  • Modelos sensibles: usuarios, grupos, reglas de acceso, claves de API, parámetros del sistema, módulos, adjuntos de sistema, el propio módulo de IA.
  • Lo que no esté en Métodos permitidos o Acciones de servidor permitidas cuando esas listas están definidas, ni más registros que el máximo por operación.
Cuándo activarla. Es la capacidad de mayor alcance; concédala a agentes de administradores o a agentes de propósito muy acotado con las listas de permitidos llenas (por ejemplo, «solo crm.lead.message_post y sale.order.action_confirm»). En las tareas en modo aprobación, call_method y run_server_action también pasan por la cola de acciones pendientes.

16.SQL de solo lectura

Para agregaciones complejas, uniones y cubos por fecha que el ORM hace pesados, el agente puede consultar PostgreSQL directamente —solo leer, dentro de una transacción de solo lectura y con las tablas sensibles vetadas.

Consulta SQL de ventas por vendedor
Figura 30. «Usa una consulta SQL para darme las ventas netas por vendedor en 2026…». El agente escribe la consulta con unión a res_users y res_partner, la ejecuta con run_sql_query y presenta ventas, número de pedidos y ticket promedio.

Cómo se protege

  1. La consulta debe empezar por SELECT o WITH; cualquier otro verbo se rechaza antes de tocar la base.
  2. Una lista de palabras prohibidas bloquea modificaciones y funciones peligrosas (insert, update, delete, drop, alter, copy, pg_sleep, pg_read_file, dblink, set…) y las tablas de credenciales (res_users_apikeys, auth_totp, ir_config_parameter, cualquier cosa con password).
  3. Se ejecuta dentro de un punto de guardado con SET LOCAL transaction_read_only = on: aunque algo se colara, PostgreSQL impide escribir; al terminar se revierte el punto de guardado, así que no deja rastro en la transacción.
  4. Se aplica un límite de filas (200 por defecto, ajustable en la llamada) y las políticas del agente: si Modelos permitidos está definido, las tablas de la consulta deben corresponder a modelos permitidos.
  5. Se registran la consulta, la duración y el tamaño del resultado en las llamadas a herramientas de la conversación o de la ejecución.
Lo que SQL no ve. El SQL directo no pasa por las reglas de registro de Odoo (por ejemplo, las de multiempresa o las de «solo mis documentos»); sí respeta los permisos de la conexión de la base. Por eso la capacidad está pensada para analistas y administradores, y conviene acompañarla de Modelos permitidos. Para usuarios con acceso parcial a los datos, prefiera las recetas (capítulo 22), que una persona valida y que pueden ser SQL u ORM.

Cuándo prefiere SQL y cuándo no

El agente recurre a SQL cuando la pregunta exige agrupar por semanas o trimestres, cruzar varios modelos, calcular percentiles o promedios móviles, o cuando una agrupación del ORM devolvió demasiadas filas. Para consultas sencillas sigue usando read_group y search_records, que conocen etiquetas, monedas y traducciones. Las pistas de modelo le indican en qué tabla vive cada cosa (sale_order, account_move, account_partial_reconcile…) y qué trampas evitar.

17.Contexto de pantalla y navegación

El panel sabe dónde está el usuario. Puede leer el registro o la lista que tiene delante, responder sobre «esta factura» sin que nadie copie el número y devolver enlaces que abren directamente el menú o el documento correcto.

«Puedo ver lo que estás viendo»

Cuando el usuario está en una vista de un modelo, el panel muestra la barra de contexto con el modelo y, si es un formulario, el registro abierto. Al enviar un mensaje, el módulo captura el contexto —modelo, tipo de vista, id del registro o ids visibles y dominio de la lista— y lo entrega al agente como texto: «El usuario está viendo el pedido S00042 de Hotel Vista al Lago…». Con el icono de la mira el usuario fuerza una captura de los datos visibles antes de preguntar. Así funcionan preguntas como «¿por qué este pedido no se puede facturar?» o «resume las oportunidades de esta lista».

Panel con contexto de un pedido de venta abierto
Figura 31. El panel abierto sobre un pedido de venta: la barra de contexto indica el registro que el agente puede ver y la pregunta se responde sobre ese pedido sin nombrarlo.

Enlaces que abren Odoo

Dos herramientas hacen que el agente no solo hable sino que lleve al usuario al lugar correcto:

  • get_menus: busca entre los menús a los que el usuario tiene acceso (por palabras: «facturas cliente») y devuelve el id y la ruta completa; el agente responde con un enlace /odoo/ir.ui.menu/ que abre ese menú.
  • get_record_link: devuelve la URL directa de un registro (/odoo//). El agente la usa cada vez que nombra un documento que acaba de crear o modificar.
Respuesta con enlace al menú de facturas de cliente
Figura 32. «Llévame a la lista de facturas de cliente vencidas y sin pagar»: el agente devuelve el enlace al menú Contabilidad → Clientes → Facturas y explica qué filtros aplicar para ver solo las vencidas.
Chat de IA a pantalla completa. En MRDC AI → Chat de IA no hay contexto de pantalla (no se está mirando ningún registro), pero sí todo lo demás: selector de agente, lista de conversaciones, adjuntos y descargas. Es la vista cómoda para sesiones largas de análisis.

18.Correo y notificaciones

El agente envía correos con cuerpo HTML y adjuntos, mensajes a la bandeja de Odoo y avisos emergentes en tiempo real. Todo queda registrado y, en las tareas en modo aprobación, todo pasa primero por una persona.

HerramientaQué haceCapacidad
send_emailEnvía un correo (destinatarios, asunto, cuerpo HTML, adjuntos por id) a nombre del usuario a través del servidor de correo saliente de Odoo. Crea un registro mail.mail que queda en Ajustes → Técnico → Correos electrónicos con su estado.Enviar correo
send_notificationPublica un mensaje en la bandeja de entrada de Odoo de usuarios internos (por login), con adjuntos opcionales. Si no se indica destinatario, al propio usuario.Notificaciones
send_system_notificationMuestra un aviso emergente (toast) en la sesión web de los destinatarios al instante, con nivel (info, éxito, aviso, peligro) y opción de que no se cierre solo.Notificaciones
Correos enviados por el agente en la lista técnica de correos
Figura 33. Los correos enviados por el asistente en el ambiente de demostración: el reporte semanal, el libro de ventas con adjuntos, la asignación de hallazgos y los avisos de tareas y misiones.

Reglas y límites

  • Los destinatarios se limpian (espacios, separadores, duplicados) y, si el agente tiene Dominios de correo permitidos, cualquier dirección fuera de esos dominios se rechaza con el motivo.
  • Los adjuntos solo pueden ser los generados en la misma conversación o ejecución (documentos, reportes oficiales, gráficas exportadas): el agente no puede adjuntar archivos arbitrarios de la base.
  • En el chat, la regla por defecto es confirmar destinatario y contenido con el usuario salvo que ya los haya dado explícitamente; las instrucciones de una tarea pueden indicar «envía sin confirmar» porque ahí no hay nadie a quien preguntar.
  • En tareas en modo aprobación y en misiones con aprobación de escrituras, send_email se encola como acción pendiente con el asunto y el cuerpo completos visibles en la vista previa; se envía al aprobar.
  • El envío real depende del servidor de correo saliente de Odoo. Si no hay ninguno o falla, el correo queda en estado de error en la lista técnica y la herramienta devuelve el aviso; la tarea lo refleja en su respuesta.
Correos que el módulo envía por su cuenta. Además de los que pide el agente, el módulo notifica por mensaje interno al dueño cuando una tarea termina (si Notificar al completar está activo), cuando una tarea deja acciones pendientes de aprobación, cuando una misión espera aprobación del plan, termina o falla, y cuando un agente llega al 80 % de su presupuesto.

19.Consulta rápida

Una pregunta, una respuesta, sin abrir una conversación: el asistente de Consulta rápida es la vía más corta para un dato puntual, y si la respuesta vale la pena se guarda como conversación.

En MRDC AI → Consulta rápida se abre un asistente con el selector de agente y una caja para la pregunta. Preguntar a la IA ejecuta el mismo ciclo de herramientas del chat y muestra la respuesta formateada, los adjuntos generados, las herramientas que se usaron y los tokens consumidos. Nueva pregunta limpia el formulario y Guardar en conversación crea una conversación con ese intercambio para seguirla después en el panel.

Asistente de consulta rápida con la pregunta escrita
Figura 34. El asistente de Consulta rápida con el agente seleccionado y la pregunta antes de enviarla.
Respuesta de la consulta rápida
Figura 35. La respuesta: texto formateado, resumen de herramientas usadas y tokens, con los botones Nueva pregunta y Guardar en conversación.
Cuándo usarla. Para un dato aislado que no necesita seguimiento («¿cuántas facturas vencidas hay hoy?»), o cuando se quiere lanzar la misma pregunta con varios agentes y comparar. La consulta rápida también puede abrirse desde un registro (lleva el modelo y el id como contexto) mediante una acción de servidor o un botón personalizado.

20.Historial de conversaciones

Cada conversación queda guardada con sus mensajes, adjuntos, llamadas a herramientas, tokens, costo y retroalimentación. Es la materia prima para auditar y para mejorar al asistente.

MRDC AI → Historial lista las conversaciones: nombre (el agente lo deduce del primer mensaje), agente, usuario, número de mensajes y última actividad. Un usuario normal ve solo las suyas; el administrador ve todas.

Lista de conversaciones en el Historial
Figura 36. El Historial con las conversaciones del ambiente de demostración: consultas, reportes, altas de registros, correos, navegación, memoria y programación de tareas.

La conversación por dentro

El formulario muestra la pestaña Mensajes con cada turno: fecha, rol (usuario, asistente, sistema), contenido y tokens de entrada y salida. Al abrir un mensaje del asistente se ve su contenido renderizado en HTML, el texto original y, en Llamadas a herramientas, cada herramienta invocada con sus argumentos, su resultado (recortado), la duración en milisegundos y el tamaño del resultado; además el costo estimado en dólares, el modelo realmente usado y la retroalimentación 👍/👎 con su nota.

Formulario de una conversación con sus mensajes
Figura 37. Una conversación abierta: los mensajes con rol, fecha y tokens; cada mensaje del asistente conserva las llamadas a herramientas, el costo y la retroalimentación.

Resumen automático

Para que una conversación larga no cueste más a cada turno, el módulo genera cada 10 mensajes un resumen de lo anterior con el modelo rápido del agente y lo guarda en la conversación. Al siguiente mensaje, el agente recibe el resumen más los últimos mensajes (según el límite de historial del agente), no todo el hilo. Los datos confirmados —«el cliente es X», «la fecha acordada es Y»— sobreviven así aunque el mensaje original ya no se reenvíe.

Qué hacer con el Historial

  • Auditar: qué preguntó quién, qué herramientas se ejecutaron, qué registros se tocaron y cuánto costó.
  • Mejorar: filtrar las respuestas con 👎, leer la llamada que falló o el número que salió mal, y convertir la lección en una pista de modelo, una receta o una línea del prompt (capítulo 38).
  • Reutilizar: abrir una conversación antigua desde el panel y continuarla; el agente recupera el resumen y el contexto.

21.Conocimiento curado I: pistas de modelo

Una pista de modelo es lo que un consultor experimentado le contaría a un analista nuevo sobre un modelo de Odoo: qué campos importan, cuáles engañan y dónde está el dato correcto. El agente la recibe justo cuando va a usar ese modelo.

Los modelos de lenguaje conocen Odoo en general, pero no los detalles que deciden si un número es correcto: que amount_invoiced de un pedido no está almacenado y además incluye IVA, que los cobros conciliados desde el extracto no crean account.payment, que date_order está en UTC y un día de Guatemala va de las 06:00 a las 05:59 UTC del siguiente. Las pistas de modelo (Configuración → Pistas de modelo) guardan ese conocimiento por modelo técnico.

Lista de pistas de modelo
Figura 38. Pistas de modelo de fábrica: sale.order, sale.order.line, account.move, account.move.line, account.partial.reconcile y res.partner.

Cómo llegan al agente

  • Cuando el agente llama a get_fields o a una herramienta sobre un modelo que tiene pista, el módulo adjunta la pista al resultado. El agente la lee en el momento exacto en que la necesita, sin gastar tokens en los modelos que no toca.
  • El agente también puede pedirla directamente con get_model_hint; el prompt del sistema le recomienda hacerlo antes de get_fields cuando una receta falla.
  • La sección «Conocimiento curado» del prompt le dice qué modelos tienen pista y qué recetas existen, para que sepa que están ahí.
Formulario de una pista de modelo
Figura 39. La pista de account.move: tipos de documento, estados, fechas, montos con y sin impuestos y la trampa de los cobros conciliados desde el banco.

Escribir una buena pista

  1. Empiece por la tabla y los estados que cuentan («solo posted»).
  2. Liste los campos que importan y diga de cada uno si está almacenado, en qué moneda y si incluye impuestos.
  3. Escriba las TRAMPAS en mayúsculas: lo que parece correcto y no lo es, con la alternativa correcta.
  4. Añada las convenciones locales: zona horaria, cómo se llama al cliente (commercial_partner_id), qué excluir (anticipos, secciones).
  5. Pruebe: haga la pregunta que antes salía mal y compruebe que ahora el agente cita la pista.
Pistas frente a prompt. Todo lo que ponga en una pista no tiene que estar en el prompt del sistema, y solo cuesta tokens cuando el modelo toca ese modelo. Conviene mover al formato de pista cualquier párrafo del prompt que empiece con «cuando consultes facturas…».

22.Conocimiento curado II: recetas

Una receta es una consulta parametrizada que una persona probó y validó. El agente la prefiere sobre cualquier consulta improvisada: es más exacta, más barata y repetible.

En Configuración → Recetas viven las consultas validadas. Cada una tiene un nombre técnico (sales_confirmed_by_week), una descripción de lo que devuelve, un tipo (SQL o ORM), la consulta, sus parámetros y el último resultado de prueba. El módulo trae diez recetas de ventas, facturación, cobranza y cartera:

RecetaQué devuelveParámetros
sales_confirmed_by_weekVentas confirmadas (sin IVA) por semana ISO, con número de pedidos.date_from, date_to
sales_orders_in_periodPedidos confirmados en el período: orden, cliente, monto sin IVA, fecha.date_from, date_to
invoiced_by_periodFacturación emitida (facturas menos notas de crédito, sin IVA) en el período.date_from, date_to
invoices_in_periodDetalle de facturas y notas de crédito publicadas en el período.date_from, date_to
collections_in_periodCobros aplicados a facturas de cliente en el período (con IVA), por conciliación parcial.date_from, date_to
collections_by_weekCobrado por semana ISO.date_from, date_to
invoice_backlog_by_orderPedidos confirmados con saldo por facturar: total, facturado, saldo y días desde la confirmación.
receivable_open_invoicesFacturas de cliente con saldo pendiente: cliente, número, fechas, días vencida, saldo.
receivable_aging_bucketsCartera por antigüedad (al día, 1-30, 31-60, 61-90, más de 90), monto y número de facturas.
top_debtorsPrincipales deudores con saldo, factura más antigua y máximo de días vencidos.limit
Lista de recetas
Figura 40. Las recetas de fábrica, todas en estado Validada tras probarlas en la base de demostración, con el número de ejecuciones y la última fecha de uso.

Anatomía de una receta

Formulario de una receta SQL
Figura 41. La receta sales_confirmed_by_week: consulta SQL con los marcadores %(date_from)s y %(date_to)s, definición de parámetros en JSON y botones Probar y Validar.
  • Tipo SQL: una consulta de solo lectura con marcadores con nombre (%(date_from)s). Se ejecuta con la misma protección de solo lectura del capítulo 16 (sin la comprobación de palabras prohibidas, porque la validó una persona).
  • Tipo ORM: un JSON con modelo, dominio, campos y agrupación que se ejecuta con formatted_read_group; respeta reglas de registro y multiempresa, ideal para usuarios con acceso parcial.
  • Parámetros (JSON): nombre, tipo (date, datetime, int, float, str, bool), si es obligatorio y valor por defecto; los valores today y now se resuelven al ejecutar.
  • Probar ejecuta con parámetros de muestra y guarda el resultado; Validar la marca como validada (solo entonces el agente la ve); Volver a borrador la retira del catálogo sin borrarla.
Último resultado de prueba de una receta
Figura 42. Pestaña Último resultado tras pulsar Probar: filas reales devueltas por la consulta con los parámetros de muestra.

Cómo las usa el agente

El prompt del sistema le muestra el catálogo de recetas validadas (nombre, descripción y parámetros). Ante una pregunta, el agente llama a run_recipe con el nombre y los parámetros en JSON y recibe las filas; si necesita explorar, list_recipes con un texto. En las instrucciones de una tarea programada se puede obligar a usar recetas («usa SIEMPRE las recetas validadas con run_recipe»), como en el caso práctico del capítulo 31: eso convierte un reporte que antes costaba veinte llamadas exploratorias en seis llamadas exactas.

Crear recetas a partir de una ejecución

En la ejecución de una tarea (capítulo 27) el botón Extraer recetas recorre las consultas SQL y las agrupaciones que el agente hizo en esa corrida y las propone como recetas en borrador, con sus parámetros detectados. Es la forma más rápida de capitalizar una consulta que salió bien: se revisa, se prueba, se valida y a partir de ahí el agente la reutiliza.

Recetas y gobernanza. Una receta ORM respeta todo lo que respeta Odoo. Una receta SQL corre como el usuario de la base; por eso solo los administradores pueden crearlas y validarlas, y el agente únicamente puede ejecutar las validadas y con los parámetros declarados.

23.Memoria: lo que el agente no vuelve a preguntar

Preferencias del usuario, decisiones confirmadas, hechos de la empresa. La memoria guarda lo que debe sobrevivir a la conversación y lo inyecta en el contexto de las siguientes —con ámbitos, caducidad y un filtro que rechaza secretos.

Tres ámbitos

ÁmbitoQué guardaQuién lo ve y quién lo escribe
UsuarioPreferencias y hechos del usuario: «prefiere montos sin IVA», «su zona es Occidente», «el comparativo siempre contra el año anterior».Solo ese usuario; lo escribe él (o el agente en su nombre con remember_fact).
AgenteHechos compartidos por todos los usuarios de un agente: «la empresa se llama…», «los montos van en quetzales», «el corte semanal es el lunes 07:00».Todos los usuarios del agente lo leen; solo los administradores pueden crearlo o borrarlo (para que nadie envenene el contexto común).
ConversaciónHechos válidos solo en ese hilo: «en esta conversación 'el cliente' es Hotel Vista al Lago».El dueño de la conversación.
El agente guardando una preferencia en memoria
Figura 43. «Recuerda que cuando te pida reportes de ventas siempre quiero el comparativo contra el mismo período del año anterior»: el agente confirma y guarda el hecho con remember_fact en el ámbito del usuario.
Lista de memorias
Figura 44. Configuración → Memorias: ámbito, usuario, agente, clave, valor, origen y caducidad. Los administradores ven todas; cada usuario, las suyas.

Cómo funciona

  • Al inicio de cada petición el módulo añade al prompt la sección «Memoria (hechos confirmados antes; no volver a preguntar)» con las memorias vigentes del usuario, del agente y de la conversación.
  • El agente guarda con remember_fact(clave, valor, ámbito) y borra con forget_fact(clave); la clave hace de identificador: guardar de nuevo la misma clave actualiza el valor.
  • Un filtro de secretos rechaza valores que parezcan claves de API, contraseñas o tokens, y lo dice.
  • La caducidad (Expira el) permite hechos temporales: «durante agosto la promoción es…»; las memorias vencidas se ignoran.
  • El origen indica quién la creó: el usuario, el agente o el resumen automático.
Memoria de las tareas. Las tareas programadas no usan esta memoria (no hay usuario delante): tienen la suya propia, por tarea, más las instantáneas de KPIs de corridas anteriores (capítulo 30). En las ejecuciones desatendidas remember_fact no está disponible.

24.Base de conocimiento (RAG): políticas, manuales y registros

Textos, documentos adjuntos y registros de Odoo indexados con embeddings para que el agente responda «según la política de crédito…» citando lo que la empresa escribió, no lo que el modelo supone.

MRDC AI → Base de conocimiento administra las fuentes. Cada fuente se trocea en fragmentos, cada fragmento se convierte en un vector con el modelo de embeddings de Ajustes y se guarda con su texto. Cuando el agente llama a search_knowledge, el módulo combina dos búsquedas —semántica (coseno entre vectores) y léxica (texto completo en español)— y devuelve los pasajes más relevantes con su fuente, para que el agente los cite.

Lista de fuentes de conocimiento
Figura 45. Fuentes de conocimiento del ambiente de demostración: una política comercial en texto, un manual de cobranza en PDF y el catálogo de productos como registros, todas indexadas con su número de fragmentos.

Tipos de fuente

TipoQué indexaNotas
TextoUn texto pegado en la propia fuente: políticas, procedimientos, preguntas frecuentes, glosarios.Lo más directo; se reindexa al guardar cambios.
AdjuntoUn archivo de Odoo: PDF (pypdf), Word (python-docx), Excel (openpyxl), CSV o texto.El texto extraído se trocea; si falta el paquete de Python la fuente queda en error con el aviso.
RegistrosRegistros de un modelo (dominio + campos a incluir, con límite): productos con su descripción, artículos de conocimiento, plantillas de correo, contratos…Con Actualización automática el cron diario los reindexa; respeta la compañía.
Formulario de una fuente de conocimiento de tipo texto
Figura 46. La fuente «Política comercial y de crédito 2026»: tipo texto, compañía, estado indexado, modelo de embeddings usado y el botón Indexar ahora.
Fragmentos de una fuente indexada
Figura 47. Pestaña Fragmentos: los trozos en que se dividió la fuente, con su título y texto. Son los pasajes que el agente recupera y cita.

El agente citando la política

Respuesta del agente basada en la base de conocimiento
Figura 48. «¿Cuál es nuestra política de crédito para clientes nuevos y qué plazo damos a los supermercados?»: el agente busca en la base de conocimiento y responde con los términos exactos de la política —tres compras de contado, límites iniciales, 30 días estándar y 45 para cadenas con contrato— citando la fuente.

Permisos y multiempresa

  • Cada fuente tiene compañía; una regla de registro hace que los usuarios solo vean y busquen en las fuentes de sus compañías (o las globales).
  • Al devolver un pasaje de un adjunto, el módulo comprueba que el usuario pueda leer ese adjunto; al devolver uno de un registro, que pueda leer ese registro. Lo que no puede ver, no se le muestra ni al agente que le responde.
  • La herramienta search_knowledge solo se ofrece al agente cuando existe al menos una fuente indexada: así no gasta tokens describiéndola en bases sin conocimiento.
Buenas fuentes. Documentos cortos y concretos (una política, un procedimiento) rinden más que un manual de 200 páginas. Póngales nombre descriptivo: el nombre acompaña al pasaje y ayuda al agente a decidir si es pertinente. Y reindexe tras cambiar el modelo de embeddings.

25.Centro de hallazgos

Cuando el agente detecta algo que merece atención —un cliente que cruza los 30 días de mora, un producto que se agota, una semana atípica— no solo lo menciona en un correo: lo registra como hallazgo con números, responsable, fecha límite y estado.

MRDC AI → Centro de hallazgos es una bandeja de trabajo. Cada hallazgo tiene severidad (información, aviso, crítico), categoría (ventas, cobranza, facturación, inventario, compras, otros), una explicación con los datos que lo sustentan, una acción recomendada, el monto involucrado, el registro relacionado (cliente, producto, documento), el responsable, una fecha límite y el estado (nuevo, visto, hecho, descartado).

Kanban del Centro de hallazgos
Figura 49. El Centro de hallazgos en kanban: tarjetas por severidad con categoría, monto, registro relacionado, responsable y fecha límite.
Formulario de un hallazgo crítico de cobranza
Figura 50. Un hallazgo crítico de cobranza: explicación, acción recomendada, monto, cliente relacionado (con botón para abrirlo), responsable y fecha límite; botones Marcar como visto, Marcar hecho, Descartar.

Quién los crea

  • El agente, con la herramienta create_insight, desde una conversación o —sobre todo— desde una tarea programada: «si algún cliente supera 30 días de mora, registra un hallazgo crítico». El hallazgo guarda el agente, la tarea y la ejecución que lo generaron.
  • Una persona, a mano, para usarlo como bandeja de pendientes del negocio.

Deduplicación

Si el agente vuelve a detectar el mismo hallazgo (mismo nombre y mismo registro) dentro de 14 días, no crea otro: incrementa el contador de ocurrencias y actualiza la fecha de última vez visto. Una tarea diaria de cobranza no llena la bandeja de duplicados; muestra cuántos días seguidos un cliente aparece en mora.

Flujo de trabajo

Nuevo Visto Hecho ·Descartado

Al asignar un responsable, el módulo le envía una notificación interna («Te asignaron…»). Los filtros Abiertos, Críticos y Mis hallazgos, y las agrupaciones por severidad, categoría y estado, sirven para repartir el trabajo. Los hallazgos respetan la compañía.

26.Tareas programadas: el agente trabaja solo

Un reporte cada lunes a las 07:00, un seguimiento de cobranza diario, una calificación de cada oportunidad nueva. La tarea programada le da al agente instrucciones, un horario o un disparador, permisos propios y una memoria, y deja constancia de cada corrida.

MRDC AI → Tareas programadas lista las tareas con su agente, dueño, modo, disparador, intervalo, próxima y última ejecución, último estado y acciones pendientes. Una tarea puede crearse a mano desde este menú o desde el chat, pidiéndoselo al agente (herramienta schedule_ai_task).

Lista de tareas programadas
Figura 51. Las tareas del ambiente de demostración: el reporte semanal de ventas (semanal, autónomo), el seguimiento de cobranza (diario, con aprobación), la calificación de oportunidades (por evento) y el resumen mensual de compras creado desde el chat.

El formulario

Formulario de la tarea Reporte semanal de ventas
Figura 52. La tarea «Reporte semanal de ventas»: agente y dueño, modo de ejecución, programación, permisos y el botón Ejecutar ahora; los contadores muestran las ejecuciones y las acciones pendientes.
Grupo / campoSignificado
Agente y UsuarioEl agente que ejecuta y el usuario con cuyos permisos corre la tarea y a quien se notifica. Una tarea de cobranza debe pertenecer a alguien de contabilidad; una de gerencia, a gerencia.
Modo de ejecuciónAutónomo: las escrituras y correos permitidos se ejecutan de inmediato. Aprobación: las escrituras, los métodos, las acciones de servidor y los correos se encolan como acciones pendientes y la tarea queda en pendiente de aprobación (capítulo 28).
Tipo de disparadorProgramación (cada N horas, días, semanas o meses a partir de Próxima ejecución) o Evento (se ejecuta sobre registros de un modelo cuando una acción de servidor la dispara; capítulo 29).
Intervalo y Próxima ejecuciónLa próxima ejecución se guarda en UTC y la interfaz la muestra en la zona del usuario; el agente recibe además la hora local en el contexto. Tras cada corrida se suma el intervalo.
PermisosPermitir notificaciones, Permitir enviar correo, Permitir operaciones de escritura: recortan las capacidades del agente para esta tarea. Notificar al completar envía un mensaje interno al dueño con el resumen de cada corrida. Límite de historial de KPIs: cuántas instantáneas de corridas anteriores se inyectan (capítulo 30).
Pestaña InstruccionesEl texto que recibe el agente en cada corrida (más el contexto automático de la tarea). Para tareas por evento, aquí van también el modelo disparador, los minutos de deduplicación y la acción de servidor generada.
Pestaña Memoria y Pestaña EjecucionesLos hechos que la tarea guardó para sí misma y la lista de corridas con fecha, estado, tokens y costo.
Pestaña de instrucciones de la tarea
Figura 53. Las instrucciones del reporte semanal: parámetros, fuentes (recetas obligatorias), memoria, validaciones, formato del correo y reglas de redacción. Cuanto más concreta la instrucción, más barata y estable la corrida.

Lo que el agente recibe además de las instrucciones

En cada corrida el módulo antepone un contexto de tarea: nombre, fecha y hora local del inicio (en la zona del dueño), programación, modo de ejecución, permisos, la memoria de la tarea y las últimas instantáneas de KPIs, y unas reglas fijas —un error de herramienta no es una «inconsistencia de datos», no hay que revisar crons ni la cola de correo, las reglas se aplican literalmente, los correos no llevan destinatarios de relleno como «». Esas reglas nacieron de corridas reales que fallaron por interpretaciones demasiado creativas.

Programar desde el chat

Programación de una tarea desde el chat
Figura 54. «Programa una tarea que cada día 2 de mes a las 08:00 envíe a gerencia un resumen de compras…». El agente primero pregunta dos precisiones (fuente y formato) y, con la respuesta, crea la tarea con schedule_ai_task y confirma la próxima ejecución en hora local.

La herramienta acepta nombre, instrucciones, intervalo, primera ejecución (fecha, día de la semana, día del mes y hora local), modo y permisos. Tiene sus propias salvaguardas: rechaza instrucciones con marcadores sin rellenar (, ), una tarea semanal sin día de la semana toma el día de hoy, una mensual el día de hoy, y la hora por defecto es las 08:00 local. list_ai_tasks y update_ai_task permiten pausar, reanudar o reprogramar desde la conversación.

Ejecutar ahora y desactivar

El botón Ejecutar ahora lanza una corrida inmediata (sin mover la programación) y abre la ejecución resultante: es la forma de probar una tarea nueva. Desmarcar Activo la pausa sin borrar su historial; archivar el agente también la detiene.

El cron. La acción planificada «MRDC AI: Run Scheduled Agent Tasks» corre cada 10 minutos, toma las tareas vencidas de una en una con bloqueo (dos servidores no ejecutan la misma) y cada corrida confirma su resultado por separado: si una tarea falla, las demás siguen. Las corridas por evento se encolan y el mismo cron las procesa con reserva y reintento.

27.Ejecuciones: qué pasó en cada corrida

Cada corrida de una tarea deja una ejecución con la respuesta completa del agente, cada herramienta que llamó, los tokens, el costo, el instantánea de KPI, las acciones encoladas y el error si lo hubo.

Formulario de una ejecución exitosa
Figura 55. La ejecución del reporte semanal: estado, inicio y fin, tokens de entrada y salida, costo estimado y la respuesta final del agente (resumen de lo enviado).

Estados

En cola En ejecución Éxito ·Pendiente de aprobación ·Error
  • En cola: corridas por evento esperando a que el cron las tome.
  • En ejecución: con una reserva (lease) de tiempo; si el servidor muere a mitad, otro trabajador la retoma cuando la reserva vence, hasta un máximo de dos intentos; después queda en error con el motivo.
  • Éxito: el agente terminó y, si corresponde, envió lo que debía.
  • Pendiente de aprobación: terminó dejando acciones en la cola (modo aprobación).
  • Error: el agente no pudo terminar (proveedor caído sin respaldo, presupuesto agotado, agente archivado, excepción interna); el detalle está en la pestaña Error.

Las pestañas

PestañaContenido
RespuestaEl texto final del agente, renderizado.
Acciones en colaLas acciones pendientes que dejó esta corrida, con tipo, resumen y estado; botones Aprobar todo y Rechazar todo en la cabecera.
Instantánea de KPIEl JSON que el agente guardó con save_kpis (capítulo 30).
Llamadas a herramientasLa traza completa: herramienta, argumentos, resultado (hasta 6.000 caracteres), duración en ms y tamaño del resultado. Es lo primero que hay que leer cuando un número sale mal.
ErrorEl mensaje de error, si lo hubo.
Llamadas a herramientas de una ejecución
Figura 56. Llamadas a herramientas de la ejecución del reporte semanal: las recetas ejecutadas con sus parámetros, el guardado de KPIs y el envío del correo, cada una con su duración.

Retroalimentación y recetas

La ejecución admite retroalimentación (👍/👎 y nota) del dueño, igual que los mensajes del chat, y el botón Extraer recetas propone como recetas en borrador las consultas SQL y agrupaciones de la corrida (capítulo 22). Una corrida buena se convierte así en un activo reutilizable; una mala, en una pista de modelo o una corrección de las instrucciones.

Costo por corrida. El reporte semanal del caso práctico, con recetas obligatorias, resuelve todo en 14 llamadas (11 recetas, el guardado de KPIs, el documento y el correo), consume unos 71.000 tokens de entrada y 7.000 de salida y cuesta 0,22 USD con GPT-5.4; la misma tarea sin recetas, explorando con get_fields y read_group, necesitaba más del doble de llamadas. El costo exacto está en cada ejecución.

28.Modo aprobación y acciones pendientes

El agente propone, una persona decide. En modo aprobación cada escritura, método, acción de servidor o correo se convierte en una acción pendiente con vista previa, que se aprueba o rechaza desde Odoo —de forma idempotente y sin saltarse las políticas.

La tarea «Seguimiento de cobranza» del ambiente de demostración corre en modo aprobación: revisa la cartera, y para cada cliente con saldo vencido propone una nota de seguimiento en el contacto y un correo a contabilidad. Nada de eso se ejecuta solo: queda en MRDC AI → Acciones pendientes.

Lista de acciones pendientes
Figura 57. Acciones pendientes: tarea, tipo de acción, resumen y estado, con los botones Aprobar y Rechazar en cada fila y los filtros Pendientes, por tarea y por estado.
Formulario de una acción pendiente de actualización de campo
Figura 58. Una acción pendiente de tipo actualizar campo: tarea, ejecución, tipo, resumen y las pestañas Vista previa, Carga útil, Resultado y Error.
Vista previa de una acción pendiente
Figura 59. La vista previa muestra el valor actual del campo y el valor propuesto, para decidir sin abrir el registro.

Qué se encola

Tipo de acciónOrigen
Crear registro · Actualizar registro · Actualizar campocreate_record, update_record, update_field
Ejecutar acción · Llamar método · Acción de servidorexecute_action, call_method, run_server_action
Generar y asignar imagengenerate_and_set_image
Enviar correo · Enviar notificaciónsend_email, send_notification

Las herramientas de lectura, los reportes y los documentos se ejecutan normalmente: lo que se encola es solo lo que cambia datos o sale de Odoo. El agente recibe como resultado de la herramienta «quedó en cola como acción pendiente #N» y sigue trabajando; su resumen final lista lo propuesto.

Aprobar y rechazar

  • Aprobar ejecuta la acción en ese momento como el dueño de la tarea, vuelve a evaluar las políticas del agente (modelos, métodos, dominios de correo, límite de registros) y guarda el resultado o el error en la propia acción.
  • Antes de ejecutar, comprueba que el registro no cambió desde que el agente lo propuso (compara la fecha de modificación guardada al encolar): si alguien lo editó entretanto, la acción falla con «el registro cambió» para no pisar trabajo ajeno.
  • La aprobación es idempotente y con bloqueo: dos personas pulsando Aprobar a la vez no ejecutan dos veces; la segunda recibe «ya no está pendiente».
  • Rechazar la descarta con su estado. Aprobar todo / Rechazar todo en la tarea o en la ejecución resuelven todas las pendientes de una vez.
  • Al encolar, el módulo deduplica: la misma acción con los mismos argumentos en la misma corrida no se encola dos veces (clave de idempotencia con índice único), aunque el modelo la repita.
Cuándo usar cada modo. Use aprobación para tareas nuevas, para todo lo que escribe en registros maestros (contactos, productos, precios) y para correos a terceros. Pase a autónomo cuando varias corridas seguidas hayan propuesto exactamente lo que usted habría aprobado. Las tareas de solo lectura y reporte (como el reporte semanal) pueden ser autónomas desde el principio.

29.Tareas por evento: reaccionar a lo que pasa en Odoo

En lugar de un horario, un disparador: cuando se crea una oportunidad, cuando se confirma un pedido, cuando llega una factura. La tarea recibe los registros que la dispararon, se deduplica y se procesa en cola con reintentos.

Tarea por evento sobre crm.lead
Figura 60. La tarea «Calificación de oportunidades nuevas»: tipo de disparador Evento, modelo crm.lead, minutos de deduplicación y la acción de servidor generada con el botón Crear acción de servidor.

Cómo se arma

  1. Cree la tarea con Tipo de disparador = Evento, elija el modelo (por ejemplo crm.lead) y los minutos de deduplicación: el mismo registro no vuelve a disparar la tarea dentro de esa ventana aunque se guarde varias veces.
  2. Pulse Crear acción de servidor. El módulo genera una acción de servidor de código sobre ese modelo que llama a run_for_records(records) de la tarea. Esa acción aparece en el menú Acción de la lista del modelo (para dispararla a mano sobre una selección) y puede engancharse a una automatización de Odoo (al crear, al actualizar, al cambiar de etapa) si la aplicación de automatizaciones está instalada.
  3. Escriba las instrucciones pensando en que «los registros disparadores vienen en el contexto del evento»: el agente recibe el modelo, los ids y los nombres de los registros.

Qué pasa al dispararse

  • run_for_records descarta los registros ya procesados dentro de la ventana de deduplicación, crea una ejecución en cola con los ids y despierta el cron.
  • El cron toma la ejecución con bloqueo, la marca en ejecución con una reserva de tiempo y la corre con el agente y el dueño de la tarea. Si el trabajador muere, la reserva vence y otro la retoma (máximo dos intentos).
  • El agente trabaja con el contexto del evento y sus herramientas; en la demostración, lee la oportunidad, el historial del cliente y publica una nota interna con call_methodmessage_post.
Nota interna publicada por el agente en una oportunidad
Figura 61. La oportunidad con la nota interna que dejó el agente: prioridad sugerida, historial de compras y mora del cliente, monto esperado y siguiente paso.
Ideas de tareas por evento. Calificar y asignar oportunidades nuevas; revisar que un pedido confirmado tenga dirección, plazo y precios coherentes y avisar al vendedor; leer la factura de proveedor recién cargada y comparar con la orden de compra; redactar el resumen de un ticket de soporte al cerrarse; proponer la descripción de venta de un producto nuevo. Empiece en modo aprobación.

30.Memoria y KPIs de las tareas

Una tarea que corre cada semana debe recordar los criterios que fijó y los números de la semana pasada. Tiene su propia memoria y guarda una instantánea de KPI en cada corrida; ambos se le inyectan en la siguiente.

Memoria de la tarea

En la pestaña Memoria de la tarea hay pares clave/valor con su origen. Los crea el agente con la herramienta remember(clave, valor) durante una corrida («criterio de ventas: pedidos confirmados sin IVA; las cotizaciones no cuentan») o una persona a mano, y se borran con forget. En cada corrida el contexto de la tarea los lista bajo «Memoria de la tarea», de modo que una decisión de criterio tomada en agosto sigue aplicándose en noviembre.

Pestaña Memoria de una tarea
Figura 62. La memoria de la tarea «Reporte semanal de ventas»: el criterio de ventas guardado para que todas las corridas midan lo mismo.

Instantáneas de KPI

La herramienta save_kpis recibe un objeto plano de indicadores —en el caso práctico: period, sales_untaxed, invoiced_untaxed, collected, backlog_untaxed, receivable_total, receivable_60_plus, orders_count, invoices_count— y lo guarda en la ejecución (pestaña Instantánea de KPI). El campo Límite de historial de KPIs de la tarea define cuántos instantáneas anteriores se inyectan en la siguiente corrida (por defecto los últimos 8).

Instantánea de KPI de una ejecución
Figura 63. La instantánea de KPI de la corrida del reporte semanal: los indicadores con los que la próxima corrida calculará la variación contra la semana anterior.

Para qué sirven juntos

  • Comparativos baratos y coherentes: «vs. semana anterior» sale dla instantánea, no de una consulta nueva que podría usar un criterio distinto; las instrucciones del caso práctico dicen «usa las instantáneas cuando existan y la receta cuando no».
  • Validaciones entre corridas: el agente puede detectar que la cartera subió 40 % en una semana y señalarlo como incidencia o hallazgo.
  • Continuidad de criterio: si en una corrida se decidió excluir anticipos, la memoria lo conserva y la instrucción no tiene que reescribirse.
Diseñar los KPIs. Pida al agente, en las instrucciones, un objeto plano con nombres estables en inglés o español sin espacios, montos como números (no texto con «Q») y el período como cadena legible. Así la instantánea se compara sin ambigüedad y puede exportarse después a una hoja de cálculo con una consulta sencilla sobre las ejecuciones.

31.Caso práctico: el reporte semanal de ventas por correo

De principio a fin: una tarea que cada lunes a las 07:00 envía a gerencia un correo HTML con ventas, facturación, cobranza, backlog y cartera, validaciones y acciones recomendadas, usando solo recetas validadas y guardando sus KPIs para la semana siguiente.

1. El objetivo

Gerencia quiere, cada lunes a primera hora, un solo correo que responda: ¿cuánto vendimos la semana pasada y cómo se compara?, ¿cuánto facturamos y cobramos?, ¿qué pedidos llevan dos semanas sin facturar?, ¿cómo está la cartera y quién debe?, ¿qué cinco cosas hay que hacer esta semana? Y que nunca deje de llegar: si un dato falta, que lo diga en el correo en vez de no enviarlo.

2. Las piezas que hacen falta

  1. Un agente con herramientas de Odoo, reportes y envío de correo; en la demostración, MRDC Assistant con GPT-5.4 y respaldo GPT-4.1 mini.
  2. Las recetas de ventas, facturación, cobranza, backlog y cartera, validadas (capítulo 22). Son las que hacen que la corrida sea exacta y barata.
  3. Las pistas de modelo de sale.order, account.move y account.partial.reconcile, por si una receta falla y el agente tiene que consultar por su cuenta.
  4. La tarea: semanal, lunes 07:00 hora de Guatemala, modo autónomo, con permiso de correo, sin escrituras, dueño el gerente comercial, con Límite de historial de KPIs 8 y una memoria inicial con el criterio de ventas.

3. Las instrucciones

Las instrucciones completas están en la figura del capítulo 26. Su estructura es la que recomendamos para cualquier reporte recurrente:

  • Qué enviar, a quién y la regla de oro: «el correo SIEMPRE se envía; si una fuente falla, la sección lleva ⚠️ SIN DATO y la incidencia va al anexo».
  • Parámetros: compañía, moneda y formato de números, la definición exacta de la ventana (semana ISO anterior, con la conversión UTC/hora local para campos datetime).
  • Fuentes: receta por receta, con qué parámetros y para qué sección; «usa SIEMPRE run_recipe; si una falla, get_model_hint antes que get_fields».
  • Memoria: leer la memoria y las instantáneas; al final, save_kpis con la lista exacta de indicadores.
  • Validaciones numeradas (V1 subtotales, V2 la semana no supera al rango que la contiene para la misma métrica, V3 fórmula de la variación) con la aclaración de que van al anexo y no bloquean.
  • Formato del correo: asunto con cifras, secciones numeradas, semáforo de KPIs con la regla de colores, tablas con sus columnas, acciones recomendadas con responsable y fecha, anexo, firma.
  • Reglas de redacción y el cierre: «envía una sola vez con send_email; no busques crons ni revises mail.mail; termina con un resumen de 3 líneas».

4. La corrida

Con Ejecutar ahora la tarea corre y abre su ejecución: 14 llamadas a herramientas (11 recetas, save_kpis, un documento y send_email), unos 71.000 tokens de entrada y 0,22 USD. La respuesta final del agente es el resumen de tres líneas; el correo ya está en la bandeja del gerente.

El correo del reporte semanal tal como se recibe
Figura 64. El correo «El Quetzal · Semana 10/08–16/08 · Ventas Q56,308 · CxC …»: TL;DR, semáforo de KPIs con variaciones, top de órdenes, backlog, antigüedad de cartera y top de deudores, movimientos, acciones recomendadas y anexo con las validaciones. Todo sale de recetas sobre datos reales.

5. Lo que aprendimos poniéndolo en producción

SíntomaCausaCorrección
El correo llegaba a las 23:08 en vez de a las 07:00 del lunes.La tarea se había creado «cada 1 día» con la próxima ejecución igual a la hora de creación.Las herramientas de programación ahora fijan hora por defecto (08:00 local) y día de la semana; el contexto de la tarea muestra la hora local.
Un correo decía «NO enviado · inconsistencia de datos» porque cobrado ≠ CxC.El agente interpretó una validación entre métricas distintas como contradicción y decidió no enviar.V2 se limitó explícitamente a «la misma métrica»; regla de oro «siempre se envía»; el contexto fijo aclara que un error de herramienta no es una inconsistencia.
El destinatario era literalmente «».Instrucciones generadas con marcadores sin rellenar.schedule_ai_task rechaza marcadores; send_email limpia destinatarios.
El backlog mostraba solo la suma del top 10.Ambigüedad en la instrucción.«KPI = suma de TODAS las órdenes con saldo; top 10 en tabla».
Veinte llamadas exploratorias y cifras que cambiaban de semana a semana.Sin recetas, el agente reconstruía las consultas cada vez.Recetas validadas y obligatorias; pistas de modelo para las trampas de IVA y UTC.
Replicarlo en su empresa. Copie la estructura de las instrucciones, ajuste destinatarios, compañía y moneda, valide las recetas con sus datos (Probar muestra filas reales), ejecute una vez con Ejecutar ahora, lea la ejecución y el correo, corrija lo que haga falta y déjela programada. El mismo patrón sirve para un reporte diario de caja, uno mensual de compras por proveedor o uno de cartera vencida por vendedor.

32.Misiones: trabajo largo y autónomo

Para objetivos que no caben en una respuesta —revisar todo un catálogo, depurar una cartera de contactos, preparar un cierre— el agente planifica, ejecuta paso a paso con notas de trabajo y reintentos, y deja las escrituras a la aprobación de una persona.

Una misión (MRDC AI → Misiones) tiene un objetivo en lenguaje natural, un agente, un dueño y permisos. Al iniciarla, el agente produce un plan de pasos; si la misión exige aprobación del plan, espera a que el dueño lo revise; después ejecuta los pasos uno a uno, cada uno con su propio presupuesto de herramientas, guardando notas de trabajo que los pasos siguientes leen, y termina con un resumen. Puede crearse desde el menú o desde el chat con start_ai_mission.

Lista de misiones
Figura 65. Misiones del ambiente de demostración con su agente, dueño, progreso, pasos hechos sobre el total, fechas y estado.

El formulario

Formulario de una misión
Figura 66. La misión «Redactar descripciones de venta del catálogo de abarrotes»: estado, progreso, permisos (aprobación del plan, aprobación de escrituras, presupuesto de herramientas por paso), uso de tokens y las pestañas Objetivo, Plan, Acciones pendientes, Notas de trabajo y Error.
CampoSignificado
Requiere aprobación del planTras planificar, la misión se detiene en Revisión del plan hasta que el dueño pulsa Aprobar plan (o Replanificar, con comentarios).
Permitir operaciones de escritura / Requiere aprobación de escriturasSi la misión puede escribir y si cada escritura (y cada correo) se encola como acción pendiente en vez de ejecutarse. Con aprobación de escrituras, update_field y compañía devuelven «quedó en cola #N» y el paso continúa.
Permitir notificaciones / correoRecortes sobre las capacidades del agente, como en las tareas.
Presupuesto de herramientas por pasoMáximo de llamadas a herramientas por paso; al agotarse, el paso debe cerrar con lo que tenga.
UsoTokens de entrada y salida acumulados; el costo por paso está en cada paso.

Ciclo de vida

Borrador Planificando Revisión del plan En ejecución Hecha ·Pausada ·Error
  • Iniciar pasa a Planificando; el cron «Process Missions» (cada 5 minutos) o el botón Procesar ahora ejecutan la planificación. El plan aparece en la pestaña Plan como pasos numerados con descripción.
  • En En ejecución, cada ciclo del cron procesa hasta mrdc_ai.mission_steps_per_cycle pasos (3 por defecto); cada paso se confirma por separado, así que un fallo nunca pierde el trabajo ya hecho. Un paso que falla se reintenta; a la tercera, la misión queda en Error con el motivo y puede reanudarse (los pasos fallidos vuelven a pendientes).
  • Pausar detiene entre pasos; Reanudar continúa; Cancelar la cierra. Marcar como hecha la cierra sin más pasos.
  • Mientras corre, la misión tiene una reserva de 30 minutos que se renueva en cada paso (latido); si un servidor muere, otro la retoma al vencer la reserva.
Pestaña Plan de la misión con los pasos
Figura 67. El plan: un paso de inventario del catálogo, un paso por producto para redactar y proponer la descripción, y un paso final de resumen, con estado y resultado de cada uno.

Las herramientas propias de la misión

Además de las del agente, en una misión el modelo dispone de complete_step (cerrar el paso con un resumen factual), update_working_notes (añadir o reemplazar las notas de trabajo que leerán los siguientes pasos) y, en la planificación, propose_plan. Las herramientas de chat (programar tareas, recordar) se retiran.

Acciones pendientes generadas por la misión
Figura 68. Pestaña Acciones pendientes: una propuesta de description_sale por producto, cada una con su paso de origen, lista para aprobar una a una o con Aprobar todo.
Formulario de un paso de misión
Figura 69. Un paso abierto: instrucciones, resultado, respuesta completa, llamadas a herramientas, tokens y costo del paso.
Escriba el objetivo como un encargo a un analista nuevo. Qué universo de registros, qué criterio, qué hacer con cada uno, qué herramienta usar si importa («aplícala con update_field; quedará pendiente de aprobación, eso es lo esperado»), y qué entregar al final. En la primera versión de la misión del ejemplo, el objetivo decía «proponer la actualización» y el agente entregó las propuestas en texto sin llamar a la herramienta; al reescribirlo con la instrucción explícita, cada propuesta quedó como acción pendiente aprobable.

33.Temas y herramientas especializadas

Los temas agrupan instrucciones y herramientas por especialidad y se asignan a los agentes. Son la forma de que dos agentes compartan un método de trabajo sin duplicar prompts.

En Configuración → Temas hay tres de fábrica: Consultas en lenguaje natural (descubrimiento automático de modelos y campos), Generación de reportes (tablas y análisis) y Navegación de datos (llevar al usuario a registros y vistas). Cada tema tiene nombre, descripción, secuencia y un bloque de instrucciones que se anexa al prompt del agente que lo tenga.

Lista de temas
Figura 70. Los temas de fábrica con su descripción.
Pestaña Temas y herramientas del agente
Figura 71. Pestaña Temas y herramientas del agente MRDC Assistant con sus temas asignados.

Cuándo crear un tema

  • Cuando dos o más agentes necesitan la misma especialidad («cómo analizamos la cartera en esta empresa», «cómo se redactan las notas al cliente»).
  • Cuando quiere poder activar o desactivar un bloque de instrucciones sin editar el prompt de cada agente.
  • Cuando una integración añade herramientas propias (por ejemplo un módulo de mensajería o de comercio electrónico): el tema es el lugar natural para describir cómo y cuándo usarlas.
Extensible por código. Otros módulos pueden inyectar herramientas al agente heredando _get_odoo_tools y añadir sus propios temas; así funcionan, por ejemplo, las integraciones omnicanal de mrdc.tech sobre este mismo módulo base. Las herramientas añadidas pasan por las mismas políticas, registro de llamadas y cola de aprobación.

34.Seguridad y permisos

El módulo no inventa un sistema de permisos: usa los de Odoo. Cada usuario ve sus conversaciones, tareas y misiones; los administradores ven todo; y el agente nunca puede más que la persona en cuyo nombre actúa.

Dos niveles de usuario

QuiénQué puede
Usuario interno (Usuario de Odoo, base.group_user)Usar el panel y la consulta rápida con cualquier agente activo; ver, crear y borrar sus conversaciones, tareas, ejecuciones, acciones pendientes y misiones; aprobar las acciones de sus propias tareas y misiones; leer las memorias propias y las compartidas del agente; crear memorias propias; leer pistas, recetas validadas, precios, fuentes de conocimiento e insights de sus compañías.
Administrador (Ajustes / Administración, base.group_system)Todo lo anterior sobre los registros de todos; crear y editar agentes, temas, pistas, recetas, precios, fuentes de conocimiento; crear y borrar memorias de ámbito agente; ver las claves en Ajustes.

Reglas de registro

  • Conversaciones y mensajes: solo el dueño (y el administrador).
  • Tareas, ejecuciones y acciones pendientes: el dueño de la tarea; las acciones pendientes de una misión, el dueño de la misión.
  • Misiones y pasos: el dueño.
  • Memorias: lectura de las propias, las de sus conversaciones y las compartidas del agente; escritura solo de las propias y de conversación; las de agente, solo administradores.
  • Fuentes de conocimiento e insights: por compañía (globales o de las compañías permitidas del usuario).

El agente actúa como el usuario

Todas las herramientas se ejecutan con el usuario de la conversación, o con el dueño de la tarea o misión en las corridas desatendidas. Las búsquedas devuelven lo que ese usuario puede leer; las escrituras fallan con el mismo error de acceso que tendría en la interfaz; los reportes oficiales verifican la lectura de los registros; las aprobaciones se ejecutan como el dueño de la tarea. La única excepción deliberada es la escritura de la retroalimentación 👍/👎, que se hace con privilegios elevados después de comprobar que quien vota es el dueño de la conversación.

Protecciones adicionales

  • Adjuntos: tipos y tamaños limitados, verificación del tipo real; los adjuntos generados por el agente se ligan a su mensaje; la base de conocimiento comprueba el permiso del adjunto o registro original antes de mostrar un pasaje.
  • Secretos: la memoria rechaza claves y contraseñas; el SQL de solo lectura bloquea las tablas de credenciales y parámetros; las claves de proveedores no se leen desde herramientas.
  • Listas de bloqueo fijas en métodos y modelos sensibles (capítulo 15) y las políticas por agente (capítulo 9).
  • Cancelación y topes de iteraciones, de herramientas por ronda y de tiempo por petición: ningún mensaje puede girar indefinidamente.
  • Transacciones: cada herramienta corre en un punto de guardado; si falla, se revierte solo ella y el agente recibe el error; la respuesta sigue. El SQL es de solo lectura por construcción.
  • Concurrencia: las tareas, las corridas por evento y las misiones se toman con bloqueo y reserva; las aprobaciones son idempotentes; el encolado deduplica con índice único.
Lo que sí hay que vigilar. Las capacidades de escritura, SQL y métodos amplían lo que un usuario puede hacer rápido, no lo que puede hacer. Un usuario con permisos amplios y un agente sin gobernanza puede pedir «cancela todos los pedidos de este cliente» y el agente lo hará —preguntando antes, pero lo hará. Ajuste capacidades y gobernanza por agente, no por usuario, y empiece en modo aprobación.

35.Costos y presupuesto

Cada token cuesta. El módulo lo cuenta por mensaje, por corrida y por paso, lo convierte a dólares con la tabla de precios y lo frena con dos presupuestos: el global y el de cada agente.

Dónde se ve el costo

NivelDónde
Mensaje del asistenteHistorial → conversación → mensaje: tokens de entrada/salida, costo estimado, modelo usado.
Ejecución de tareaTareas programadas → Ejecuciones: tokens y costo por corrida; la lista permite sumar por tarea.
Paso de misiónMisión → Plan → paso: tokens y costo; la misión acumula tokens en Uso.
Agente, mes en cursoFormulario del agente → Este mes (USD): suma de los tres anteriores en el mes calendario.
GlobalSe compara contra Presupuesto mensual de IA de Ajustes; no hay campo visible, pero la suma es la de todos los agentes.
Costo del mes en el agente
Figura 72. El gasto del mes del agente MRDC Assistant tras las conversaciones, tareas y misiones de este manual, frente a su presupuesto mensual.

Qué hace subir el costo y cómo bajarlo

FactorMedida
Prompts del sistema largos que viajan en cada mensajeMover el conocimiento a pistas (solo se inyectan cuando se usa el modelo) y a la base de conocimiento (solo los pasajes pertinentes).
Muchas herramientas descritas en cada peticiónSelección de herramientas = bajo demanda en agentes con escritura, reportes y comunicación.
Exploración: get_fields + varias read_group para llegar a un númeroRecetas validadas y obligatorias en las tareas; get_model_hint antes que get_fields.
Historiales largosEl resumen automático ya lo recorta; ajuste el límite de historial del agente (10–20 mensajes suele bastar).
Resultados de herramientas enormesPedir límites en las instrucciones («top 10», «máximo 50 filas»); las herramientas ya recortan a un máximo de caracteres.
Modelo grande para trabajo trivialModelo rápido para resúmenes; agentes específicos con modelos mini para tareas masivas.
Reintentos por buclesTopes de iteraciones por agente y global; leer la traza de la ejecución y corregir la instrucción que provoca el bucle.

Los presupuestos

  • Global (Ajustes): al alcanzarse, toda llamada nueva de cualquier agente se rechaza con «El presupuesto mensual global de IA se agotó».
  • Por agente: aviso único al 80 % (notificación interna al usuario y al administrador) y rechazo al 100 %.
  • Ambos se reinician con el mes calendario y se evalúan al inicio de cada petición; las tareas programadas que se rechazan quedan en error con ese motivo y vuelven a intentarlo en su siguiente programación.
Mantener la tabla de precios. Los precios de fábrica reflejan las tarifas públicas de los proveedores al momento de la versión. Revíselos trimestralmente y añada filas para los modelos nuevos: un modelo sin precio cuenta como gratis y distorsiona los presupuestos.

36.Automatizaciones internas y observabilidad

Tres acciones planificadas mueven el módulo por detrás, y todo lo que el agente hace deja rastro: en la interfaz, en los registros y en el log del servidor.

Las acciones planificadas

CronFrecuenciaQué hace
MRDC AI: Run Scheduled Agent TasksCada 10 minutosToma, de una en una y con bloqueo, las tareas programadas vencidas y las corridas por evento en cola (o con reserva vencida), las ejecuta y confirma cada resultado por separado. Las tareas por evento además lo despiertan al encolar.
MRDC AI: Process Missions (Deep Work)Cada 5 minutosToma las misiones activas sin reserva viva, planifica o ejecuta hasta N pasos (parámetro mrdc_ai.mission_steps_per_cycle), renovando la reserva en cada paso.
MRDC AI: Re-index Knowledge SourcesDiarioReindexa las fuentes de conocimiento con Actualización automática (registros que cambian) y reintenta las que quedaron en error.
Acciones planificadas del módulo
Figura 73. Las tres acciones planificadas del módulo en Ajustes → Técnico → Acciones planificadas.

Qué se registra y dónde mirarlo

  • En la interfaz: cada mensaje y cada paso conservan las llamadas a herramientas con argumentos, resultado recortado, duración en milisegundos y tamaño del resultado; las ejecuciones y misiones guardan estado, error, tokens y costo; las acciones pendientes, su resultado o error al aprobarse.
  • En tiempo real: la línea de tiempo del panel recibe por el bus de Odoo cada herramienta que empieza y termina, con su etiqueta en español («Ejecutando receta sales_orders_in_period», «Generando reporte Libro de ventas»).
  • En el log del servidor: las llamadas a proveedores con su modelo, los reintentos y los cambios a modelo de respaldo, cada herramienta ejecutada (nivel INFO), los errores de herramienta con traza (ERROR) y los avisos de transacciones recuperadas.

Salud del sistema en tres preguntas

  1. ¿Corren las tareas cuando deben? Tareas programadas → Próxima ejecución en el pasado con Última ejecución antigua significa que el cron no está corriendo o que la tarea está fallando: mire la última ejecución.
  2. ¿Se está gastando lo esperado? Agentes → Este mes; Ejecuciones ordenadas por costo; mensajes con 👎.
  3. ¿Hay trabajo atascado? Ejecuciones en En ejecución con reserva vencida (se retoman solas), misiones en Error (reanudar tras corregir), acciones pendientes antiguas (aprobar o rechazar).

37.Resolución de problemas

Los mensajes de error del módulo están pensados para decir qué pasó y qué hacer. Esta tabla reúne los más frecuentes, su causa y la salida.

SíntomaCausa probableQué hacer
«No hay clave de API configurada para …» al primer mensaje.Falta la clave del proveedor del modelo del agente.Ajustes → MRDC AI, pegar la clave; o cambiar el modelo del agente a un proveedor con clave.
Error 401/403 del proveedor.Clave inválida, rotada o sin saldo.Generar una clave nueva en el proveedor; revisar el saldo de la cuenta.
Respuestas lentas o «429 rate limit»; el log dice falling back to ….Límite de velocidad del proveedor; el módulo reintentó y usó el modelo de respaldo.Normal. Si es frecuente, subir el nivel de la cuenta o repartir agentes entre proveedores.
«Unsupported parameter: temperature».Modelo de razonamiento que no acepta temperatura.El módulo ya la omite para los modelos conocidos; si es un modelo nuevo, añadirlo a la lista o cambiar de modelo.
«El agente … agotó su presupuesto mensual» / «El presupuesto mensual global de IA se agotó».Presupuesto alcanzado.Subir el presupuesto (agente o Ajustes) o esperar al mes siguiente; revisar qué lo consumió (capítulo 35).
«Error: model 'x' is outside this agent's allowed models».Política de modelos permitidos.Añadir el modelo a Modelos permitidos del agente si corresponde.
«Error: recipient domain … is not allowed».Política de dominios de correo.Añadir el dominio o corregir el destinatario.
El agente dice que el campo «no está almacenado» y no puede filtrar/agrupar por él.Campo calculado no almacenado (p. ej. amount_invoiced del pedido).Es correcto; la pista del modelo indica la fuente almacenada equivalente. Si falta, escribir la pista.
Números distintos para «la misma» métrica.Bases de cálculo distintas (con/sin IVA, fecha de pedido vs. de factura, UTC).Pedir la base de cálculo; fijarla en una receta y en las instrucciones; añadir la trampa a la pista.
Una tarea no corre a la hora esperada.Próxima ejecución mal fijada (creada «cada 1 día» a la hora de creación) o cron detenido.Corregir la próxima ejecución (en hora local del usuario); comprobar la acción planificada y los trabajadores de cron del servidor.
Ejecución en En ejecución durante horas.El trabajador murió a mitad.Se retoma sola al vencer la reserva (hasta 2 intentos); después queda en error. Revisar el log del servidor.
Misión en Error.Un paso falló tres veces (herramienta, presupuesto, proveedor).Leer el paso fallido y sus llamadas; corregir (permisos, instrucción) y Reanudar.
Acción pendiente falla al aprobar con «el registro cambió».Alguien editó el registro después de la propuesta.Revisar el registro; rechazar la acción y volver a correr la tarea si procede.
«Estos registros están restringidos» al proponer una escritura desde una misión.Versiones anteriores a 19.0.2.1: la regla de acceso de acciones pendientes no contemplaba misiones.Actualizar el módulo (la migración corrige la regla).
El PDF de render_report no se genera.wkhtmltopdf ausente o sin acceso al servidor para cargar estilos.Igual que para cualquier reporte de Odoo: instalar wkhtmltopdf y revisar web.base.url/report.url.
Fuente de conocimiento en error «No module named docx/pypdf/openpyxl».Paquete de Python opcional ausente.pip install python-docx pypdf openpyxl en el entorno y reindexar.
El micrófono no aparece o no graba.Origen no seguro (HTTP) o permiso denegado en el navegador.Servir Odoo por HTTPS; permitir el micrófono para el sitio.
Adjunto rechazado.Tipo no permitido, tamaño > 15 MB, más de 10 archivos o más de 40 MB en total.Convertir a PDF/imagen/Excel, comprimir o dividir.
El agente pregunta en vez de ejecutar en una tarea.Instrucción ambigua; en una corrida no hay nadie que responda.Escribir la instrucción completa (destinatarios, criterios, formato) y la regla «no pidas confirmación; si falta un dato, indícalo en el resultado».
Cómo reportar un problema. Adjunte el id de la conversación o ejecución, la pestaña de llamadas a herramientas (o el mensaje con 👎 y su nota), el modelo y la versión del módulo (Aplicaciones → MRDC - AI Base). Con eso se reproduce casi todo.

38.Buenas prácticas: instrucciones, prompts y mejora continua

Lo que separa un asistente que impresiona el primer día de uno que sigue siendo útil en el mes seis es la disciplina con que se escriben las instrucciones y se capitalizan los errores.

Escribir instrucciones para tareas y misiones

  1. Una sola salida y una regla de oro. «Envía UN correo a X» y «el correo SIEMPRE se envía; si falta un dato, dilo dentro». Un agente sin salida obligatoria encuentra razones para no entregar.
  2. Defina los términos. «Ventas = pedidos confirmados (state = sale), sin IVA, por date_order en la zona America/Guatemala». Cada palabra ambigua («ventas», «cobrado», «vencida») es una base de cálculo distinta en manos del modelo.
  3. Nombre las fuentes. Recetas por nombre y con qué parámetros; si no hay receta, el modelo y los campos. «Usa SIEMPRE run_recipe» ahorra la mitad del costo.
  4. Numere las validaciones y diga qué pasa si fallan. «V1…, V2…; si falla, va al anexo como incidencia; no bloquea el envío.» Y limite cada validación a lo que compara: «la misma métrica».
  5. Describa el formato con precisión: asunto con cifras, secciones, columnas de cada tabla, fila de totales, reglas de redacción (nombres cortos, sin tablas repetidas, números junto a cada afirmación), firma.
  6. Cierre el bucle: «envía una sola vez; la respuesta de la herramienta es la confirmación; no revises crons ni correos; termina con un resumen de 3 líneas».
  7. Pruebe con Ejecutar ahora, lea la traza de herramientas y el resultado, corrija la instrucción —no el resultado— y repita hasta que dos corridas seguidas salgan bien.

Escribir el prompt del sistema

  • Rol, tono, idioma, formato de números y moneda, y las 5–10 reglas del negocio que nunca cambian. Nada más.
  • Todo lo que empiece con «cuando consultes el modelo X…» va a una pista de modelo.
  • Toda consulta que se repite va a una receta.
  • Todo dato que cambia (responsables, políticas, promociones) va a la memoria del agente o a la base de conocimiento.

Capitalizar los errores

Lo que pasóDónde va la lección
El agente usó un campo equivocado o una base de cálculo errónea.Pista de modelo (la «TRAMPA» y la fuente correcta).
La consulta correcta costó muchas llamadas.Receta (Extraer recetas desde la ejecución, probar, validar).
El agente volvió a preguntar algo ya decidido.Memoria (usuario o agente) o memoria de la tarea.
Respondió sin conocer una política interna.Fuente de conocimiento.
Interpretó una regla de forma creativa.Reescribir la regla en las instrucciones de la tarea, literal y con ejemplo.
Hizo algo que no debía poder hacer.Gobernanza del agente (modelos, métodos, dominios, límite) o quitar la capacidad.

Operación

  • Un agente por rol (gerencia, ventas, cobranza) con capacidades mínimas; no un superagente para todos.
  • Empezar las tareas con escritura en modo aprobación; pasar a autónomo tras varias corridas aprobadas sin cambios.
  • Revisar semanalmente: 👎 del historial, ejecuciones en error, acciones pendientes viejas, hallazgos abiertos, gasto por agente.
  • Revisar trimestralmente: precios de modelos, modelos nuevos más baratos, recetas que ya nadie usa.

39.Referencia rápida de herramientas

Las 40 herramientas que el agente puede recibir, con sus parámetros principales, la capacidad que las habilita y el grupo al que pertenecen en el modo de selección bajo demanda.

HerramientaParámetrosQué haceCapacidad · grupo
Descubrimiento y lectura
get_available_modelssearch_termLista los modelos de Odoo consultables (nombre técnico, descripción, módulo).Herramientas de Odoo · núcleo
get_fieldsmodel_nameCampos de un modelo: nombre, etiqueta, tipo, si es filtrable/agrupable; adjunta la pista del modelo si existe; oculta los campos de ruido (actividades, mensajes).Herramientas de Odoo · núcleo
search_recordsmodel_name, domain, fields, limit, orderBusca registros con un dominio de Odoo y devuelve los campos pedidos.Herramientas de Odoo · núcleo
read_groupmodel_name, domain, fields, groupby, orderby, limitAgrupa y suma/cuenta/promedia (GROUP BY), incluidas agrupaciones por fecha (:day, :week, :month…).Herramientas de Odoo · núcleo
count_recordsmodel_name, domainCuenta registros que cumplen un dominio.Herramientas de Odoo · núcleo
get_menussearch_termMenús accesibles por el usuario, para devolver enlaces de navegación.Herramientas de Odoo · núcleo
get_record_linkmodel_name, record_idURL directa que abre un registro.Herramientas de Odoo · núcleo
run_sql_queryquery, limitSELECT/WITH de solo lectura sobre PostgreSQL, con protecciones y límite de filas.SQL de solo lectura · núcleo
Conocimiento curado y memoria
get_model_hintmodel_namePista curada de un modelo.Herramientas de Odoo · núcleo
list_recipessearch_termCatálogo de recetas validadas con sus parámetros.Herramientas de Odoo · núcleo
run_recipename, params, limitEjecuta una receta validada con parámetros JSON.Herramientas de Odoo · núcleo
search_knowledgequery, limitPasajes relevantes de la base de conocimiento (búsqueda híbrida). Solo aparece si hay fuentes indexadas.Herramientas de Odoo · núcleo
create_insightname, explanation, severity, category, recommended_action, amount, model_name, record_id, responsible_login, deadlineRegistra un hallazgo en el Centro de hallazgos (deduplica 14 días).Herramientas de Odoo · núcleo
remember_factkey, value, scopeGuarda un hecho duradero (usuario, agente, conversación). No disponible en corridas desatendidas.Herramientas de Odoo · núcleo
forget_factkey, scopeBorra una memoria por clave.Herramientas de Odoo · núcleo
Reportes, documentos e imágenes
generate_reporttitle, model_name, domain, fields, groupby, orderby, limitTabla HTML formateada a partir de una agrupación.Generación de reportes · reports
generate_charttitle, chart_type, model_name, measure, groupby, domain, orderby, limitGráfica interactiva (barras, líneas, pastel, dona).Generación de reportes · reports
generate_documentfilename, format, content, titleArchivo descargable PDF/XLSX/CSV/TXT/HTML adjunto al mensaje.Generación de reportes · reports
generate_imageprompt, aspect_ratio, qualityImagen por IA mostrada en el chat.Generación de reportes · reports
list_reportsmodel_name, nameReportes oficiales disponibles, con campos de asistente y formatos.Generación de reportes · reports
render_reportreport, format, record_ids, wizard_values, wizard_method, filenameGenera un reporte oficial en PDF/XLSX/HTML y lo adjunta.Generación de reportes · reports
Escritura
create_recordmodel_name, valuesCrea un registro (con líneas) y devuelve lo guardado para verificar.Operaciones de escritura · write
update_fieldmodel_name, record_id, field_name, new_valueCambia un campo (preferida).Operaciones de escritura · write
update_recordmodel_name, record_id, valuesCambia varios campos, incluidas líneas.Operaciones de escritura · write
get_record_actionsmodel_nameBotones/métodos ejecutables de un modelo con su etiqueta.Operaciones de escritura · write
execute_actionmodel_name, record_ids, method_nameEjecuta un botón/método sobre registros (confirmar, validar…).Operaciones de escritura · write
generate_and_set_imagemodel_name, record_id, image_field, prompt, qualityGenera una imagen por IA y la guarda en un registro.Operaciones de escritura · write
get_model_methodsmodel_name, search_termMétodos públicos de un modelo con su firma.Métodos y acciones · write
call_methodmodel_name, method_name, record_ids, args, kwargsLlama a cualquier método público permitido.Métodos y acciones · write
list_server_actionsmodel_nameAcciones de servidor ejecutables.Métodos y acciones · write
run_server_actionaction_id, record_idsEjecuta una acción de servidor sobre registros.Métodos y acciones · write
Comunicación
send_emailto, subject, body_html, attachment_idsCorreo con HTML y adjuntos generados.Enviar correo · communication
send_notificationmessage, subject, recipient_logins, attachment_idsMensaje a la bandeja de Odoo de usuarios internos.Notificaciones · communication
send_system_notificationmessage, title, level, sticky, recipient_loginsAviso emergente en tiempo real.Notificaciones · communication
Automatización (solo en chat)
schedule_ai_taskname, instructions, interval_number, interval_type, first_run, first_run_weekday, first_run_day, first_run_time, execution_mode, allow_send_email, allow_write_operationsCrea una tarea programada; rechaza marcadores sin rellenar; hora por defecto 08:00 local.Herramientas de Odoo · automation
list_ai_tasksTareas del usuario con horario, modo y estado.Herramientas de Odoo · automation
update_ai_tasktask_id, active, instructions, interval_number, interval_type, next_run, next_run_weekday, next_run_day, next_run_time, execution_modePausa, reanuda o reprograma una tarea.Herramientas de Odoo · automation
start_ai_missionname, goal, allow_write_operations, allow_send_email, require_plan_approvalInicia una misión.Herramientas de Odoo · automation
list_ai_missionsMisiones del usuario con estado y progreso.Herramientas de Odoo · automation
Solo en tareas y misiones
remember / forget / save_kpiskey, value · key · kpis (objeto)Memoria y instantánea de KPI de la tarea.Tareas programadas
complete_step / update_working_notes / propose_planresult_summary · content, mode · stepsCerrar un paso, editar las notas de trabajo, proponer el plan.Misiones
enable_toolsgroupMeta-herramienta del modo bajo demanda: activa un grupo (write, reports, communication, automation).Selección bajo demanda
Versión. Esta referencia corresponde a la versión 19.0.2.1 del módulo. Las herramientas que aporten otros módulos instalados (integraciones de mensajería, comercio electrónico, etc.) aparecen en el mismo catálogo y se rigen por las mismas políticas.
Logotipo de mrdc.tech
mrdc.tech
Guatemalan based, for all the world

Manual del Asistente de Inteligencia Artificial para Odoo 19 — módulo MRDC AI Base.
Implementación, soporte y desarrollo a la medida sobre Odoo: facturación electrónica de Guatemala, El Salvador y Panamá, pasarelas de pago, aplicaciones móviles e integraciones con inteligencia artificial.

mrdc.tech · info@mrdc.tech · +502 4288 7385