Módulo 09 · Sistema de Conocimiento — Ingeniería de Agentes y MCP

Eficiencia y Costos en Agentes Claude

Prompt caching, model routing, parallel worktrees, Batch API y control de context window. De $2,400 a $680/mes sin pérdida de calidad.

← Volver al Dashboard

🏭 Analogía: El Director de Fábrica Toyota

Toyota no tenía mejor producto que Ford en los años 70. La diferencia fue el Sistema de Producción Toyota — eliminar el desperdicio (muda) en cada paso. Un agente sin optimizar tiene los mismos desperdicios: usa el modelo más caro para tareas triviales, no hace cache del contexto repetido, carga documentos enormes en cada sesión, procesa todo en serie cuando podría ser paralelo.

La analogía falla aquí: Toyota minimiza tiempo de ciclo. En agentes, el objetivo es maximizar costo/valor — no minimizar costo absoluto. Un Opus bien usado en una tarea crítica puede ser la inversión más rentable del día.

Precios Claude API — Mayo 2026

A Precios oficiales (platform.claude.com/docs/en/about-claude/pricing):

🐦 Haiku 4.5
$1/1M input
$5/1M output
Clasificación Triage Formateo Summaries
Decisiones simples, alta repetición, bajo costo por volumen
⚡ Sonnet 4.6
$3/1M input
$15/1M output
Código producción Revisión PRs Debug
Balance óptimo calidad/costo. El default para la mayoría de producción.
🏆 Opus 4.6
$5/1M input
$25/1M output
Arquitectura Seguridad Investigación
Razonamiento profundo. -67% vs Opus 4.1 ($15→$5). Ahora más accesible.

Conversión de tokens a palabras

ContenidoTokens estimadosCosto (Sonnet)
1,000 palabras en español~1,667 tokens$0.005 (input)
Función Python de 50 líneas~600 tokens$0.002 (input)
CLAUDE.md de 100 líneas~1,700 tokens$0.005 (input)
Sesión de Claude Code activa (1h)~30,000 tokens$0.09 (input)
Sistema multi-agente complejo~150,000 tokens$0.45 (input)

Prompt Caching — La Mayor Palanca de Ahorro

A Almacena bloques de prompt que se repiten entre llamadas. La primera vez paga 1.25× el precio normal (overhead de escritura). Cada lectura subsecuente: solo 10% del precio normal = 90% de descuento.

Matemática del caching (Sonnet 4.6)

OperaciónPrecio/1M tokensvs. Sin caché
Sin caché (base)$3.00
Escritura de caché$3.75 (1.25×)+25% (overhead inicial)
Lectura de caché$0.30 (0.1×)-90% de ahorro

Break-even del caching

Con 50,000 tokens en caché (Sonnet):
  Sin caché:    50K × $3.00/1M = $0.150 por llamada
  Con caché:
    Escritura:  50K × $3.75/1M = $0.188 (primera vez)
    Lectura:    50K × $0.30/1M = $0.015 (2da llamada en adelante)

Break-even: ~1.4 lecturas (desde la 2ª lectura hay ahorro neto)
Ahorro después de 10 lecturas: 90% por llamada

Implementación en Python SDK

import anthropic
client = anthropic.Anthropic()

SYSTEM_PROMPT = """[...documentación del proyecto, 20K tokens...]"""

# Primera llamada — escribe el cache
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    system=[{
        "type": "text",
        "text": SYSTEM_PROMPT,
        "cache_control": {"type": "ephemeral"}  # ← activa caching
    }],
    messages=[{"role": "user", "content": "Revisa el PR #127"}]
)

# Segunda+ llamadas — 90% de descuento en el system prompt
print(f"Cache write: {response.usage.cache_creation_input_tokens}")
# → siguientes llamadas leerán del cache automáticamente

Casos reales de ahorro

Sistema RCA (Root Cause Analysis) — 90% de reducción
Infraestructura de producción · Dev.to, 2026
90% ahorro en costos 90K tokens de contexto fijo 90%+ cache hit rate

