Como os LLMs geram respostas: tokens, predição e sampling explicados
Tokenização, predição autorregressiva, temperatura e Top-P: a mecânica interna de como modelos de linguagem transformam um prompt em texto.
Alguém te mostra uma resposta do ChatGPT e pergunta "mas como ele sabe isso?". A resposta honesta é que o modelo não sabe nada — ele está, em termos técnicos, fazendo uma aposta muito bem-informada sobre qual token vem a seguir. Essa distinção importa mais do que parece, especialmente quando o modelo erra com a mesma confiança que acerta.
Este post foca na mecânica interna: o que acontece entre o momento em que você aperta Enter e o texto aparecer na tela. Se você quer entender o panorama mais amplo de IA generativa, o post O que é IA Generativa cobre o contexto geral — aqui vamos direto para o motor.
Tokenização: o modelo não lê texto, lê pedaços
Antes de qualquer predição, o modelo precisa converter texto em números. Isso acontece via tokenização — o texto é quebrado em unidades chamadas tokens, que podem ser palavras inteiras, partes de palavras ou caracteres individuais dependendo do vocabulário do modelo.
O tokenizador mais usado hoje é o BPE (Byte Pair Encoding), que constrói o vocabulário a partir de pares de bytes mais frequentes no corpus de treinamento. Na prática, isso significa que "tokenização" pode virar dois tokens (token + ização), enquanto "the" é sempre um token só — porque palavras inglesas comuns ficaram muito frequentes no corpus.
Isso tem implicações reais:
- Palavras raras em português custam mais tokens que palavras comuns em inglês
- Código-fonte tem tokenização diferente de texto natural
- Um contexto de "200K tokens" não é 200K palavras — é menos, dependendo do idioma
O vocabulário do GPT-4 tem ~100K tokens. O do Claude usa o mesmo tokenizador BPE com variações. Modelos menores costumam ter vocabulários de 32K–64K.
A predição do próximo token: o loop central
Depois da tokenização, o modelo processa a sequência de entrada e produz uma distribuição de probabilidade sobre todos os tokens do vocabulário. Para cada posição de saída, ele responde: "dado tudo que veio antes, qual a chance de cada token ser o próximo?"
Esse processo é autorregressivo — cada token gerado é concatenado ao contexto e realimenta o modelo para a próxima predição. Uma resposta de 200 palavras envolve, aproximadamente, 250-300 chamadas a esse mecanismo.
Entrada: ["Qual", "é", "a", "capital", "do", "Brasil"]
Saída da 1ª predição: { "?" : 0.001, "Bras": 0.72, "é": 0.04, ... }
Token selecionado: "Bras"
Nova entrada: ["Qual", "é", "a", "capital", "do", "Brasil", "Bras"]
Próxima predição: { "ília": 0.89, "il": 0.08, ... }
O que determina os pesos desse distribuição é a arquitetura Transformer, treinada para minimizar a perda de predição (cross-entropy loss) sobre bilhões de exemplos de texto. O modelo não tem uma "resposta correta" guardada — ele aprendeu a padrão estatístico de como textos coerentes se constroem.
Atenção (Attention): como o contexto é ponderado
O mecanismo de self-attention é o que permite ao modelo pesar a importância de tokens anteriores ao predizer o próximo. Para cada token da sequência, o modelo calcula vetores de query, key e value, e usa esses vetores para determinar quanto cada posição anterior contribui para a predição atual.
Em termos práticos: quando o modelo processa a palavra "ela" numa frase, o mecanismo de atenção decide se "ela" se refere ao sujeito mencionado duas frases atrás ou ao objeto da frase atual. Isso é o que diferencia um Transformer de um modelo de Markov simples, que olha apenas para os últimos N tokens.
A capacidade de atenção tem um custo quadrático em relação ao tamanho do contexto — dobrar o contexto quadruplica a computação de atenção. Por isso janelas grandes (como 1M tokens do Gemini 1.5 ou as 200K do Claude 3.5) são caras em inferência.
Temperatura e sampling: como o modelo "escolhe"
A distribuição de probabilidade bruta do modelo raramente é usada diretamente. Antes da seleção do token, dois parâmetros principais entram em ação:
Temperature escala os logits antes do softmax. Com temperature=0, o modelo sempre escolhe o token de maior probabilidade (greedy decoding) — respostas determinísticas. Com temperature=1.0 (padrão da maioria dos providers, incluindo Claude e OpenAI), a distribuição original é preservada. Com valores acima de 1, a distribuição fica mais achatada, aumentando diversidade — e ruído.
Top-P (nucleus sampling) trunca a distribuição: o modelo considera apenas os tokens que, somados, atingem probabilidade P. Com top_p=0.9, tokens que coletivamente representam 90% da probabilidade são elegíveis; o resto é descartado. Isso evita que o modelo selecione tokens com probabilidade muito baixa, mesmo com temperature alta.
Logits brutos: [2.1, 1.8, 0.3, -0.5, ...]
Após temperature=0.7: [3.0, 2.57, 0.43, -0.71, ...]
Após softmax: [0.45, 0.31, 0.12, 0.06, ...]
Após top_p=0.9: [0.45, 0.31, 0.12, 0.06] → mantém só os 3 primeiros (soma ≥ 0.9)
Token sorteado do subset resultante
Esses parâmetros são o que explica por que o mesmo prompt pode gerar respostas diferentes em execuções distintas — e por que "temperature=0" não garante determinismo completo em alguns sistemas distribuídos com float16.
A janela de contexto: memória de trabalho, não memória permanente
O modelo processa todos os tokens da conversa em cada predição — o contexto inteiro (prompt + histórico + resposta parcial) é a "memória de trabalho" do modelo. Não há memória persistente entre conversas diferentes, a menos que ela seja explicitamente injetada no contexto.
Modelos de 2025-2026 expandiram dramaticamente essas janelas: Claude 3.5 opera com 200K tokens, Gemini 1.5 Pro com até 1M, e modelos como o Llama 3.1 chegam a 128K. Isso equivale a centenas de páginas de texto processadas simultaneamente.
O que não muda: quando o contexto esgota, os tokens mais antigos são descartados. O modelo continua respondendo, mas sem acesso ao início da conversa. É um limite de hardware, não de inteligência.
Por que o modelo alucina com tanta confiança?
A alucinação — termo técnico para quando o modelo gera informação factualmente incorreta com tom assertivo — é uma consequência direta do mecanismo de predição. O modelo não tem acesso a um banco de fatos verificados; ele prediz tokens plausíveis dado o contexto. Se o padrão estatístico diz que "a capital do Canadá é To..." deve ser seguido de "ronto", ele vai escrever isso — mesmo que Ottawa seja a resposta correta.
A plausibilidade linguística e a veracidade factual são objetivos diferentes. O treinamento por RLHF (Reinforcement Learning from Human Feedback) ajuda a alinhar as saídas com fatos humanos verificados, mas não elimina o problema — especialmente para domínios com menos representação no corpus de treinamento.
Para casos onde a precisão importa mais que a fluência, temperatura baixa e retrieval-augmented generation (RAG) com fontes confiáveis são o caminho mais seguro.
Perguntas frequentes
O modelo "pensa" antes de responder?
Tecnicamente, não — a geração de tokens é sequencial e sem planejamento global. Mas modelos recentes treinados com chain-of-thought (como o DeepSeek-R1 ou o o3 da OpenAI) são incentivados a gerar tokens intermediários de "raciocínio" antes da resposta final. Isso melhora resultados em tarefas de múltiplos passos, não porque o modelo pensa, mas porque o processo de geração de raciocínio intermediário cria tokens adicionais de contexto que guiam a predição subsequente.
Por que o modelo em português gasta mais tokens que em inglês?
O corpus de treinamento de quase todos os LLMs é dominado por inglês — estima-se 40-60% do total para os modelos mais populares. O tokenizador BPE, treinado nesse corpus, aprendeu subpalavras inglesas com muito mais granularidade. Palavras em português com morfologia rica (flexões verbais, sufixos derivacionais) raramente cabem num único token. O resultado prático: uma frase em pt-BR usa 15-30% mais tokens que a equivalente em inglês, o que aumenta custo e pode comprimir o contexto útil disponível.
Qual a diferença entre Top-K e Top-P?
Top-K trunca a distribuição nos K tokens mais prováveis, independente de suas probabilidades. Top-P trunca com base na massa de probabilidade acumulada. Top-P é geralmente preferido porque é adaptativo: se o modelo está muito confiante (uma opção com 99% de probabilidade), Top-P pode selecionar só 1 token; se está incerto, pode selecionar 50. Top-K fixo em 40 trata ambos os casos da mesma forma, o que é menos preciso.
Por que a temperatura padrão é 1.0 e não 0?
Temperatura 0 (greedy decoding) maximiza a coerência local mas reduz diversidade e tende a gerar textos repetitivos em tarefas criativas. O default de 1.0 preserva a distribuição aprendida pelo modelo, que foi otimizada durante o treinamento para balancear fluência e variedade. Para código ou SQL, muitos times usam 0.0–0.2; para texto criativo, 0.7–1.2 é comum.
O token é a unidade de tudo
Entender tokenização, predição autorregressiva e sampling resolve boa parte das dúvidas sobre por que LLMs se comportam como se comportam — por que erram em contas simples, por que são lentos em contextos grandes, por que a mesma pergunta pode ter respostas diferentes.
O modelo não raciocina no sentido humano, não memoriza fatos com índice e não verifica o que produz. Ele é muito bom em uma coisa específica: dado o contexto atual, gerar o próximo token mais plausível — e repetir isso até você mandar parar. Para testar expressões regulares, hashes ou decodificações que você vai usar junto com LLMs, uso o Hash Generator do Quick Tools quando preciso verificar manualmente alguma saída antes de confiar.
A limitação não é defeito de design — é a natureza do problema que foi otimizado para resolver. Saber disso muda como você usa a ferramenta.
- 01 Como organizar estudos de programação sem se perder Sair do tutorial hell, estudar com consistência e terminar projetos — o sistema prático que realmente funciona para aprender programação.
- 02 Endereço IP: diferença entre IPv4 e IPv6, esgotamento e NAT IPv4 esgotou em 2020 na América Latina. Entenda a notação, os limites do NAT, as mudanças do IPv6 e o que isso significa para quem escreve código.