Voltar ao blog

IA para iniciantesGuia

Esforço de raciocínio e tokens de pensamento: por que pensar custa mais

Tokens de pensamento são cobrados como saída. O que os níveis de esforço significam, o que colocar em max_tokens para a resposta não ser cortada, e como estimar a conta.

Por CheapTokens TeamPublicado em 7 min de leitura

Card de chat: por que uma resposta de uma linha custou tanto? Porque o modelo pensou primeiro, e o pensamento é cobrado como saída
Nesta página
  1. O que o modelo faz antes de responder
  2. Esforço: o botão do pensamento
  3. A armadilha da resposta vazia: o pensamento conta para max_tokens
  4. O que o raciocínio longo faz com a conta
  5. Qual esforço para qual trabalho
  6. Migrando uma solicitação antiga: o erro 400
  7. Agentes e conversas longas: escolha um nível e mantenha
  8. Experimente na sua própria solicitação

Sua solicitação era uma única pergunta factual. A resposta tinha três linhas. O contador de saída diz milhares de tokens. Isso não é um bug: antes de responder, muitos modelos pensam em um rascunho oculto, e esses tokens de pensamento são cobrados como tokens de saída. A configuração de esforço decide quanto desse pensamento acontece, e max_tokens precisa deixar espaço para isso, ou você recebe uma resposta cortada ou vazia.

O que o modelo faz antes de responder#

Pense em uma prova. Você pode escrever a resposta direto, ou preencher uma página de rascunho primeiro. O rascunho costuma dar um resultado melhor em um problema difícil, mas o papel não é de graça. O raciocínio é esse rascunho, e é contado em tokens como todo o resto.

A documentação de pensamento estendido da Anthropic (verificada em 23 de outubro de 2026) diz que os tokens de pensamento fazem parte dos tokens de saída cobrados, e a resposta informa quantos: usage.output_tokens_details.thinking_tokens. Digamos que uma resposta volte com este bloco de uso (números de exemplo):

json
"usage": {
  "input_tokens": 480,
  "output_tokens": 2150,
  "output_tokens_details": { "thinking_tokens": 1900 }
}

Você é cobrado por 2.150 tokens de saída. O pensamento consumiu 1.900 deles, então o texto que você realmente lê tem 2.150 − 1.900 = 250 tokens. O mesmo vale mesmo quando o texto do pensamento não é retornado a você: ele ainda conta. Se você quiser a diferença entre entrada e saída explicada primeiro, comece com tokens de entrada vs saída.

Esforço: o botão do pensamento#

Na API da Claude o botão é output_config.effort. A página de esforço da Anthropic (verificada em 23 de outubro de 2026) lista cinco níveis: low, medium, high, xhigh, max. Três detalhes importam para um iniciante:

  • Afeta cada token de saída, não apenas o pensamento: texto, chamadas de ferramentas e pensamento juntos.
  • É um sinal comportamental, não um orçamento estrito. Esforço menor significa menos tokens ao custo de alguma capacidade; com esforço baixo a Claude pode pular o pensamento completamente em um problema simples.
  • O padrão é medium no Claude Opus 5.5 e Claude Haiku 5.5, e high na maioria dos outros modelos que suportam o parâmetro. Definir o padrão explicitamente é o mesmo que omiti-lo.

Os níveis são recalibrados por modelo, então high em um modelo não é a mesma quantidade de pensamento que high em outro, e nem todo modelo aceita todos os níveis. Em um vídeo publicado alguém rodou todos os níveis de esforço do Claude Opus 5.5 na mesma tarefa de motion graphics e comparou as imagens. É uma boa forma de ver o que mais pensamento compra. Não vai te dizer sua conta, porque sua tarefa não é a deles.

Uma solicitação para uma pergunta simples, com o esforço reduzido:

json
{
  "model": "claude-opus-5-5",
  "max_tokens": 4000,
  "output_config": { "effort": "low" },
  "messages": [
    { "role": "user", "content": "What is the capital of Australia?" }
  ]
}

A armadilha da resposta vazia: o pensamento conta para max_tokens#

Aqui está como isso dá errado. Você espera uma resposta de duas frases, então define max_tokens como 300. O modelo começa a pensar, gasta os 300 no rascunho, atinge o limite e para. Você recebe uma resposta vazia ou uma frase que termina no meio de uma palavra, e o motivo de parada diz max_tokens.

A documentação é explícita: max_tokens é um limite rígido para a saída total, pensamento mais texto da resposta, e o pensamento conta mesmo quando seu conteúdo não é retornado. Com esforço high e acima, a Anthropic diz para definir um valor grande.

Na prática:

  1. Pegue o comprimento da resposta que você quer.
  2. Adicione espaço generoso para o pensamento. Alguns milhares de tokens é um começo sensato para qualquer coisa acima de low.
  3. Verifique o motivo de parada após as primeiras execuções. Se ainda disser max_tokens, aumente o limite. Se a resposta estiver completa, você pode diminuí-lo.

O corte em si, com finish_reason e a janela de contexto, é abordado em por que uma resposta de IA para no meio da frase.

