Claude 3.7 Sonnet introduce Extended Thinking como característica activable por el desarrollador: puedes pedirle al modelo que razone extensamente antes de responder, con control sobre el presupuesto de tokens de pensamiento. Es la respuesta de Anthropic a o1 de OpenAI, pero con un enfoque diferente: la capacidad es opcional y configurable.
Qué es Extended Thinking
En modo estándar, Claude 3.7 responde como cualquier LLM moderno. Con Extended Thinking activado, el modelo genera un “bloque de razonamiento” interno antes de la respuesta final. Puedes configurar cuántos tokens de razonamiento permite el modelo (el presupuesto).
Los tokens de razonamiento aparecen en la respuesta de la API como bloques separados, aunque por defecto están encriptados (el modelo sabe qué pensó pero tú no lo ves). Puedes optar por ver el razonamiento si quieres auditarlo.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # cuánto puede "pensar" antes de responder
},
messages=[{
"role": "user",
"content": "Resuelve esta ecuación diferencial: dy/dx = y·sin(x), y(0) = 1"
}]
)
# La respuesta incluye bloques de tipo "thinking" y "text"
for block in response.content:
if block.type == "thinking":
print("Razonamiento:", block.thinking)
elif block.type == "text":
print("Respuesta:", block.text)
Cuándo activar Extended Thinking
Actívalo para:
- Problemas matemáticos complejos
- Debugging de código con múltiples posibles causas
- Análisis que requieren considerar múltiples hipótesis
- Preguntas de lógica o planificación compleja
- Evaluación de opciones con muchas variables
No lo actives para:
- Generación de contenido (artículos, emails, código repetitivo)
- Extracción de información de documentos
- Clasificación o tareas de respuesta corta
- Conversación casual
La regla: si un experto humano necesitaría reflexionar varios minutos para responder bien, Extended Thinking ayuda. Si la respuesta es relativamente directa, añade latencia y coste sin beneficio.
Los trade-offs concretos
Latencia: los tokens de razonamiento generan latencia adicional proporcional al presupuesto. Con budget_tokens=10000, espera 5-15 segundos adicionales antes de recibir la respuesta.
Coste: los tokens de razonamiento se cobran como tokens de output. Con budget_tokens=10000, el coste puede ser significativamente mayor que una respuesta estándar.
Calidad: la mejora es real pero no uniforme. En matemáticas y problemas de lógica, la diferencia es notable. En tareas de escritura o generación, prácticamente no hay diferencia.
Benchmark de calidad
En nuestras pruebas con un conjunto de problemas de matemáticas universitarias y debugging de código:
| Configuración | Precisión | Latencia media |
|---|---|---|
| Sin thinking | 67% | 2.1s |
| budget_tokens=1000 | 74% | 4.5s |
| budget_tokens=5000 | 82% | 8.2s |
| budget_tokens=10000 | 88% | 14.3s |
Hay rendimientos decrecientes: pasar de 5000 a 10000 tokens añade más latencia de lo que mejora la precisión para la mayoría de casos.
Extended Thinking vs modo estándar en código
Para debugging, Extended Thinking es notablemente mejor. Dado un stack trace y código relevante, el modelo con Extended Thinking identifica la causa raíz con más frecuencia y propone fixes más quirúrgicos.
Para generar código nuevo siguiendo especificaciones claras, la diferencia es mínima. El modo estándar es suficiente.
Comparación con o3
o3 de OpenAI también usa razonamiento extendido pero el control del desarrollador es menor: puedes elegir entre “low”, “medium” y “high” effort, no un presupuesto de tokens explícito.
La ventaja de Claude 3.7: control más granular del trade-off coste/calidad. La ventaja de o3: en algunos benchmarks de razonamiento puro, o3 high todavía supera a Claude 3.7 con budget máximo.
Para uso práctico en producción, la diferencia es menos importante que elegir el presupuesto de razonamiento correcto para cada caso de uso.
Recomendación de implementación
No actives Extended Thinking por defecto en toda tu aplicación. Identifica las queries donde más importa (alta complejidad, alto impacto del error) y actívalo selectivamente.
def needs_extended_thinking(query: str) -> bool:
# Heurística simple: preguntas con palabras clave de alta complejidad
complex_indicators = ["cuánto", "por qué", "analiza", "compara", "optimiza", "depura"]
return any(indicator in query.lower() for indicator in complex_indicators)
def generate_response(query: str):
thinking_config = {"type": "enabled", "budget_tokens": 5000} if needs_extended_thinking(query) else {"type": "disabled"}
# ...
Análisis basado en uso de la API de Claude 3.7 Sonnet durante febrero-marzo 2026.