Lo que gasto en APIs para 61 agentes 24/7 — y cómo bajé el costo 30% sin tocar el código
$14 al mes. Eso es lo que pago en APIs para mantener 61 crons con agentes de IA corriendo 24/7 en una Raspberry Pi. Cuando empecé, gastaba el doble. No porque tuviera más agentes. Porque tenía menos criterio.
En resumen
- Mantengo 61 crons con agentes de IA en una Raspberry Pi por $14 al mes. Te cuento los 5 cambios que hice para reducir el costo a la mitad — sin tocar el código de los agentes.
- ≥3 tool calls idénticos consecutivos → el agente está atrapado. En vez de dejarlo quemar presupuesto, se aborta el ciclo, se inyecta un mensaje correctivo, y se reintenta.
- Resultado: 30 de 34 crons con LLM usan Flash. Los 4 que usan Pro son el Trend Analyzer, el EEAT Publisher, Genesis Core,
Los números reales
Mi stack usa DeepSeek V4 en dos versiones:
- Flash: $0.14 por millón de tokens de entrada, $0.55 por millón de output
- Pro: $0.55 por millón de tokens de entrada, $2.19 por millón de output
Tengo 27 crons no_agent que no gastan tokens. Ejecutan scripts puros: backups, health checks, syncs de archivos. Cero costo de LLM.
Los otros 34 sí usan DeepSeek. La mayoría Flash. Solo 4 usan Pro.
El total mensual ronda los $14. Esto incluye todos los artículos, auditorías SEO, análisis de tendencias, sincronización del segundo cerebro, y el publicador que está escribiendo esto ahora mismo.
Dónde estaba tirando plata
Error 1: mandar todo a Pro. Cada cron que generaba un artículo iba con el modelo más caro. Una tarea de research de 3,000 tokens de entrada no necesita Pro. Flash da resultados idénticos para el 80% de los casos y cuesta 4x menos.
Error 2: sin límite de contexto. Un agente en loop acumula contexto. Cada iteración añade el output anterior al prompt. En 10 iteraciones, tu costo por llamada se triplicó. Y el modelo empeora — más contexto = más confusión.
Error 3: reintentos ciegos. Un cron falla con error 500. Reintentás con el mismo prompt gigante. Volvés a pagar por todo el contexto. Fallás de nuevo. Tercer reintento. En 3 intentos fallidos podés haber gastado lo mismo que un día entero de operación normal.
Error 4: sin compresión. El modelo no necesita ver palabra por palabra lo que pasó hace 8 iteraciones. Necesita el resumen: "step 2: encontré X, falló. step 3: probé Y, funcionó." Punto.
Los 5 cambios que hice
1. Model routing cascade
Regla simple: si una tarea históricamente usa menos de 3 tool calls, va con Flash. Si requiere razonamiento multi-paso o generación de contenido largo, va con Pro.
Implementé esto como un patrón en el sistema de auto-reparación. El sistema monitorea el costo por cron y sugiere downgrades.
Resultado: 30 de 34 crons con LLM usan Flash. Los 4 que usan Pro son el Trend Analyzer, el EEAT Publisher, Genesis Core, y el Cornerstone — cosas que genuinamente se benefician de más razonamiento.
2. Context compression al 80%
Cuando el contexto acumulado pasa el 80% del límite del modelo, el sistema comprime automáticamente. Los pasos previos se resumen en 1-2 líneas cada uno. Se preservan decisiones clave. Se descarta output redundante.
Esto no solo ahorra tokens. Hace que el agente tome mejores decisiones. Un modelo ahogado en contexto es un modelo confundido.
3. Error feedback loop en vez de reintento ciego
Si un cron falla, en vez de reintentar el mismo prompt (pagando de nuevo por todo el contexto), el sistema alimenta mensaje de error + objetivo original al modelo y le pide una estrategia alternativa.
Esto es más barato Y más efectivo. El modelo recibe ~200 tokens de feedback en vez de ~5,000 tokens del prompt original completo.
4. Output constraints con JSON schema
Para crons que retornan datos estructurados (auditorías, monitoreo), fuerzo response_format={type:'json_object'}. Esto reduce tokens de output en 30-40%, elimina errores de parseo, y hace que el output sea directamente procesable sin post-procesamiento.
5. Dead loop detection con abort
≥3 tool calls idénticos consecutivos → el agente está atrapado. En vez de dejarlo quemar presupuesto, se aborta el ciclo, se inyecta un mensaje correctivo, y se reintenta. Si falla 2 veces más, se pausa el cron.
Un solo cron atrapado en loop me costó $0.80 en una hora antes de implementar esto. Con 61 crons, el riesgo acumulado es real.
Lo que no esperaba
El ahorro más grande no vino de cambiar modelos. Vino de reducir iteraciones innecesarias.
Un agente que hace 3 llamadas bien dirigidas gasta menos que uno que hace 10 llamadas a ciegas, aunque uses el modelo más barato para las 10.
La estructura del harness — validación, límites de iteración, detección de loops, compresión de contexto — impacta el costo más que la elección del modelo.
Los números finales
| Categoría | Antes | Ahora |
|---|---|---|
| Crons con LLM | 34 | 34 |
| Usando Pro sin necesidad | 15 | 4 |
| Costo mensual APIs | ~$28 | ~$14 |
| Tokens perdidos en loops | ~200K/mes | ~0 |
| Errores por reintento ciego | 8-10/mes | 0-1/mes |
$14 al mes. Podés gastar más en café. Pero acá no es la plata. Es la diferencia entre despertar con 10 notificaciones de error y despertar con cero. Eso es lo que vale.
Si estás armando agentes, medí tus costos por cron, no en aggregate. Un error chico repetido 60 veces por día no es chico. Y documentá cada fallo — porque va a volver, y la segunda vez debería arreglarse solo.