Sistema de análisis de incidentes con 90K tokens de contexto de infraestructura (siempre el mismo). Sin caching: $0.27 por RCA. Con caching: $0.027. Con 500 RCAs/mes → $1,458/año en ahorro solo del contexto.

SitePoint — Asistente de código con 50K tokens de codebase
Análisis publicado · SitePoint, 2025
60% reducción total $150/día → $15/día $49,275/año ahorrados

Asistente de código con 50K tokens de contexto de codebase repetido en cada solicitud. 1,000 solicitudes/día. Sin caché: $150/día. Con caché: $15/día (primeras 10% escriben, 90% leen). Ahorro anual: $49,275 de un solo endpoint.

Batch API — 50% de Descuento para Trabajo Asíncrono

A El Message Batches API procesa solicitudes de forma asíncrona (resultados en hasta 24 horas), con descuento fijo del 50% en todos los tokens.

Precios con Batch API vs. Tiempo Real

ModeloInput (tiempo real)Input (batch)Output (batch)
Haiku 4.5$1.00$0.50$2.50
Sonnet 4.6$3.00$1.50$7.50
Opus 4.6$5.00$2.50$12.50

¿Cuándo usar Batch API?

Caso de usoUsa BatchRazón
Pipeline de documentos (contratos, facturas)✓ SíAlta latencia aceptable, alto volumen
Enriquecimiento masivo de datos✓ SíMiles de registros, no urgente
Jobs analíticos nocturnos✓ SíEl horario es el punto — ya es async
Evaluaciones offline de modelos✓ SíBenchmarks y evals no son urgentes
Chatbot interactivo en tiempo real✗ NoEl usuario espera respuesta inmediata
Debug de bugs en producción✗ NoUrgencia alta — 24h inaceptable

Implementación del Batch API

import anthropic
client = anthropic.Anthropic()

# Preparar un batch de documentos a procesar
requests = []
for i, documento in enumerate(lista_documentos):
    requests.append({
        "custom_id": f"doc-{i}",
        "params": {
            "model": "claude-sonnet-4-6",
            "max_tokens": 500,
            "messages": [{
                "role": "user",
                "content": f"Extrae campos clave: {documento['contenido']}"
            }]
        }
    })

# Crear el batch
batch = client.messages.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")  # guardar para recuperar después

# Recuperar resultados (en otro script, horas después)
batch = client.messages.batches.retrieve(batch_id)
if batch.processing_status == "ended":
    for result in client.messages.batches.results(batch_id):
        print(result.result.message.content[0].text)

Ejemplo de ahorro: 500 documentos × 3K tokens de input × Sonnet:
Tiempo real: 500 × $0.009 = $4.50 → Batch: $2.25 · Ahorro: $2.25 solo en input

Model Routing — El Arte de Usar el Modelo Correcto

B Usar siempre el modelo más caro (Opus) o siempre el más barato (Haiku) es subóptimo. El routing inteligente puede reducir costos 50-80% sin pérdida de calidad.

Split típico de producción optimizado

60%
Haiku
Clasificación, triage, formateo, summaries simples
30%
Sonnet
Código de producción, revisión PRs, debug moderado
10%
Opus
Arquitectura compleja, seguridad crítica, investigación

vs. todo Sonnet → ahorro del 45-55% en costo total mensual

Router automático con Haiku como clasificador

import anthropic
client = anthropic.Anthropic()

def clasificar_complejidad(tarea: str) -> str:
    """Usa Haiku (más barato) para decidir qué modelo usar — meta-optimización"""
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=10,  # solo necesita responder: baja, media, alta
        messages=[{"role": "user", "content": f"""
Clasifica la complejidad de esta tarea de software.
Tarea: {tarea}
Responde SOLO: baja, media, o alta

baja  → clasificación, formateo, summary simple, transformación mecánica
media → código producción, revisión PR, debug de función individual
alta  → arquitectura sistemas, análisis seguridad completo, diseño multi-componente
"""}]
    )
    return response.content[0].text.strip().lower()

