'ThinkingBlock' object has no attribute 'text': por que um modelo novo do Claude não começa mais a resposta com texto e como corrigir
Você trocou o modelo das suas chamadas à API do Claude por um mais recente e agora aparece AttributeError: 'ThinkingBlock' object has no attribute 'text', ou o texto da resposta volta vazio. A causa é que os modelos Claude 5 e posteriores raciocinam quando necessário mesmo que você não defina thinking, então o primeiro bloco da resposta passa a ser um bloco de raciocínio. Os modelos Claude 4 não raciocinavam se você não definisse, por isso mudar só o nome do modelo muda o formato da resposta. Com entradas simples o primeiro bloco continua sendo texto, então os testes com entradas leves passam. Com base na documentação da Anthropic e nos meus próprios testes com quatro modelos (1º de novembro de 2026), este artigo explica a causa, como corrigir procurando os blocos de texto pelo tipo (Python e TypeScript), o que fazer quando o max_tokens deixa você sem texto, quais modelos permitem desligar o raciocínio e quais não, e como não deixar o problema passar nos testes.