Skip to main content

Previsão do Próximo Token (Next-Token Prediction)

PARA AGENTES DE IAChatGPTClaude

Mecanismo fundamental dos modelos de linguagem de grande porte autorregressivos (LLMs). Cálculo de logits, função Softmax, impacto da temperatura e amostragem (Top-P/Top-K). Explicação de por que a geração de texto é um processo sequencial O(N) e como visualizar as probabilidades via API.

1. Visão geral do conceito e essência matemática

Ao observar uma IA projetando uma arquitetura de microsserviços ou compondo um poema, é fácil acreditar que surgiu dentro do computador uma consciência com seu próprio monólogo interno.

No entanto, no nível computacional, por baixo dos panos de qualquer LLM autoregressiva (GPT-4o, Claude 3.7, Llama 3.3, DeepSeek R1), executa-se um único ciclo iterativo:

$$P(W) = \prod_{t=1}^{T} P(w_t \mid w_1, w_2, \dots, w_{t-1})$$

  1. Ler a sequência de entrada de tokens $w_1, \dots, w_{t-1}$.
  2. Passar os vetores pelas camadas do Transformer (Self-Attention + MLP).
  3. Calcular uma pontuação numérica (Logit) para cada um dos 128.000 tokens no vocabulário.
  4. Aplicar Softmax e algoritmos de amostragem (Temperature, Top-P), selecionando um token $w_t$.
  5. Adicionar $w_t$ ao contexto e repetir o passo.

Modelo mental: não se trata de um oráculo que conhece previamente a conclusão final, mas sim de um gerador estatístico de trajetória que dá um passo e só então vê onde pisar em seguida.

┌─────────────────────────────────────────────────────────────┐
│              CONVEYOR MATEMÁTICO DE UM PASSO                │
├─────────────────────────────────────────────────────────────┤
│ 1. Contexto de entrada: «Kiev — capital»                    │
│    Vetorização dos tokens ➔ Passagem pelas camadas do       │
│    Transformer                                              │
├─────────────────────────────────────────────────────────────┤
│ 2. Camada de saída (Unembedding): 128 000 logits            │
│    • Token " da Ucrânia"   ➔ Logit: +14.2                  │
│    • Token " antiga"       ➔ Logit: +8.1                   │
│    • Token " da França"    ➔ Logit: -4.5                   │
├─────────────────────────────────────────────────────────────┤
│ 3. Normalização Softmax(Logits / Temperatura):              │
│    • " da Ucrânia"   ➔ 94.2%                               │
│    • " antiga"       ➔ 5.1%                                │
│    • " da França"    ➔ 0.0001%                             │
├─────────────────────────────────────────────────────────────┤
│ 4. Amostragem: seleção do token " da Ucrânia"               │
│    Novo contexto: «Kiev — capital da Ucrânia» ➔ Próximo     │
│    passo                                                    │
└─────────────────────────────────────────────────────────────┘

2. Implementação de sampling em Python e inspeção via CLI

Veja como fica o cálculo das probabilidades do próximo token em Python, considerando a temperatura:

import numpy as np

def compute_next_token_probs(logits: np.ndarray, temperature: float = 0.7) -> np.ndarray:
    # 1. Масштабування температурою
    scaled = logits / max(temperature, 1e-4)
    # 2. Стабільний Softmax (віднімання максимуму для запобігання overflow)
    exp_logits = np.exp(scaled - np.max(scaled))
    probs = exp_logits / np.sum(exp_logits)
    return probs

# Приклад виклику: 4 можливі токени
mock_logits = np.array([12.5, 9.1, 4.0, 1.2])
print("Ймовірності токенів:", np.round(compute_next_token_probs(mock_logits, temperature=0.7), 4))

Como visualizar as probabilidades brutas dos tokens via cURL no terminal:

Você pode solicitar à API que retorne as log-probabilidades exatas (logprobs) para ver as alternativas consideradas pelo modelo:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Столиця Франції — це"}],
    "max_tokens": 1,
    "logprobs": true,
    "top_logprobs": 3
  }'

Na resposta JSON, o parâmetro top_logprobs mostrará as pontuações matemáticas precisas para opções como Paris, cidade, etc.


3. Por que o Next-Token leva a alucinações e como mitigar isso

Como o modelo gera texto localmente "aqui e agora", ele tende a cair em armadilhas estatísticas:

  1. Erro de Compromisso Precoce (Early Commitment): Se nas duas primeiras palavras o modelo escolheu aleatoriamente um token ruim, todos os tokens subsequentes tentarão justificar essa escolha errada em vez de admitir o erro.
  2. Impossibilidade de Retorno (No Backtracking): A inferência padrão não pode apagar uma palavra já gerada.
  3. Por que modelos de raciocínio (Reasoning Models / DeepSeek R1 / o3) funcionam melhor: Eles utilizam cadeias de pensamento (<thought>...</thought>), onde, antes de fornecer a resposta final, geram centenas de tokens de análise interna e autoverificação.

4. Conclusão prática para o desenvolvedor

Lembre-se do pipeline autoregressivo:

  • Prompts como "Pense antes de responder" ou "Detalhe passo a passo" funcionam não porque a IA se torna mais atenta, mas porque você a força a gerar tokens de raciocínio que fisicamente se tornam o contexto de entrada para o token final da resposta correta!
/ Perguntas FrequentesSchema.org FAQPage

FAQ: Previsão do Próximo Token (Next-Token Prediction)

Para prever com precisão matemática o próximo token em código ou artigos científicos, o modelo não pode depender de estatísticas superficiais das palavras: durante o pré-treinamento em trilhões de tokens, foi forçado a formar em seus pesos uma representação comprimida do mundo, relações causais e lógica algorítmica.
/ Links internos
Todos os termos