O que o raciocínio longo faz com a conta#

Digamos que você opere um bot de suporte com 2.000 tickets por dia. Cada ticket tem cerca de 500 tokens de entrada. Uma resposta curta e direta tem cerca de 400 tokens de saída. O mesmo ticket com raciocínio oculto longo tem cerca de 4.000 tokens de saída. Essas são suposições para o exemplo; para seus próprios números veja quantos tokens uma solicitação usa.

Por dia isso é 2.000 × 500 = 1.000.000 tokens de entrada, e ou 2.000 × 400 = 800.000 tokens de saída ou 2.000 × 4.000 = 8.000.000 tokens de saída. O leitor do ticket vê as mesmas duas linhas de qualquer forma. A única coisa que mudou foi o volume de saída, e a saída é o lado que o raciocínio infla.

Custo diário do bot de suporte, 1.000.000 tokens de entrada, respostas curtas vs raciocínio longo (preços ao vivo)
  • MiniMax-M2.7, raciocínio longo (8.000.000 de saída)$1.25
  • DeepSeek-V4-Flash, raciocínio longo (8.000.000 de saída)$0.815
  • MiniMax-M2.7, respostas curtas (800.000 de saída)$0.17
  • DeepSeek-V4-Flash, respostas curtas (800.000 de saída)$0.095

A aritmética é a mesma em qualquer modelo que cobre raciocínio oculto: tokens de saída × o preço de saída. Para o DeepSeek-V4-Flash esse preço é $0.10 por 1M tokens de saída, e seu lado de saída é mais barato que o preço de referência do OpenRouter. Ele também responde até 32.768 tokens de uma vez com um contexto de 380K, então um max_tokens grande cabe. Os preços são fixos por modelo, sem horários de pico, e a tabela acima recalcula a partir da lista de preços ao vivo. Todos os preços estão na página de preços; a página do DeepSeek tem os detalhes do modelo.

Aqui está uma solicitação para você mesmo enviar. É uma tarefa simples de resumo, então você não precisa de raciocínio longo, e o limite deixa bastante espaço:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 2000,
    "messages": [
      {"role": "user", "content": "Summarize in one sentence: A token is a small piece of text that a model reads and writes, and APIs bill by the token."}
    ]
  }'

Na resposta, usage.completion_tokens é o que você paga no lado da saída, e finish_reason deve ser stop. Se disser length, o limite cortou a resposta. Obtendo a chave e a primeira chamada: docs.

Qual esforço para qual trabalho#

  • Um fato, um resumo de uma linha, um rótulo. Esforço mais baixo. Este é o caso do início do artigo: você não precisa do rascunho.
  • Escrita do dia a dia, uma explicação curta, uma edição simples. O padrão do modelo. Mude só depois de ver quanto custam as respostas.
  • Um bug complicado, um plano de várias etapas, um problema de matemática. high ou acima, e um max_tokens grande. Aqui o pensamento extra é o ponto.

Na dúvida, rode o mesmo prompt em dois níveis, compare as respostas e compare output_tokens. Se a resposta mais barata for tão boa, você achou seu nível.

Migrando uma solicitação antiga: o erro 400#

Código mais antigo controlava o pensamento com um orçamento de tokens. No Claude 4.7 e modelos posteriores (Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1) essa forma é rejeitada com um erro 400. Você muda para pensamento adaptativo e define a profundidade com esforço:

json
// before: returns 400 on newer models
"thinking": { "type": "enabled", "budget_tokens": 8000 }

// after
"thinking": { "type": "adaptive" },
"output_config": { "effort": "medium" }
Orçamento de pensamento antigo à esquerda, pensamento adaptativo com esforço à direita
A mesma solicitação antes e depois da migração, conforme os docs da Anthropic, verificados em 23 de outubro de 2026

Mais uma armadilha: no Opus 5.5 o pensamento adaptativo está sempre ativo, e thinking: { "type": "disabled" } retorna 400 em todos os níveis de esforço. O Haiku 5.5 permite desativar o pensamento com esforço high ou abaixo. Se você quiser menos pensamento no Opus 5.5, diminua o esforço em vez de desligá-lo.

Agentes e conversas longas: escolha um nível e mantenha#

Se seu prompt está em cache, mudar o esforço de nível superior entre solicitações invalida os pontos de quebra do cache para aquela conversa. Para um loop de agente ou uma conversa longa, escolha um nível desde o início. Alguns modelos oferecem esforço por mensagem em beta que mantém o cache, o que vale a pena conferir quando o básico estiver no lugar. Conversas longas têm um segundo fator de custo, abordado em por que uma conversa longa custa mais.

Experimente na sua própria solicitação#

  1. Envie seu prompt real uma vez e leia usage: quantos tokens de saída, e quantos deles são pensamento.
  2. Diminua o esforço um passo e envie de novo. Compare as respostas e as contagens.
  3. Defina max_tokens como a resposta que você quer mais espaço para o pensamento, e verifique o motivo de parada.

Depois coloque suas próprias contagens de tokens na tabela de preços ao vivo na página de preços e você tem uma estimativa mensal.