Habilitar el pensamiento adaptativo con thinking: {type: 'adaptive'}
El pensamiento adaptativo permite a Claude decidir, por solicitud, cuánto razonamiento visible necesita una tarea en realidad, en lugar de que tú adivines un presupuesto fijo de antemano.
El pensamiento extendido expone el razonamiento de Claude como un bloque de contenido thinking separado que se devuelve junto con la respuesta final.
El pensamiento adaptativo es el modo recomendado para activarlo, ya que delega la decisión de profundidad a Claude.
Lo habilitas con un único parámetro thinking en la llamada a messages.create.
Una vez habilitado, el análisis de tu respuesta deberá manejar dos tipos de bloques de contenido en lugar de uno: thinking y text.
Esta página cubre la configuración exacta, un ejemplo completo y funcional, y los errores que surgen con más frecuencia cuando los equipos lo integran por primera vez.
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
import anthropicclient = anthropic.Anthropic()response = client.messages.create( model="claude-sonnet-5", max_tokens=1024, thinking={"type": "adaptive"}, messages=[{"role": "user", "content": "Diseña un plan de reversión para un despliegue fallido."}],)for block in response.content: print(block.type)
Cuándo usar esto:
Tareas de razonamiento de varios pasos: planificación, depuración, matemáticas, acertijos lógicos.
Tareas en las que deseas que Claude autocalibre el esfuerzo en lugar de codificar una profundidad fija.
Cualquier carga de trabajo en la que más tarde desees inspeccionar o registrar la ruta de razonamiento de Claude.
Construyendo hacia la sintonización del parámetro effort, que se compone con thinking.
Migrando de una configuración de pensamiento con presupuesto fijo a una adaptativa más simple.
El parámetro thinking acepta un objeto de configuración; {"type": "adaptive"} es el valor que los ejemplos de este sitio usan en todas partes.
Con el pensamiento adaptativo activado, Claude evalúa la solicitud entrante y decide internamente cuánto razonamiento producir antes de responder.
La API devuelve el razonamiento como uno o más bloques de contenido thinking en response.content, ordenados antes del bloque text correspondiente.
response.content es siempre una lista, incluso para una respuesta de un solo bloque, por lo que el código debe iterar en lugar de indexar una posición fija.
Claude Fable 5 se ejecuta con el pensamiento adaptativo siempre activado por defecto, lo que refleja que este modo se trata como el comportamiento base para ese modelo en lugar de una opción adicional.
# Patrón de extracción defensivo utilizado en todos los ejemplos de esta sección.def split_content(response): thinking, text = None, None for block in response.content: if block.type == "thinking": thinking = block.thinking elif block.type == "text": text = block.text return thinking, text
Trata block.thinking como opcional en cada ruta de código. Una protección estilo getattr o la comprobación if block.type == "thinking" que se muestra arriba evita AttributeError cuando una indicación simple omite el razonamiento por completo.
Asumir que response.content[0] es siempre la respuesta de texto. Con el pensamiento adaptativo activado, el índice 0 puede ser en cambio el bloque thinking. Solución: itera sobre response.content y cambia según block.type en lugar de indexar por posición.
Tratar un bloque thinking faltante como un error. Las indicaciones simples a menudo no producen ningún razonamiento visible, eso es el pensamiento adaptativo funcionando correctamente, no un error. Solución: protege con comprobaciones is not None y solo regístralo como inesperado si la indicación era genuinamente compleja.
Olvidar que max_tokens debe cubrir el pensamiento además de la respuesta. Un valor bajo de max_tokens puede truncar el razonamiento antes de que se escriba la respuesta final. Solución: presupuesta max_tokens generosamente para tareas que esperas que activen un razonamiento profundo y comprueba response.stop_reason para "max_tokens".
Confundir thinking con output_config.effort. Habilitar el pensamiento adaptativo no establece por sí solo un límite de profundidad de razonamiento. Solución: combina thinking={"type": "adaptive"} con una output_config={"effort": ...} explícita cuando necesites controlar el costo, consulta la página de ajuste de esfuerzo.
Mostrar el razonamiento en bruto a los usuarios finales sin filtrar. El bloque thinking puede ser verboso y está destinado a la depuración o divulgación opcional, no como la respuesta principal de la interfaz de usuario. Solución: muestra el bloque text por defecto y oculta cualquier visualización de razonamiento detrás de una opción explícita de "mostrar razonamiento".
Reenviar el bloque thinking de nuevo como historial de conversación sin modificar. Algunos flujos de varios turnos incluyen accidentalmente bloques thinking anteriores como si fueran texto normal del asistente, inflando el uso de tokens. Solución: elimina o resume los bloques thinking anteriores antes de agregarlos a la lista messages del siguiente turno.
¿Por qué mi respuesta no incluyó un bloque de pensamiento?
El pensamiento adaptativo permite a Claude decidir que el razonamiento no es necesario para indicaciones simples.
Una pregunta fáctica trivial o una búsqueda corta a menudo producen solo un bloque text.
Este es un comportamiento esperado, no una configuración incorrecta.
¿El pensamiento adaptativo cuesta más que una solicitud normal?
Puede ser así, ya que el razonamiento visible consume tokens de salida adicionales cuando Claude decide que una tarea lo necesita. Las indicaciones simples agregan poco o ningún sobrecosto; las complejas pueden usar notablemente más tokens.
¿Necesito establecer el parámetro `effort` para usar el pensamiento adaptativo?
No. thinking y effort son configuraciones independientes. El pensamiento adaptativo funciona por sí solo con el esfuerzo predeterminado; agregar un effort explícito solo limita la profundidad a la que se permite llegar a ese razonamiento.
¿Cómo leo el texto de razonamiento de la respuesta?
for block in response.content: if block.type == "thinking": print(block.thinking)
¿Debo mostrar el bloque de pensamiento directamente a los usuarios finales?
Generalmente no. Trátalo como contenido de depuración o divulgación opcional, y muestra el bloque text como la respuesta principal. Si muestras el razonamiento, hazlo una opción explícita de la interfaz de usuario.
¿Está el pensamiento adaptativo activado por defecto para todos los modelos?
No, excepto para Claude Fable 5, que se ejecuta con el pensamiento adaptativo siempre activado por defecto. Otros modelos de la línea requieren la configuración explícita thinking para habilitarlo.
¿Se puede combinar el pensamiento adaptativo con la entrada multimodal?
Sí. Una solicitud puede incluir un bloque de contenido de imagen y thinking={"type": "adaptive"} en la misma llamada; Claude razona sobre el contenido de la imagen tal como lo haría con el texto.
¿Qué sucede si `max_tokens` es demasiado bajo para el razonamiento?
La respuesta puede truncarse a mitad del razonamiento o a mitad de la respuesta.
Comprueba response.stop_reason para "max_tokens" para detectar esto.
Solución: aumenta max_tokens para indicaciones que probablemente activen un razonamiento profundo.
¿Hay alguna forma de forzar a Claude a producir siempre un bloque de pensamiento?
El pensamiento adaptativo está diseñado para que Claude decida, por lo que omitirá el razonamiento visible en indicaciones que juzgue triviales. Si necesitas una salida de razonamiento garantizada independientemente de la dificultad de la tarea, esa es una configuración de pensamiento diferente y no adaptativa, no cubierta en esta página.
¿El bloque de pensamiento cuenta para `max_tokens`?
Sí, los tokens de razonamiento y los tokens de respuesta se extraen del mismo presupuesto de salida establecido por max_tokens.
¿Cómo manejan las conversaciones de varios turnos los bloques de pensamiento anteriores?
Evita reenviar bloques thinking en bruto de turnos anteriores como texto normal del asistente en tu historial de messages. Elimínalos o resúmelos para que el uso de tokens no se dispare en una conversación larga.
Versiones de Stack: Escrito contra la línea de modelos Claude actual a partir de ~junio de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (el predeterminado), y Claude Haiku 4.5 - y el SDK oficial de Python anthropic (última versión 0.x). Los nombres de modelos, versiones de SDK y precios cambian rápidamente; verifica los detalles actuales en platform.claude.com/docs antes de confiar en ellos.
Revisado por Chris St. John·Última actualización: 16 jul 2026