'ThinkingBlock' object has no attribute 'text': por qué un modelo nuevo de Claude ya no empieza la respuesta con texto y cómo solucionarlo
Cambiaste el modelo de tus llamadas a la API de Claude por uno más reciente y ahora aparece AttributeError: 'ThinkingBlock' object has no attribute 'text', o el texto de la respuesta llega vacío. La causa es que los modelos Claude 5 y posteriores razonan cuando lo necesitan aunque no indiques thinking, así que el primer bloque de la respuesta pasa a ser un bloque de razonamiento. Los modelos Claude 4 no razonaban si no lo indicabas, por lo que cambiar solo el nombre del modelo cambia la forma de la respuesta. Con entradas sencillas el primer bloque sigue siendo texto, así que las pruebas con entradas ligeras pasan. A partir de la documentación de Anthropic y de mis propias pruebas con cuatro modelos (1 de noviembre de 2026), este artículo explica la causa, cómo solucionarlo buscando los bloques de texto por tipo (Python y TypeScript), qué hacer cuando max_tokens te deja sin texto, qué modelos permiten desactivar el razonamiento y cuáles no, y cómo no pasarlo por alto en las pruebas.