Un pico del 340% en el gasto de LLM: la culpa era de un job de reintentos
Un equipo vio su presupuesto diario de LLM pasar de 1.200 a 4.080 dólares sin tocar modelos ni configuración. El coste por llamada no había cambiado; lo que había cambiado era cuántas llamadas contaba cada tarea.
Un panel de finanzas se puso en rojo a las 02:17 UTC. El presupuesto de LLM había saltado de los 1.200 dólares previstos a 4.080 en un solo día: un 340% de desviación y ningún aviso antes de que llegara la factura. Nadie del equipo lo había provocado a propósito, y eso es lo incómodo del gasto en IA: no se anuncia hasta que alguien lo cobra.
El camino de depuración fue bastante ordenado y conviene copiarlo. Primero descartaron cambios de modelo o de configuración, que era la hipótesis fácil. Después miraron volumen de uso: plano respecto a la semana anterior, así que no había más tráfico. El pico apareció al bajar al coste por petición. Había un único endpoint fuera de rango, un job de reintentos en segundo plano.
El coste por llamada no cuenta la historia
El dato que explica todo es sutil. El coste medio por tarea completada se había triplicado, pero el coste por llamada individual seguía igual. Los reintentos se estaban registrando como llamadas normales de precio normal, en lugar de agregarse como una sola tarea que costaba el triple. Visto desde el sistema de facturación, no había anomalía: había más llamadas, todas a tarifa estándar. Visto desde el trabajo real, una operación estaba costando tres veces lo que debía.
La solución fue instrumentar de otra forma: asignar un identificador de tarea estable y sumar el gasto por tarea, no por llamada bruta. Con eso, un reintento deja de ser invisible y aparece como sobrecoste de la unidad de trabajo que lo genera.
Conviene señalar que las cifras son las que da el afectado, sin verificación de terceros, y que no hay nombre de proveedor, modelo ni plataforma de observabilidad. Tampoco se sabe si el job reintentaba por un fallo transitorio del proveedor, por un timeout mal calibrado o por un bucle propio.
Aun así, el patrón merece atención. Casi todas las pasarelas y proveedores facturan por llamada, y esa es la métrica que acaba en los cuadros de mando por defecto. Mientras la unidad de contabilidad siga siendo la llamada y no la tarea, cualquier cosa que multiplique intentos —reintentos, colas que reprocesan, agentes que vuelven a pedir la misma respuesta— se esconde en el total hasta que el desvío es grande. Si tienes LLM en producción, la pregunta útil no es cuánto cuesta cada llamada, sino cuántas llamadas hace falta para cerrar una tarea y qué pasa cuando algo falla por el camino.
