Control de costes
Dónde se consumen realmente los tokens en una carga de trabajo con agentes y las cuatro palancas que afectan a la factura.
Si has ejecutado un agente de programación durante una jornada laboral completa, ya has visto la factura. Los bucles de los agentes consumen tokens de una forma que nunca ocurre en un chat normal: cada archivo leído, cada resultado de herramienta y cada diff se incorpora al contexto y se reenvía en el siguiente turno.
Los tokens de salida son los caros
En todos los modelos de vanguardia, la salida cuesta entre 4 y 5 veces lo que cuesta la entrada. Un modelo que piensa en voz alta en su respuesta final gasta dinero más rápido que uno que responde de forma concisa. Limita max_tokens de forma deliberada y prioriza modelos concisos para el trabajo rutinario.
| Modelo | $/M de entrada | $/M de salida | Proporción |
|---|---|---|---|
claude-opus-4-8 | $3 | $15 | 5× |
claude-sonnet-4-6 | $0.90 | $4.50 | 5× |
claude-haiku-4-5 | $0.40 | $2 | 5× |
gemini-3-flash | $0.20 | $1.20 | 6× |
Las cuatro palancas
- Enruta según la tarea. La clasificación, la extracción y el enrutamiento no necesitan Opus: Haiku realiza estas tareas por aproximadamente una séptima parte del precio. Reserva el modelo insignia para trabajos que exijan mucho razonamiento.
- Caché de prompts. Los prompts de sistema y las definiciones de herramientas que se mantienen estables se vuelven a leer desde la caché por una fracción del precio de entrada. Para los agentes, esta es la palanca de mayor impacto: consulta Caché de prompts.
- Recorta el contexto en cada turno. No reenvíes una transcripción completa; conserva los turnos recientes junto con un resumen actualizado. El crecimiento ilimitado del contexto es lo que convierte una sesión de $2 en una de $20.
- Limita el bucle. Establece un límite estricto de pasos para las ejecuciones autónomas, de modo que un agente bloqueado no pueda seguir en bucle indefinidamente.
Estimar antes de ejecutar
IN_RATE = {class="s">"claude-opus-4-8": 3.0, class="s">"claude-sonnet-4-6": 0.9, class="s">"claude-haiku-4-5": 0.4}
OUT_RATE = {class="s">"claude-opus-4-8": 15.0, class="s">"claude-sonnet-4-6": 4.5, class="s">"claude-haiku-4-5": 2.0}
def cost(model, tok_in, tok_out):
return tok_in / 1e6 * IN_RATE[model] + tok_out / 1e6 * OUT_RATE[model]
print(cost(class="s">"claude-opus-4-8", 20_000, 2_000)) class=class="s">"c"># 0.09
print(cost(class="s">"claude-sonnet-4-6", 20_000, 2_000)) class=class="s">"c"># 0.027
print(cost(class="s">"claude-haiku-4-5", 20_000, 2_000)) class=class="s">"c"># 0.012
La misma tarea con 20K de entrada y 2K de salida cuesta 7.5 veces más en Opus que en Haiku. Si la tarea es de clasificación, ese sobrecoste no aporta nada.
Medir después
Cada respuesta incluye un usage objeto. Regístralo junto con un identificador de solicitud y un tipo de tarea; sin eso, la optimización de costes se basa en conjeturas. El panel de la pasarela muestra el uso por modelo, pero solo tus propios registros saben *por qué* se hizo una solicitud.