def ejecutar_tarea(tarea: str, contenido: str) -> str:
    complejidad = clasificar_complejidad(tarea)
    modelos = {
        "baja":  "claude-haiku-4-5-20251001",
        "media": "claude-sonnet-4-6",
        "alta":  "claude-opus-4-6",
    }
    return client.messages.create(
        model=modelos[complejidad],
        max_tokens=4096,
        messages=[{"role": "user", "content": f"{tarea}\n\n{contenido}"}]
    )

Tabla de asignación por tipo de tarea

Tipo de tareaModeloRazón
Clasificación, triage, routingHaikuDecisión binaria, no requiere razonamiento profundo
Formateo, transformación de datosHaikuTarea mecánica, predecible, alta repetición
Código de producción generalSonnetBalance calidad/costo óptimo
Revisión de código y PRsSonnetRazonamiento moderado sobre código
Arquitectura de sistemasOpusMulti-step reasoning, trade-offs complejos
Análisis de seguridad críticoOpusAlta precisión requerida, costo justificado

Gestión del Context Window — /compact y Disciplina de Sesión

A Los tokens de input se cobran en cada llamada. Una sesión con 80K tokens de historial paga esos 80K tokens en cada herramienta que se usa.

El impacto del crecimiento del contexto

Sin /compact — sesión de 8 horas:
  Herramienta 1:    5K tokens de historial  × $3/1M = $0.015
  Herramienta 10:  50K tokens de historial  × $3/1M = $0.150
  Herramienta 20: 100K tokens de historial  × $3/1M = $0.300
  Herramienta 50: 200K tokens de historial  × $3/1M = $0.600
  Total acumulado (estimado):                          ~$8.50

Con /compact (2 veces en la sesión):
  Comprime historial de 80K → resumen denso de 5K tokens
  Las 50 herramientas promedian 15K tokens de contexto
  Total acumulado (estimado):                          ~$1.80
  Ahorro: ~79% del gasto en tokens de input

El premium por contextos >200K tokens

Tamaño de contextoPrecio inputCuándo usar
< 200K tokensPrecio estándarMayoría de casos — ideal
200K – 1M tokens2× el precio estándarAnálisis de codebase completo, documentos muy largos

Cuándo usar /compact vs. nueva sesión

SituaciónAcción recomendada
Sesión lleva 2+ horas de trabajo continuo/compact obligatorio
Claude avisa que el contexto es largo/compact inmediatamente
Nueva feature independiente de lo que se trabajóNueva sesión — CLAUDE.md da el contexto
Bug en módulo diferente al actualSesión enfocada en ese módulo (worktree si necesario)
Pipeline multi-paso con pasos independientesWorktrees paralelos, una sesión por paso

Disciplina de session focus

# Regla: 1 sesión = 1 objetivo claro
# MAL: "Hoy voy a trabajar en el proyecto" → historial mezcla todo
claude  # sesión abierta, trabaja en A, B, C, D entremezclados

# BIEN: Una sesión por objetivo
claude --task "Implementar endpoint /users/profile"  # enfocado
# → contexto pequeño, barato, eficiente

B Branch8 atribuye el 35% de su reducción de costos a la disciplina de session focus: mantener conversaciones estrechas (1 tarea por sesión) redujo el costo promedio por sesión a ~33% del de sesiones abiertas.

Parallel Worktrees — Multiplicar el Throughput

A Git worktrees permiten múltiples ramas en directorios físicos separados, simultáneamente. Claude Code añadió soporte de primera clase con el flag -w en late 2025.

