Reasoning models por dentro: o1, o3, R1, Gemini Thinking
- ⬜🚀 GRPO e DeepSeek-R1: o salto reasoning de 2025(AI Engineering Avançado: RLHF & Agents em Produção)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Em setembro de 2024, a OpenAI lançou o o1 e quebrou um paradigma: scaling não termina no pre-train, continua na hora da inferência. Em janeiro de 2025, DeepSeek-R1 reproduziu a técnica em open-weights. Em 2026, "reasoning model" virou categoria estabelecida: o1, o3, o3-pro, Claude extended thinking, Gemini Thinking, DeepSeek-R1, Qwen-QwQ. Mesma família de arquitetura — diferenças sutis e estratégicas que importam para escolher e operar.
A segunda lei de scaling
O paper original do o1 (OpenAI Learning to Reason with LLMs, set/2024) revelou o gráfico que mudou tudo: accuracy em AIME (math olympiad) é log-linear em (a) pretrain compute e também em (b) test-time compute. Duas leis de scaling independentes que combinam.
Implicação econômica: data centers de inferência viraram tão grandes quanto data centers de treino. AWS Trainium2, NVIDIA Blackwell B200, TPU v6 — toda esta geração foi desenhada para inference compute.
Comparativo arquitetural dos 4 grandes
| Modelo | Quem | Reasoning visível? | Budget control | Tool intercalado? |
|---|---|---|---|---|
| o1 / o3 / o3-pro | OpenAI | Não (oculto) | reasoning_effort low/med/high | Não (em 2026) |
| Claude extended thinking | Anthropic | Sim (block thinking) | thinking adaptativo (era budget_tokens) | Sim (interleaved) |
| Gemini 2.0/2.5 Thinking | Google DeepMind | Sim (configurable) | thinking_budget | Parcial |
| DeepSeek-R1 | DeepSeek | Sim (<think> tags) | max_tokens + temperature | Não (single-pass) |
| Qwen-QwQ | Alibaba | Sim | max_thinking_tokens | Não |
| Kimi-k1.5 | Moonshot | Sim | thinking_mode | Parcial |
Visibilidade do reasoning é decisão de produto, não capability. Anthropic publicou que extended thinking visível ajuda usuários a confiar e debugar. OpenAI argumenta que esconder protege contra destilação por competidores. Ambos têm casos legítimos.
API: como chamar reasoning models
# Extended thinking na forma ATUAL da API.
#
# ⚠️ Se você viu exemplo com `thinking={"type": "enabled", "budget_tokens": N}`,
# ele está desatualizado: essa forma é REJEITADA com erro 400 nos modelos
# recentes (família 5, 4.8, 4.7) e está depreciada na 4.6. Hoje o esforço de
# raciocínio é adaptativo — o modelo o dimensiona pela dificuldade da tarefa,
# e não há orçamento de tokens para você escolher.
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[{
"role": "user",
"content": "Prove que sqrt(2) é irracional usando contradição.",
}]
)
# A resposta vem em blocos separados — o raciocínio NÃO se mistura ao texto:
# [{"type": "thinking", "thinking": "..."},
# {"type": "text", "text": "Demonstração:..."}]
for block in message.content:
if block.type == "thinking":
# Em conversa multi-turno com tool use, estes blocos precisam voltar
# INALTERADOS no histórico: eles têm assinatura, e remontá-los a partir
# do texto invalida a requisição.
print("=== THINKING ===")
print(block.thinking)
elif block.type == "text":
print("=== RESPOSTA ===")
print(block.text)# OpenAI o3 (sem visibility do thinking)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o3",
reasoning_effort="high", # low/medium/high
messages=[{
"role": "user",
"content": "Prove que sqrt(2) é irracional usando contradição.",
}]
)
# Não há acesso ao conteúdo do reasoning
print(response.choices[0].message.content)
print(f"Reasoning tokens: {response.usage.completion_tokens_details.reasoning_tokens}")
print(f"Output tokens: {response.usage.completion_tokens}")
# reasoning_tokens são cobrados mesmo invisíveis# DeepSeek-R1 via API ou local
curl https://api.deepseek.com/chat/completions \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-reasoner",
"messages": [{"role": "user", "content": "Prove sqrt(2) irracional."}],
"max_tokens": 8000
}'
# Resposta contém "reasoning_content" + "content"
# reasoning_content tem o <think>...</think> expandidoArquitetura runtime de uma reasoning model
Quando usar reasoning model vs LLM padrão
📋 Você está construindo um agente de análise de código que detecta bugs sutis em pull requests.
Detecção de bug sutil é raciocínio multi-step: rastrear data flow, verificar invariants, considerar edge cases. Reasoning model com thinking longo permite ao modelo simular execução, voltar atrás, considerar alternativas. LLM padrão tende a hallucinar análise plausível mas superficial.
Alt: GPT-4o ou Claude Sonnet (sem thinking) — Mais barato/rápido mas perde bugs sutis em códigos complexos
Alt: Ensemble: Sonnet primeiro filtra, o3 analisa profundo — Cascade — custo intermediário
| Task | Modelo padrão | Reasoning model |
|---|---|---|
| Chat casual | ✅ Ideal | ❌ Overkill, lento |
| Sumarização | ✅ Ideal | ⚠️ Talvez excesso |
| Math olympiad | ❌ Insuficiente | ✅ Crítico |
| Code debugging complexo | ⚠️ Marginal | ✅ Brilha |
| Análise jurídica | ⚠️ Marginal | ✅ Ideal |
| RAG simple | ✅ Ideal | ❌ Custa caro |
| Multi-step planning | ❌ Falha | ✅ Brilha |
| Tool use simples | ✅ Ideal | ❌ Overhead |
O que caracteriza a segunda lei de escala, associada aos modelos de raciocínio?
Custo e latência: o tradeoff
Latência: reasoning model pode levar 10–120 segundos por query. Para UX interativo, considere streaming do thinking (Claude/Gemini suportam) para mostrar progresso, ou cache de thinking para queries similares.
Linha do tempo das reasoning models
Reasoning model como agente
Perguntas frequentes
❓ Reasoning model alucina menos?
❓ Posso fine-tunar reasoning model?
❓ Reasoning model é melhor que CoT prompting?
❓ Como debugar quando reasoning model erra?
Referências
Fixando
Quando um modelo de raciocínio NÃO é a escolha certa?
Ao integrar um modelo de raciocínio numa aplicação, qual cuidado é específico?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…