AI Metering registra cada llamada a IA de tu Drupal y aplica cuota por usuario: si se agota, bloquea o pasa a un modelo local sin pagar tokens.
Qué resuelve AI Metering frente al módulo AI
El módulo drupal/ai resuelve la parte útil: una API única para trabajar con OpenAI, Anthropic, Gemini, Ollama y otros proveedores. El problema es la contraparte. Los paneles de uso de cada proveedor llegan con retraso, mezclan varios proyectos y nunca dicen qué rol hizo la llamada, así que saber cuánto te cuesta el chatbot o las traducciones automáticas es casi imposible.
AI Metering se suscribe al sistema de eventos de drupal/ai, así que intercepta todas las llamadas sin importar el proveedor y sin configuración adicional por cada uno. Por cada petición guarda proveedor, modelo, tipo de operación, tokens de entrada y salida, tokens cacheados, latencia y costo estimado con precisión de ocho decimales.
Los precios de referencia se sincronizan desde el mapa de costos de LiteLLM y desde models.dev, y las sustituciones manuales que hagas nunca se sobrescriben en la siguiente sincronización. El costo se muestra en USD, CAD, EUR, GBP, AUD o JPY con cambio de tasa en vivo. Los tableros vienen desglosados por usuario y por rol, con exportación CSV y JSON para llevar el dato a tu propia contabilidad.
El detalle que más importa en una pyme es el orden de las operaciones: la cuota se verifica antes de contactar la API remota. Si el usuario ya se pasó, la llamada se bloquea o se redirige a un proveedor local como Ollama, y de todos modos queda registrada en el log.
Dónde queda la configuración
Todo vive en /admin/config/ai/ai-metering, con el permiso administer ai metering. Desde ahí llegas a los tableros por usuario y por rol, al log de uso, a los ajustes y a los permisos. Cada editor con el permiso view own ai metering usage ve su propio consumo y su cuota en un bloque o en una pestaña de su perfil, así puede preguntar por su presupuesto sin escribirte.
Requisitos e instalación
Los requisitos verificados del módulo son Drupal 10.5 o superior, o Drupal 11.2 o superior; PHP 8.2 o superior, que en Drupal 11 ya es 8.3; drupal/ai en versión ^1.4.2 o posterior; al menos un módulo de proveedor habilitado; y views_data_export, que es dependencia dura y potencia la exportación CSV.
# Drupal 10.5+ / 11.2+ — instalar AI Metering con su dependencia principal
composer require drupal/ai_metering
# Habilitar el módulo y sus dependencias
drush en ai_metering -y
# Recrear caché
drush cr
Al instalar se crean tres tablas: ai_metering_usage con una fila por llamada, ai_metering_quota con los presupuestos mensuales por usuario y ai_metering_rollup con los agregados del mes. No hace falta tocar el esquema a mano. Si prefieres el navegador, ve a Extender y activa AI Metering; el sistema te avisa si falta alguna dependencia.
En un sitio con despliegue automatizado conviene fijar la versión exacta en composer.lock y leer el changelog: la 1.0.2 corrigió defectos que alteraban el costo estimado.
Configurar cuotas que de verdad corten
Dejar el módulo registrando sin límites es el primer paso obligatorio. El valor por defecto es 100.000 tokens por usuario al mes, y en la pestaña de cuotas puedes definir un presupuesto por rol; un 0 significa heredar el valor global y, si un usuario tiene varios roles, aplica el presupuesto más alto. El ajuste individual por usuario, editable desde el tablero por usuario, siempre gana.
Un orden de magnitud sensato sale de tus propios datos, no de un número inventado:
- Instala el módulo sin cuotas activas y déjalo registrar el trabajo normal durante una o dos semanas.
- Exporta el CSV del tablero por rol y separa el consumo humano del automático: traducción masiva, resúmenes programados y chatbot.
- Fija la cuota mensual como el consumo real de ese rol más un margen de entre 20 y 30 %.
- Activa las cuotas y vigila el chatbot y el módulo de traducción: los procesos por lotes son los primeros en romperse con un tope corto.
Cuando una llamada excede el límite tienes dos caminos. Bloquear es lo correcto para un editor que ya gastó su cuota: dejas el campo de proveedor de fallback vacío y la operación falla con un error. Redirigir a un modelo local tiene sentido cuando el contenido es interno y prefieres que el trabajo siga con Ollama en tu propio servidor, sin costo por token.
# Sincronizar precios de modelos desde la fuente configurada
drush ai-metering:sync-pricing
# Ajustar el presupuesto mensual de un usuario
drush ai-metering:set-user-budget <uid> <tokens>
# Reiniciar el contador de un mes concreto
drush ai-metering:quota-reset <uid> --month=2026-09
# Revisar el log si una cuota se está disparando mal
drush watchdog:show --count=50 --severity=Warning
Activa además las alertas: el umbral global por defecto es 75 % del presupuesto y se puede ajustar por usuario. Hay canal por correo y por webhook, este último con POST en JSON y validaciones que descartan localhost y rangos privados para no abrir un hueco hacia tus servicios internos. Para cumplimiento, define usage_retention_days, porque el valor por defecto 0 conserva el log crudo de forma indefinida y eso incluye datos de consumo de personas que ya están saliendo de la empresa.
La limitación que debes conocer antes de confiar en los números
La versión 1.0.2 corrigió tres defectos de medición. El más grave era el doble conteo en llamadas en streaming: la misma petición se registraba dos veces, así que tokens y costo quedaban inflados. También se contabilizaban dos veces los tokens cacheados de OpenAI y Gemini, y se agregó un techo mensual de tokens para las peticiones anónimas, que hasta ese momento evadían la cuota por completo.
Esto tiene una lectura práctica: no actives cuotas sobre datos generados con 1.0.0 o 1.0.1 y los tomes como línea base. Instala la 1.0.2 o superior, purga las mediciones antiguas y vuelve a medir desde cero. Y recuerda que los costos que muestra el módulo son estimaciones con precios de referencia, no la factura del proveedor: sirven para detectar tendencias y fijar topes, pero para cuadrar la contabilidad manda la factura.
El módulo está en drupal.org/project/ai_metering y la documentación, con instalación, permisos, tableros, comandos Drush y la API de hooks, está en project.pages.drupalcode.org/ai_metering.
Cómo acotar el presupuesto sin frenar el trabajo
Un presupuesto de IA no se define solo por roles, también por tipo de operación. Las traducciones automáticas consumen tokens de entrada y salida de forma masiva y son la primera candidata a un techo mensual; el módulo permite preestimar la relación entre tokens de salida y de entrada para ese tipo de operación. Los resúmenes de contenido son baratos. Un chatbot abierto a usuarios anónimos es el que puede descontrolarse, y por eso la corrección de la 1.0.2 sobre peticiones anónimas es justo el punto donde mirar.
La práctica que funciona es separar tres presupuestos: uno para contenido interno con límite por editor, uno para procesos automáticos con techo global mensual y uno para funciones abiertas al público con tope de tokens y fallback local. Así nadie se queda sin trabajar porque un chatbot se comió el presupuesto del mes.
Preguntas frecuentes
¿AI Metering funciona con cualquier proveedor de IA? Sí. Como se suscribe al sistema de eventos de drupal/ai, intercepta todas las llamadas sin configuración adicional por proveedor, siempre que la petición pase por ese módulo. Si integras un proveedor con una llamada directa a la API, esa llamada no se registra.
¿Puedo limitar el gasto por usuario y no solo el total? Sí. Hay tableros por usuario y por rol, y las cuotas se definen para un rol o para una cuenta concreta. El límite por usuario siempre tiene prioridad sobre el del rol, y el ajuste se edita en línea desde el tablero.
¿Qué pasa cuando un usuario se pasa de su cuota? Según la configuración, la llamada se bloquea o se redirige al proveedor local que definas, normalmente Ollama. En ambos casos queda registrada, con sus tokens y su costo estimado, así que puedes ver quién rompió el límite y con qué operación.
¿Los costos que muestra son los mismos que cobra el proveedor? No exactamente. Son estimaciones calculadas con los precios sincronizados de LiteLLM o models.dev, que además se ajustan con el tipo de cambio vigente. Para tendencias y topes son suficientes; para la contabilidad usa la factura del proveedor como fuente de verdad.
¿Sirve para Drupal 10? Sí, es compatible con Drupal 10.5 o superior y con Drupal 11.2 o superior, y requiere PHP 8.2 o superior, que en Drupal 11 ya es 8.3. Se instala con composer require drupal/ai_metering y necesita el módulo drupal/ai en ^1.4.2.
Si todavía no mides lo que pasa en tu Drupal, el primer paso es concreto: instala la 1.0.2, déjala una semana registrando sin cuotas y exporta el CSV del tablero por rol. Con eso decides el presupuesto con datos tuyos y no con suposiciones. Si después quieres llevar ese mismo consumo a un ERP a medida o a un POS con licencia vitalicia donde también nazcan los costos de IA, conversamos en saibher.com.