.git/ ←── metadata compartida (un solo repo) │ ├── /proyecto-main/ ← directorio original (branch: main) │ └── claude ← Sesión 1: revisión de código │ ├── /proyecto-feature-auth/ ← worktree (branch: feature/auth) │ └── claude ← Sesión 2: implementando autenticación │ ├── /proyecto-feature-pagos/← worktree (branch: feature/pagos) │ └── claude ← Sesión 3: implementando pagos │ └── /proyecto-hotfix/ ← worktree (branch: hotfix/prod-bug) └── claude ← Sesión 4: corrigiendo bug urgente → 4 agentes trabajando en paralelo, CERO interferencia entre sí → Cambios en auth no afectan pagos, no afectan hotfix

Comandos de setup

# Crear worktrees
git worktree add ../proyecto-feature-auth feature/auth
git worktree add ../proyecto-feature-pagos feature/pagos
git worktree add ../proyecto-hotfix-prod hotfix/prod-bug

# Lanzar Claude Code en paralelo (en terminales separadas)
cd ../proyecto-feature-auth && claude
cd ../proyecto-feature-pagos && claude
cd ../proyecto-hotfix-prod  && claude

# O directamente con el flag -w de Claude Code
claude -w feature/nueva-api    # crea worktree + abre sesión

Impacto en productividad (no en costo directo)

Sin worktrees (secuencial):
  Tarea A: 2 horas
  Tarea B: 2 horas  (espera a que A termine)
  Tarea C: 2 horas  (espera a que B termine)
  Total: 6 horas

Con worktrees (paralelo):
  Tarea A: 2 horas ─┐
  Tarea B: 2 horas  ├── ejecutadas simultáneamente
  Tarea C: 2 horas ─┘
  Total: ~2.5 horas (incluyendo merge)

Ganancia: 3× en throughput de tareas independientes

Cuándo usar worktrees

CondiciónUsa worktrees
Tarea toca más de 3 archivos✓ Sí, siempre
Dos tareas independientes pendientes✓ Sí
Bug urgente mientras hay feature en progreso✓ Sí — hotfix no contamina feature
Tests que tardan 5+ minutos✓ Paralelizar con otra tarea
Cambio de 1-2 archivos simples— No necesario

C Regla de thumb de la comunidad: "Scope worktrees por módulo, no por tarea. Cualquier tarea que toca más de 3 archivos merece su propio worktree." — Dogukan Uraz Tuna (Medium, 2025)

🧮 Calculadora de Ahorro — Antes vs. Después

$0
Costo mensual SIN optimizar
$0
Costo mensual CON optimizar
$0
Ahorro mensual
0%
% de reducción

Stack de Optimización Apilable

Model Routing (Haiku para 60% de tareas)
~45% ahorro • Esfuerzo: Medio
Prompt Caching (sistema prompt + docs)
~85% en texto repetido • Esfuerzo: Bajo
Batch API (tareas no urgentes)
50% en tareas batch • Esfuerzo: Bajo
Output budgeting (max_tokens inteligente)
15-30% en output • Esfuerzo: Bajo
Session focus + /compact
20-35% en input • Esfuerzo: Ninguno

Combinadas: 80-90% de reducción total del gasto API 🎯

Árbol de Decisión — ¿Qué optimización aplicar primero?

¿Cuál es tu situación actual? │ ├── Gasto < $100/mes │ → No optimizar aún. Escala primero, optimiza después. │ El tiempo de implementación no tiene ROI positivo. │ ├── $100-$500/mes │ → Dos acciones de bajo esfuerzo: │ 1. Prompt caching del system prompt (1 hora de implementación) │ 2. Session focus (sin implementación — solo disciplina) │ ├── $500-$2,000/mes │ → Añadir model routing: │ 1. Caching (ya implementado) │ 2. Router Haiku→Sonnet→Opus por complejidad │ 3. /compact sistemático en sesiones largas │ └── > $2,000/mes → Stack completo: 1. Caching del system prompt (semanas de TTL si posible) 2. Model routing con clasificador Haiku 3. Batch API para cualquier pipeline no interactivo 4. max_tokens calibrado por tipo de tarea 5. Parallel worktrees para throughput máximo