Monitorizar un sistema de IA en producción es registrar cada llamada al modelo con su calidad, sus tokens, su coste y su latencia, y alertar cuando alguna señal se aparta de lo normal. Sin esas métricas, un cambio de modelo o de prompt degrada las respuestas sin que nadie lo note. Lo dejamos instalado en cada uno de nuestros proyectos de IA a medida para empresas.
Una respuesta mala no devuelve un error 500: llega rápido y con tono seguro, pero equivocada. Si además el sistema es de alto riesgo, el Reglamento de IA para empresas y sus obligaciones de registro exige al responsable del despliegue vigilar su funcionamiento y conservar los registros, desde el 2 de diciembre de 2027 para los usos del anexo III.
Al terminar sabrás qué señales medir y qué umbrales justifican una alerta en un proyecto de integración de IA en Madrid.
Qué es monitorizar IA en producción
Monitorizar IA en producción es medir de forma continua la calidad de las respuestas, el consumo de tokens, la latencia y los cambios en los datos de un sistema que usa modelos de lenguaje, guardando una traza por cada llamada para poder investigar después qué respondió el modelo y con qué entrada.
El estándar abierto para esas trazas son las convenciones semánticas de OpenTelemetry para IA generativa, todavía en estado Development. Definen atributos como gen_ai.request.model, gen_ai.usage.input_tokens y gen_ai.usage.output_tokens, y te evitan atarte al panel de un único proveedor.
Las cuatro señales al monitorizar un sistema de IA
Un sistema de IA en producción se vigila con cuatro señales, y cada una necesita su propia fuente de datos:
- Calidad de respuesta: un conjunto fijo de casos de referencia que se ejecuta en cada cambio de prompt o de modelo, más una muestra revisada por personas. En un RAG que responde con tus documentos, comprueba también que la respuesta cita lo recuperado.
- Coste por token: tokens de entrada y de salida por petición, incluidos los de caché, multiplicados por el precio de tu contrato y agrupados por función. Es la base del coste real de automatizar con IA.
- Latencia: percentil 95, y en respuestas por streaming el tiempo hasta el primer fragmento, que OpenTelemetry también define como métrica.
- Deriva: cambios en lo que entra (temas o idiomas) o en lo que sale (categorías o motivos de fin de respuesta).
En un clasificador de correos y documentos con IA, la tasa de documentos enviados a revisión humana resume calidad y deriva en un solo número.
Qué alertas configurar y cuáles evitar
Las alertas de un sistema de IA deben disparar por tendencias de una ventana de tiempo, nunca por una respuesta aislada:
- Alerta inmediata: errores del proveedor o percentil 95 de latencia por encima del umbral. Lo mismo si el coste de la ventana sale del presupuesto.
- Revisión semanal: deriva de categorías y resultados del conjunto de referencia.
- En agentes: número de herramientas invocadas por tarea. Un bucle en agentes de IA con acceso al ERP dispara el coste antes que cualquier otra señal.
- Evítalas: alertas por cada respuesta mala. Generan ruido y el equipo deja de mirarlas.
Cada alerta inmediata debería abrir una incidencia con su prioridad y su SLA, con la traza adjunta.
Qué registrar sin chocar con el RGPD
Los registros de un sistema de IA contienen prompts y respuestas, y con ellos datos personales de clientes. Guarda la traza completa con acceso restringido y un plazo de borrado definido, y en los paneles usa solo métricas agregadas. Para sistemas de alto riesgo, el artículo 26 del Reglamento (UE) 2024/1689 exige conservar los registros generados al menos seis meses, salvo que otra norma diga lo contrario.
CodeZone Pro Tip: revisa cada ventana de llamadas al modelo y devuelve las alertas de coste, latencia, errores y revisión humana.
import statistics
from dataclasses import dataclass
@dataclass
class Llamada:
modelo: str
tokens_entrada: int # gen_ai.usage.input_tokens
tokens_salida: int # gen_ai.usage.output_tokens
latencia_s: float
error: bool
a_revision: bool # la respuesta terminó en revisión humana
def revisar_ventana(llamadas, precios_mtok, presupuesto_eur, p95_max_s, error_max, revision_max):
if len(llamadas) < 20:
return ["muestra insuficiente: no se evalúa para no generar ruido"]
coste = sum((l.tokens_entrada * precios_mtok[l.modelo][0] + l.tokens_salida * precios_mtok[l.modelo][1]) / 1e6
for l in llamadas)
# p95 y no la media: la media esconde las esperas que hacen abandonar al usuario
p95 = statistics.quantiles([l.latencia_s for l in llamadas], n=20)[-1]
tasa_error = sum(l.error for l in llamadas) / len(llamadas)
tasa_revision = sum(l.a_revision for l in llamadas) / len(llamadas)
alertas = [f"coste {coste:.2f} EUR > {presupuesto_eur}"] if coste > presupuesto_eur else []
alertas += [f"latencia p95 {p95:.1f} s"] if p95 > p95_max_s else []
alertas += [f"errores {tasa_error:.0%}"] if tasa_error > error_max else []
alertas += [f"revisión humana {tasa_revision:.0%}: posible deriva"] if tasa_revision > revision_max else []
return alertas
# Datos y precios hipotéticos: sustituye por tus trazas y por los precios de tu contrato
ventana = [Llamada("modelo-a", 1800, 300, 1.2 + i / 10, i == 7, i % 5 == 0) for i in range(30)]
print(revisar_ventana(ventana, {"modelo-a": (1.0, 4.0)}, presupuesto_eur=0.05,
p95_max_s=3.0, error_max=0.05, revision_max=0.15))Esta función convierte miles de trazas en cuatro números por ventana y en una lista corta de alertas con su motivo. Tu equipo actúa sobre tendencias y detecta una subida de coste o de revisiones antes de que llegue la factura del proveedor o la queja del cliente.
Lo Que Cuesta una IA Que Nadie Vigila
Una IA sin monitorizar falla en silencio: responde peor tras un cambio de versión o gasta más tokens con un prompt nuevo, y nadie lo ve hasta la factura. Medir desde el primer día cuesta poco comparado con reconstruir la historia de un error sin trazas.
En Codezone desplegamos sistemas de IA con sus trazas y sus alertas conectadas a tu soporte. Pídenos una revisión de tu IA en producción y te decimos qué señales te faltan.