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
| Tarea | Budget sugerido |
|---|---|
| Análisis de código simple | 2.000 |
| Diseño de arquitectura | 8.000 |
| Problemas matemáticos difíciles | 10.000 |
| Análisis de sistemas complejos | 15.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
passExtended 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.