Como os LLMs Realmente Funcionam
Como LLMs funcionam: tokens, embeddings, atenção do transformer, treinamento, amostragem, temperatura, alucinações e por que o ChatGPT erra.
Um modelo de linguagem de grande escala é uma rede neural treinada para prever o próximo token em uma sequência; ele converte texto em vetores numéricos, utiliza atenção para permitir que cada token reúna contexto dos demais, e gera saída um token por vez, amostrando a partir de uma distribuição de probabilidade sobre seu vocabulário. Esse mecanismo único — prever um token, anexá-lo, prever o próximo — é o motor completo por trás do ChatGPT, do GitHub Copilot, do Claude e do Gemini. Todo o restante é escala, procedimento de treinamento e engenharia construída sobre ele.
Se você utiliza essas ferramentas diariamente, mas nunca abriu o capô, os comportamentos que já observou — respostas erradas dadas com confiança, um chat que “esquece” como começou, saídas completamente diferentes a partir de um prompt levemente reformulado, a incapacidade de contar as letras de uma palavra — não são peculiaridades aleatórias. Cada um deles decorre diretamente da mecânica do sistema. Este artigo oferece um modelo mental preciso dessa mecânica: tokens e embeddings, as camadas de atenção e feed-forward do transformer, as três fases de treinamento, como a geração de texto realmente funciona por amostragem, e uma análise direta dos equívocos que a palavra “realmente” no título deste artigo se propõe a corrigir.
Principais Conclusões
- Um LLM não recupera respostas de um banco de dados — ele computa uma distribuição de probabilidade nova sobre todo o seu vocabulário a cada etapa, seleciona um token e repete o processo; portanto, o “raciocínio” que você lê é produzido da esquerda para a direita, e não recuperado como um todo.
- Os LLMs leem tokens de sub-palavras, não letras individuais, razão pela qual tarefas de soletração e contagem de letras falham com mais frequência do que a fluência geral do modelo sugeriria.
- O treinamento ocorre em três estágios: pré-treinamento auto-supervisionado (a próxima palavra serve como seu próprio rótulo), ajuste fino por instrução com pares de prompt–resposta escritos por humanos, e aprendizado por reforço com feedback humano (RLHF).
- Por padrão, um LLM é probabilístico, não determinístico: a qualquer temperatura acima de zero, o mesmo prompt pode retornar respostas diferentes, pois o modelo amostra a partir de uma distribuição em vez de sempre selecionar o token mais provável.
- A alucinação é o comportamento padrão de um sistema otimizado para produzir texto estatisticamente plausível — ele é recompensado por soar correto, não por estar correto.
O que um LLM realmente é: predição do próximo token
Em sua essência, um modelo de linguagem de grande escala resolve repetidamente um único problema específico: dado uma sequência de tokens, qual token vem a seguir? Ele enquadra isso como um problema de classificação sobre todo o seu vocabulário — dezenas de milhares de tokens possíveis — e gera uma probabilidade para cada um. O modelo seleciona um, o anexa à sequência e executa todo o processo novamente. A geração de texto é esse loop em execução até que uma condição de parada seja atingida.
Esse reencadramento é o insight fundamental. “Escreva uma função que aplique debounce a um callback” não é um comando para o qual o modelo busca uma resposta. É um prompt que o modelo continua, token por token, porque sequências semelhantes a esse prompt foram, em seus dados de treinamento, seguidas por sequências semelhantes a código funcional. O modelo é um motor de continuação apontado para a sua entrada.
A arquitetura que tornou isso possível em escala é o transformer, introduzido no artigo de 2017 Attention Is All You Need por Vaswani et al. O “GPT” em ChatGPT significa Generative Pre-trained Transformer. Antes dos transformers, os modelos processavam texto mais ou menos da esquerda para a direita e tinham dificuldade em conectar palavras distantes em uma frase; a atenção permitiu que um modelo ponderasse cada token em relação a todos os outros em paralelo, o que desbloqueou tanto a qualidade quanto a velocidade de treinamento.
Tokens e embeddings: como o texto se torna números
Discover how at OpenReplay.com.
Antes que um modelo possa fazer qualquer coisa com o seu prompt, ele divide o texto em tokens — fragmentos de sub-palavras, não palavras completas nem letras individuais — e mapeia cada token para um número. Um token pode ser uma palavra inteira (" the"), um fragmento de palavra ("ing"), um único caractere ou pontuação. Essa etapa de tokenização é invisível na interface de chat, mas explica toda uma classe de falhas.
Como o modelo lê tokens de sub-palavras em vez de letras individuais, pedir que ele conte as letras de uma palavra vai contra a forma como ele representa o texto — razão pela qual tarefas de contagem de letras e soletração falham com mais frequência do que a fluência geral do modelo sugeriria. O modelo nunca “vê” os três r’s em “strawberry”; ele vê alguns IDs inteiros opacos que representam fragmentos de tokens, com as letras individuais descartadas.
Você pode observar isso acontecer com o tokenizador de código aberto tiktoken da OpenAI:
# pip install tiktoken
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
ids = enc.encode("strawberry")
print(ids) # a short list of integer token IDs
print([enc.decode([i]) for i in ids]) # the sub-word chunks, not letters
Execute o código e você obterá alguns IDs inteiros, cada um decodificando para um fragmento de múltiplos caracteres — não dez letras separadas. O modelo opera sobre esses IDs. Contar caracteres exigiria informações que a tokenização descartou, portanto o modelo aproxima e frequentemente erra.
Cada ID de token é então mapeado para um embedding: uma longa lista de números (um vetor) que posiciona o token em um “espaço de palavras” de alta dimensionalidade. Nesse espaço, palavras similares se agrupam — cat fica próximo de dog, kitten e pet — e a geometria codifica significado. A demonstração clássica vem do word2vec (Mikolov et al., 2013), que mostrou que a aritmética vetorial captura relações: aproximadamente, biggest − big + small ≈ smallest, e Paris − France + Italy ≈ Rome. Esses mesmos vetores herdam os vieses humanos presentes no texto de treinamento, razão pela qual doctor − man + woman pode se aproximar de nurse. Os embeddings são aprendidos durante o treinamento, não construídos manualmente.
Dentro do transformer: camadas de atenção e feed-forward
Um transformer é uma pilha de camadas idênticas, cada uma realizando dois trabalhos em sequência: uma etapa de atenção, em que os tokens coletam contexto de outros tokens, e uma etapa feed-forward, em que o modelo aplica o conhecimento armazenado em seus pesos a cada token individualmente. Um modelo de fronteira empilha dezenas dessas camadas, refinando a representação de cada token um pouco mais a cada uma delas. As camadas iniciais lidam com estrutura local, como gramática e ambiguidade; as camadas posteriores rastreiam significado de nível superior — quem fez o quê a quem, e sobre o que o trecho trata.
A atenção funciona como um serviço de matchmaking. Para cada token, o modelo produz um vetor de consulta (“o que estou procurando?”) e um vetor de chave (“o que tenho a oferecer?”). Ele compara cada consulta com cada chave e, onde há correspondência, informações fluem entre esses tokens. Na frase “When John gave the book to Mary, she thanked him,” a atenção é o mecanismo que liga “she” a “Mary” e “him” a “John”, para que as camadas posteriores possam utilizar isso. Uma única camada executa muitas dessas operações de atenção — chamadas de heads — em paralelo, cada uma aprendendo a rastrear um tipo diferente de relação.
A etapa feed-forward é onde os fatos aprendidos residem. Após a atenção ter reunido o contexto relevante, a rede feed-forward processa cada token individualmente, transformando-o com base nos padrões absorvidos durante o treinamento. A divisão de trabalho é clara: a atenção recupera informações do prompt à sua frente, enquanto as camadas feed-forward fornecem informações aprendidas do corpus de treinamento. Quando o modelo continua “The capital of Poland is” com “Warsaw,” esse fato vem dos pesos feed-forward, não de nada presente no seu prompt.
Para a álgebra linear e as equações exatas por trás da atenção, o artigo original do transformer é a fonte primária. O modelo mental — combinar, reunir contexto, então aplicar conhecimento armazenado, repetido ao longo de muitas camadas — é suficiente para raciocinar sobre o comportamento.
Como os LLMs são treinados: pré-treinamento, ajuste fino e RLHF
O treinamento ocorre em três estágios: pré-treinamento auto-supervisionado, em que a próxima palavra no texto comum serve como seu próprio rótulo; ajuste fino por instrução com pares de prompt–resposta escritos por humanos; e aprendizado por reforço com feedback humano (RLHF), que alinha as saídas do modelo com as preferências humanas. Cada estágio produz um tipo diferente de modelo.
| Estágio | Entrada | De onde vem o “rótulo” | O que produz |
|---|---|---|---|
| Pré-treinamento | Texto não rotulado em grande escala (web, livros, código) | A próxima palavra no próprio texto — sem necessidade de rotulagem humana | Um completador de texto fluente que continua qualquer prompt, mas não segue instruções |
| Ajuste fino por instrução | Pares curados de prompt–resposta | Humanos escrevem as respostas desejadas | Um modelo que responde perguntas e segue instruções como um assistente |
| RLHF | Saídas do modelo classificadas por humanos | Julgamentos de preferência humana treinam um modelo de recompensa | Saídas alinhadas para serem úteis, inofensivas e focadas na tarefa |
O pré-treinamento é auto-supervisionado: como a próxima palavra correta já está presente no texto, o sinal de treinamento é gratuito e efetivamente ilimitado — cada frase na internet é um exemplo rotulado. O modelo começa com pesos aleatórios, prevê de forma terrível e melhora ao longo de centenas de bilhões de exemplos, ajustando seus pesos para reduzir o erro de predição (a matemática desse ajuste é a retropropagação, bem documentada em outros lugares). O artigo sobre leis de escala de 2020 (Kaplan et al.) descobriu que a precisão do modelo melhora como uma lei de potência em relação ao tamanho do modelo, aos dados de treinamento e ao poder computacional — o resultado empírico que justificou a construção de modelos cada vez maiores.
Um modelo puramente pré-treinado é apenas um completador. Pergunte a ele “What is your first name?” e ele pode continuar com “What is your last name?” porque essa é uma continuação plausível, não porque esteja sendo inútil. O ajuste fino por instrução e o RLHF corrigem isso. O pipeline para transformar um modelo bruto em um assistente foi delineado no artigo do InstructGPT (Ouyang et al., 2022), o trabalho diretamente por trás do ChatGPT, que foi lançado como uma prévia de pesquisa pública em 30 de novembro de 2022. A maioria dos modelos de chat atuais é treinada com alguma variante desse pipeline, embora as receitas exatas sejam proprietárias.
Duas observações sobre números. Os números frequentemente citados do GPT-3 — 175 bilhões de parâmetros, 96 camadas, embeddings de 12.288 dimensões, um vocabulário de 50.257 tokens — vêm do artigo do GPT-3 de 2020 e são úteis como ilustração concreta, não como especificação atual. Os laboratórios de fronteira não publicam mais contagens de parâmetros para seus modelos mais recentes: não há número oficial de parâmetros para a série GPT-5 atual, Claude Opus/Sonnet/Haiku, ou as linhas Gemini 3.x. Trate qualquer afirmação de “X trilhões de parâmetros” sobre um modelo atual como rumor.
Como a geração funciona: amostragem, temperatura e por que a saída é probabilística
Quando um LLM gera texto, ele executa o loop de predição um token por vez e amostra o próximo token a partir da distribuição de probabilidade que computa — ele não simplesmente emite “a resposta”. Aqui está o loop em pseudocódigo:
tokens = tokenize(prompt)
while not done:
logits = model.forward(tokens) # one score per vocabulary token
probs = softmax(logits / temperature) # convert scores to probabilities
next_token = sample(probs) # pick one, weighted by probability
tokens.append(next_token)
if next_token == END_OF_TEXT:
break
output = detokenize(tokens)
O parâmetro temperature controla como as pontuações se tornam probabilidades. Por padrão, um LLM é probabilístico, não determinístico: uma temperatura acima de zero significa que o mesmo prompt pode gerar respostas diferentes, pois o modelo amostra a partir de uma distribuição em vez de sempre selecionar o único token mais provável. Na temperatura 0, o modelo se torna guloso — sempre seleciona o token de maior pontuação — o que é aproximadamente determinístico e adequado para código ou extração de dados. Temperaturas mais altas achatam a distribuição, tornando tokens de menor probabilidade mais prováveis e a saída mais variada. O controle de temperature está documentado na referência da API da OpenAI e na referência da API de Mensagens da Anthropic; ambas o expõem por requisição.
É por isso que executar o mesmo prompt no ChatGPT pode gerar uma resposta diferente a cada vez, e por que “definir temperatura como 0” é o conselho padrão quando você precisa de saída reproduzível de uma API.
Equívocos comuns sobre LLMs
Várias crenças intuitivas sobre como os LLMs funcionam estão erradas, e cada crença equivocada leva desenvolvedores a usar mal as ferramentas ou a interpretar incorretamente suas falhas. A palavra “realmente” no título deste artigo está aqui para corrigi-las.
| Equívoco | O que é realmente verdade |
|---|---|
| ”Ele busca a resposta em um banco de dados.” | Não existe uma tabela armazenada de fatos para recuperar. O modelo computa uma distribuição de probabilidade nova sobre todo o seu vocabulário a cada etapa. |
| ”Ele conhece a resposta antes de escrevê-la.” | Cada token é escolhido a partir dos tokens anteriores. A resposta é construída da esquerda para a direita, não recuperada como um todo. |
| ”Os parâmetros armazenam fatos como texto legível.” | Os parâmetros são pesos numéricos. Os “fatos” são padrões estatísticos difusos distribuídos por bilhões de pesos, não strings recuperáveis. |
| ”É determinístico — mesma entrada, mesma saída.” | Com temperatura > 0, ele amostra, portanto prompts idênticos podem produzir completações diferentes. |
Não é uma busca em banco de dados. Um LLM não busca respostas em um banco de dados — ele não possui uma tabela armazenada de fatos para recuperar; ele computa uma distribuição de probabilidade nova sobre todo o seu vocabulário a cada etapa, seleciona um token e repete. Enquadrar os parâmetros como “uma base de conhecimento” é enganoso: os pesos codificam regularidades estatísticas, não registros indexados.
Ele não conhece sua resposta com antecedência. O modelo não sabe sua resposta antes de escrevê-la: cada token é escolhido com base em todos os tokens que vieram antes, portanto o “raciocínio” que você vê é produzido da esquerda para a direita, não recuperado como um todo. É por isso que um modelo pode iniciar uma frase confiante e se colocar em uma situação sem saída — não há um plano sendo executado, apenas uma continuação sendo computada.
Por que os LLMs se comportam da forma que se comportam
Uma vez que você compreende o mecanismo, os comportamentos cotidianos dessas ferramentas deixam de ser misteriosos. Cada um é uma consequência direta da predição do próximo token sobre probabilidades aprendidas.
Alucinação. A alucinação não é um bug adicionado ao sistema — é o comportamento padrão de um modelo otimizado para produzir texto estatisticamente plausível, que é recompensado por soar correto em vez de ser correto. Quando o modelo não tem um sinal forte para um fato, ele ainda produz a continuação de aparência mais plausível, completa com um tom confiante, porque texto confiante domina seus dados de treinamento. Um nome de função fabricado ou uma citação inexistente é o modelo fazendo exatamente o que foi treinado para fazer.
Janelas de contexto. Uma janela de contexto é o número fixo de tokens que o modelo pode atender de uma vez; qualquer coisa além desse limite simplesmente não é visível para o modelo, razão pela qual um chat longo eventualmente “esquece” como começou. Em junho de 2026, os modelos de fronteira atuais convergem para uma janela de aproximadamente um milhão de tokens — o Gemini 3.5 Flash suporta 1.048.576 tokens de entrada, o Claude Opus 4.8 vem com uma janela de 1M de tokens por padrão, e a série GPT-5 oferece uma janela de 1M de tokens via API. Grande, mas ainda fixo: uma vez que sua conversa ou base de código ultrapasse esse limite, os tokens mais antigos ficam fora do que o modelo pode ver.
Sensibilidade ao prompt, cadeia de pensamento e few-shot. A formulação exata do seu prompt altera a distribuição de probabilidade e, portanto, a resposta, porque a saída é computada token por token a partir dos tokens anteriores. Essa mesma propriedade é a razão pela qual técnicas de prompting funcionam. O prompting few-shot (mostrar exemplos resolvidos) semeia o contexto com o padrão que você deseja que seja continuado. O prompting de cadeia de pensamento (“pense passo a passo”) funciona porque o próprio texto gerado pelo modelo se torna parte da entrada que ele lê a seguir — as etapas intermediárias atuam como memória de trabalho sobre a qual o modelo pode construir, em vez de forçar a resposta final em um único salto.
Grounding e RAG. A geração aumentada por recuperação (RAG) coloca documentos relevantes diretamente no prompt, para que o modelo possa extrair fatos da atenção (o prompt à sua frente) em vez de seus pesos feed-forward com perdas. É por isso que um modelo com acesso à web ou com seus documentos no contexto é mais preciso em especificidades — você transferiu o ônus de “lembrar isso do treinamento” para “ler isso do prompt”, o que a arquitetura faz de forma muito mais confiável.
A questão dos “papagaios estocásticos”
Se a predição do próximo token equivale a compreensão genuína ou a imitação sofisticada é uma questão aberta e contestada. A visão cética foi cristalizada no artigo de 2021 On the Dangers of Stochastic Parrots (Bender, Gebru, et al.), que argumentou que um modelo que une texto de treinamento por probabilidade estatística, sem ancoragem no significado, é mais papagaio do que mente. A visão oposta sustenta que prever texto com suficiente precisão exige um modelo comprimido e utilizável do mundo que ele descreve. A mecânica neste artigo está estabelecida; essa interpretação não está, e você não precisa resolvê-la para usar bem as ferramentas.
O que você precisa é do modelo mecânico: tokens como entrada, camadas de atenção e feed-forward refinando-os ao longo de muitas camadas do transformer, uma distribuição de probabilidade como saída, um token por vez. Mantenha essa imagem em mente e, da próxima vez que o Copilot inventar um método ou o ChatGPT se contradizer três turnos depois de uma conversa, você saberá exatamente qual parte da máquina o produziu — e, igualmente útil, qual mudança de prompt ou etapa de recuperação o corrigirá.
Perguntas Frequentes
Qual é a diferença entre um token e uma palavra em um LLM?
Um token é um fragmento de sub-palavra, não uma palavra. O tokenizador divide o texto em partes que podem ser uma palavra inteira, um fragmento de palavra como 'ing', um único caractere ou pontuação, e então mapeia cada uma para um ID inteiro. Uma palavra comum pode ser um único token, enquanto uma palavra mais rara se divide em vários. O modelo sempre opera sobre esses IDs de token, nunca sobre palavras brutas ou letras, razão pela qual tarefas no nível de caracteres, como contar letras, vão contra a forma como ele representa o texto.
Aumentar a janela de contexto melhora a precisão de um LLM?
Não diretamente. Uma janela de contexto maior apenas permite que o modelo atenda a mais tokens de uma vez; não torna o modelo melhor em raciocínio ou recuperação de informações. A qualidade ainda pode se degradar quando informações relevantes estão distantes de onde são necessárias, e colocar texto irrelevante demais no prompt pode diluir o sinal. O benefício é que menos tokens anteriores ficam fora da janela, portanto o modelo 'esquece' menos de uma conversa ou documento longo.
Se eu definir a temperatura como 0, um LLM sempre dará saídas idênticas?
A temperatura 0 torna a geração gulosa, sempre selecionando o token de maior probabilidade, o que é aproximadamente determinístico para um dado modelo e prompt. Na prática, a reprodutibilidade exata nem sempre é garantida entre chamadas de API devido a fatores como não-determinismo de ponto flutuante em hardware paralelo, mudanças na versão do modelo e roteamento do lado do provedor. A temperatura 0 é a configuração correta quando você precisa de saída consistente para código ou extração, mas trate-a como quase determinística em vez de uma garantia absoluta.
Por que a geração aumentada por recuperação reduz a alucinação?
O RAG coloca documentos relevantes diretamente no prompt, para que o modelo possa extrair fatos da atenção sobre o texto à sua frente, em vez de seus pesos feed-forward com perdas. A arquitetura recupera informações do prompt de forma muito mais confiável do que recorda padrões difusos aprendidos durante o treinamento. Isso transfere a tarefa de 'lembrar este fato' para 'ler este fato', razão pela qual um modelo com seus documentos ou resultados da web no contexto responde a especificidades com mais precisão, embora ainda possa interpretar mal ou usar incorretamente o que lhe é fornecido.