Este módulo técnico proporciona la infraestructura base para definir herramientas de IA en Odoo. Permite que otros módulos registren funciones invocables como herramientas de IA, que luego pueden ser utilizadas por servidores MCP, flujos de automatización o cualquier integración nativa de IA.
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 19.0Este módulo técnico crea un registro de herramientas de IA en Odoo, permitiendo a los desarrolladores declarar funciones invocables que los asistentes de IA o los servidores MCP pueden usar, como obtener la fecha de hoy o publicar un mensaje en un registro.
Este módulo añade una nueva pantalla llamada AI Tool, que se encuentra bajo el menú AI en el área de ajustes de Odoo. Cada entrada describe una función invocable: su nombre, una descripción, el modelo de Odoo al que pertenece, el nombre de la función y un tipo que indica si la función funciona por sí sola, necesita un registro o se ejecuta en un registro específico.
Los usuarios con acceso básico solo pueden ver esta lista; no pueden crear, editar ni eliminar entradas. Las entradas en sí normalmente las crean otros módulos o los desarrolladores, no se escriben a mano.
Se incluyen dos herramientas ya preparadas: - get_date: devuelve la fecha actual. - post_message: publica un mensaje en un registro existente, convirtiendo texto Markdown a HTML seguro cuando la librería Markdown está disponible; de lo contrario, texto plano.
El módulo también define cómo se ejecuta una herramienta: comprueba que se proporcione un registro cuando es necesario y que el registro pertenezca al modelo esperado, lanzando un error en caso contrario. Expone la definición de entrada y salida de cada herramienta para que las integraciones de IA externas puedan entender qué argumentos enviar.
Toca el modelo ai.tool y el modelo ir.model, y depende del módulo mail para la publicación de mensajes. No se añaden trabajos programados, correos electrónicos ni cálculos automáticos.
Depende de
Lo necesitan otros módulos
Menús que añade
Modelos y campos (1)
- ai.tool · modelo nuevokind, name, model_id, description, function_name
Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 3 confirmadas, 6 sin información de 9 versiones.
Fuentes · Odoo 16.0
Confirmado el 2026-11-03 en la rama 16.0 de OCA/ai.
terminal Instalación y uso
Documentación de OCA · Odoo 19.0Este módulo es técnico, sin embargo, añade algunas funciones específicas que podrían usarse en módulos de pegamento.
Por ejemplo, si queremos añadir en ventas una funcionalidad para encontrar las ventas en un periodo, deberíamos hacer:
<odoo>
<record model="ai.tool" id="total_sale_order_tool">
<field name="name">total_sale_order</field>
<field
name="description"
>Calculate the total amount of sale orders within a date range and optionally for a specific customer.</field>
<field name="model_id" ref="model_sale_order" />
<field name="function_name">_mcp_total_sale_order</field>
</record>
</odoo>from odoo.addons.ai_tool.tools import aitool
class SaleOrder(models.Model):
_inherit = "sale.order"
@aitool(
input_schema={
"start_date": {"type": "date"},
"end_date": {"type": "date"},
"customer_id": {"type": "integer"},
},
required_inputs=["start_date", "end_date"],
output_schema={
"amount_total": {"type": "number"},
},
)
def _mcp_total_sale_order(self, start_date, end_date, customer_id=None):
domain = [("date_order", ">=", start_date), ("date_order", "<=", end_date)]
if customer_id:
domain.append(("partner_id", "=", customer_id))
orders = self.read_group(domain, ["amount_total"], [])
return {
"amount_total": (orders[0]["amount_total"] or 0) if orders else 0,
}Ten en cuenta que este tipo de elementos siempre deben devolver un dict. Todos los elementos se definirán en output_schema.
Además, para la firma de las funciones, todos los campos deben estar en las inputs con la excepción de record. Este argumento está protegido y se utiliza para definir integraciones con automatización. Este argumento es obligatorio en las herramientas generic_model y record.
En los generic_model esperamos este valor porque queremos realizar una acción específica con el modelo.
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.