Capítulo 09 · Contexto · 8 min
O que o modelo lembra
A janela de contexto: memória perfeita mas limitada. Por que o ChatGPT esquece e o que isso custa.
O modelo não lembra: ele relê
Um LLM não tem memória permanente da conversa. Em cada resposta, ele recebe uma lista de tokens: mensagens do usuário, respostas anteriores, instruções de sistema, documentos adicionados. Isso é a janela de contexto.
O que está dentro, o modelo pode usar. O que fica fora, não existe para ele.
Arraste o conteúdo: o que sai da janela é definitivamente esquecido. O custo computacional da attention cresce em O(n²) com o tamanho do contexto, o que explica a corrida pelas janelas de 1M tokens.
Uma janela, não um banco de dados
A janela de contexto se parece menos com memória e mais com uma folha colocada diante do modelo na hora de responder.
Se uma informação antiga ainda está na folha, ela pode influenciar. Se foi empurrada para fora por novas mensagens, o modelo não consegue recuperá-la por vontade própria.
"Falamos disso antes" não ajuda se esse "antes" já não está no contexto.
As primeiras versões do GPT-3 tinham janelas de 2.048 tokens. Hoje o milhão de tokens virou rotina nos modelos de fronteira, e o Llama 4 Scout anuncia 10 milhões desde abril de 2025 — com uma ressalva importante: acima do milhão, a recuperação efetiva se degrada bastante. A janela anunciada não é a janela realmente aproveitável. É uma evolução enorme, mas ela não muda a natureza do problema: sempre existe um limite.
E esse limite tem consequência direta no custo. Como a atenção faz cada token olhar todos os outros, uma janela de n tokens custa n² operações. Dobrar a janela não dobra o custo — ele quadruplica. É por isso que conversas longas custam quadraticamente mais que as curtas: quando a conversa dobra, o cálculo quadruplica.
O KV cache, em duas palavras
Calcular a atenção sobre todos os tokens a cada novo passo seria catastrófico. A otimização que salva a situação se chama KV cache: guardamos na memória os cálculos já feitos e adicionamos apenas a linha do novo token a cada passo.
É isso que torna a geração em tempo real possível — é o que consome VRAM proporcionalmente ao tamanho do contexto. Voltaremos a isso em detalhe no capítulo 18.
System prompts e chat templates
Quando você envia uma mensagem ao ChatGPT ou ao Claude, o que o modelo recebe não é exatamente sua mensagem. É uma sequência cuidadosamente formatada que se parece com:
<|im_start|>system
Você é um assistente útil e conciso.
<|im_end|>
<|im_start|>user
Qual é a capital da França?
<|im_end|>
<|im_start|>assistant
Essa formatação — o chat template — transforma um diálogo em uma sequência linear de tokens, com marcadores especiais que distinguem os papéis (system, user, assistant). É isso que o modelo aprendeu a reconhecer durante o fine-tuning.
O system prompt é uma mensagem especial colocada bem no início. Ele fixa o comportamento, o tom, as restrições ("responda em JSON", "nunca responda perguntas sobre o assunto X", "você é um advogado americano especializado em propriedade intelectual"). Ele vive na janela de contexto como tudo o mais, mas sua posição no início e seu papel privilegiado fazem com que tenha mais peso do que mensagens comuns.
Cada família de modelos abertos tem seu próprio template: ChatML, popularizado pela OpenAI, [INST]…[/INST] para o Llama 2, outras variantes para Llama 3, Mistral ou Qwen. Se você roda um desses modelos por conta própria e digita seu diálogo manualmente sem respeitar o formato correto, o modelo se comporta mal — ele foi treinado para ver esses marcadores e espera vê-los.
Com as APIs proprietárias (OpenAI, Anthropic, Google), você nunca vê esses marcadores. Você envia uma lista de mensagens estruturadas, cada uma com seu papel (system, user, assistant), e a formatação é aplicada do lado do servidor. O mecanismo é o mesmo; ele só está escondido.
Contexto útil vs contexto ruidoso
Colocar tudo nem sempre melhora a resposta. Um contexto enorme pode conter contradições, informação irrelevante ou detalhes antigos competindo com a pergunta atual.
Um bom sistema não apenas aumenta a janela. Ele também seleciona o que colocar dentro.
E a posição importa. Uma descoberta surpreendente, publicada em 2023 por Liu e colegas: os LLMs não aproveitam todo o contexto com a mesma eficácia. As informações no começo e no fim da janela são mais bem usadas que as do meio — fenômeno apelidado de "lost in the middle". Os modelos de contexto longo de 2025-2026 atenuaram bastante o problema: encontrar uma frase precisa afogada no meio de um documento enorme — o teste da agulha no palheiro — hoje está praticamente resolvido. O que resiste é o raciocínio: assim que é preciso cruzar vários trechos distantes uns dos outros, a posição ainda conta. Na prática: coloque as informações mais importantes no começo ou no fim do prompt, não no meio.
Do lado da infraestrutura, várias técnicas (sparse attention, sliding window, FlashAttention) tentam estender as janelas sem fazer o custo explodir. Os detalhes — e em particular como elas interagem com o KV cache — estão no capítulo 18.
O próximo passo
Se a informação necessária nem sempre cabe no prompt, precisamos buscá-la logo antes de responder. Essa é a ideia do RAG: recuperar trechos relevantes e colocá-los no contexto.
Atualizado em