Extended thinking es el modo en que Claude “piensa en voz alta” antes de dar una respuesta. En lugar de saltar directamente a la contestación, Claude trabaja el problema internamente y puedes ver ese proceso. Para tareas complejas, la diferencia en calidad es significativa.

Cómo funciona internamente

Cuando activas extended thinking, Claude genera un bloque thinking antes del bloque text de la respuesta. Este bloque contiene el razonamiento interno: hipótesis, verificaciones, correcciones de errores. No es un adorno — es el proceso real que mejora la respuesta final.

El thinking consume tokens de salida pero Anthropic lo factura diferente: los tokens de thinking cuestan lo mismo que los de salida normales pero no cuentan para el límite de contexto de la misma forma.

Activar extended thinking en la API

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    messages=[{
        "role": "user",
        "content": "Diseña una arquitectura de microservicios para un e-commerce con 50k usuarios concurrentes."
    }]
)

for block in response.content:
    if block.type == "thinking":
        print("RAZONAMIENTO:", block.thinking)
    elif block.type == "text":
        print("RESPUESTA:", block.text)

El parámetro budget_tokens controla cuántos tokens puede usar el thinking. Más presupuesto = más razonamiento = mejor respuesta (con mayor coste y latencia).

Cuándo usar extended thinking

Vale la pena activarlo para:

  • Problemas de arquitectura de software complejos
  • Análisis de código con múltiples dependencias
  • Razonamiento matemático o lógico
  • Decisiones con muchos trade-offs
  • Tareas donde el primer intento suele ser incorrecto

No hace falta para:

  • Generación de texto creativo
  • Traducciones
  • Extracción de datos estructurados
  • Preguntas con respuesta directa

Budget tokens recomendado por caso

TareaBudget sugerido
Análisis de código simple2.000
Diseño de arquitectura8.000
Problemas matemáticos difíciles10.000
Análisis de sistemas complejos15.000+

El modelo para solo cuando ha llegado a una respuesta satisfactoria, no cuando agota el budget. Si ves que el thinking se corta antes de concluir, sube el budget.

Streaming con extended thinking

Para producción, usa streaming para no bloquear mientras Claude piensa:

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 8000},
    messages=[{"role": "user", "content": "..."}]
) as stream:
    for event in stream:
        if hasattr(event, 'type') and event.type == 'content_block_delta':
            # Procesar thinking o text según block_index
            pass

Extended thinking es una de las capacidades más infrautilizadas de Claude. Para los problemas donde la primera respuesta no basta, es el cambio que más impacto tiene en la calidad.