Programação e agentes de IA

[Contexto de IA #2] Por que contextos longos arruínam as respostas

Na parte 1, vimos por que a janela de contexto é finita. Mas as especificações atuais dos modelos levantam uma dúvida: já existem modelos com 1 milhão de tokens, então por que não inserir o código inteiro ou o documento completo? Ainda é preciso economizar?

6 min de leitura
Imagem de capa de [Contexto de IA #2] Por que contextos longos arruínam as respostas

Na parte 1, vimos por que a janela de contexto é finita. Mas as especificações atuais dos modelos levantam uma dúvida: já existem modelos com 1 milhão de tokens, então por que não inserir o código inteiro ou o documento completo? Ainda é preciso economizar?

É justamente esse o senso comum que vamos contestar. Caber na janela de contexto e o modelo usar o conteúdo bem são problemas completamente diferentes. Vários estudos confirmaram que o desempenho do modelo cai à medida que o contexto cresce, e quem já executou agentes por muito tempo percebe isso na prática: no fim da sessão, as respostas ficam dispersas e o agente tenta corrigir bugs que já havia corrigido.

lost in the middle: o meio não é lido

O artigo “Lost in the Middle”, publicado em 2023 por pesquisadores de Stanford, é um dos resultados mais citados da área. Ao inserir documentos com a resposta em várias posições de um contexto longo e medir a capacidade do modelo de encontrá-los, a precisão formou uma curva em U. As informações no começo e no fim eram encontradas com facilidade, mas a recuperação das informações no meio caía muito. Em casos extremos, o desempenho com a resposta no meio foi inferior ao de fazer a pergunta sem fornecer o documento.

É verdade que o modelo “lê” os 20 documentos. Mas ele não dá atenção de maneira uniforme. Os pesos de atenção também exibem um padrão parecido com o de alguém que se concentra na introdução e na conclusão de um relatório extenso e apenas passa os olhos pelo corpo.

As pontuações do teste “needle in a haystack”, comum em apresentações de modelos, podem esconder esse problema. O teste insere uma frase em um texto longo e pede que ela seja encontrada literalmente; a maioria dos modelos atuais chega perto da pontuação máxima. O trabalho real não é uma simples recuperação. Quando a tarefa exige conectar informações de vários pontos e raciocinar, a pontuação do mesmo modelo cai conforme o contexto aumenta.

context rot: o próprio comprimento reduz o desempenho

Em 2025, a empresa de bancos de dados vetoriais Chroma publicou um relatório técnico que chamou esse fenômeno de “context rot”. Testou 18 modelos importantes na mesma tarefa, aumentando apenas o comprimento da entrada, e o desempenho caiu de forma consistente só porque a entrada ficou maior, mesmo sem mudar a dificuldade da tarefa. Isso aconteceu dentro da especificação da janela de contexto.

As causas se sobrepõem. A primeira é a limitação estrutural da atenção. Os pesos de atenção são como um orçamento fixo: quanto mais tokens existem, menor é a parcela destinada a cada token. Quanto mais conteúdo irrelevante é misturado, mais o sinal importante fica encoberto. A segunda é a distribuição dos dados de treinamento. A maior parte dos textos usados no treinamento são documentos curtos, então entradas com centenas de milhares de tokens são situações praticamente desconhecidas para o modelo. Ele pode processar esse tamanho segundo a especificação, mas isso não garante a qualidade do raciocínio nessa extensão.

Por isso, na prática, é preciso ter uma noção de “contexto efetivo”. Mesmo com uma especificação de 200 mil tokens, é mais seguro considerar que o trecho em que a qualidade se mantém em tarefas complexas de raciocínio é muito menor. O número da especificação significa “é possível inserir até aqui sem erro”, não “é possível inserir até aqui e o modelo continuará inteligente”.

A especificação é apenas um limite superior; o orçamento de atenção é dividido em partes cada vez menores conforme os tokens aumentam
A especificação é apenas um limite superior; o orçamento de atenção é dividido em partes cada vez menores conforme os tokens aumentam

O contexto de um agente não é apenas longo; ele também é bagunçado

Nos agentes, o problema se agrava ainda mais. Como vimos na parte 1, o contexto de um agente acumula resultados de chamadas de ferramentas, e esse acúmulo não é apenas longo: ele também contém contradições.

Veja um cenário típico. O agente lê um arquivo para corrigir um bug, faz a alteração e o lê novamente. Agora o contexto contém lado a lado as versões do mesmo arquivo antes e depois da alteração. Também há logs de testes que falharam e que passaram. Não há garantia de qual versão o modelo consultará na próxima decisão. É assim que ele olha a versão antiga, diz “Ainda há um bug” e começa de novo uma correção já concluída.

Esses padrões de falha também têm nomes. context poisoning ocorre quando informações incorretas, como um resumo com alucinações, entram no contexto e contaminam em cadeia as decisões seguintes; context distraction ocorre quando o histórico acumulado fica tão longo que o modelo repete padrões antigos em vez de seguir novas instruções; context confusion ocorre quando informações parecidas, mas diferentes, são misturadas e causam confusão; e context clash ocorre quando informações contraditórias entram em conflito. Mesmo sem conhecer os nomes, os sintomas são familiares. Um agente repetir o mesmo erro no fim da sessão ou fazer algo que foi instruído a não fazer geralmente indica um desses quatro casos.

Quatro padrões de falha de contexto que causam a queda de qualidade no fim da sessão
Quatro padrões de falha de contexto que causam a queda de qualidade no fim da sessão

Sinais de queda de qualidade

Se os sinais a seguir aparecerem em uma sessão longa, desconfie de um problema de contexto.

  • Retoma problemas já resolvidos ou lê o mesmo arquivo repetidamente
  • Começa a violar regras definidas no início da sessão, como convenções de código ou arquivos que não devem ser alterados
  • As respostas ficam prolixas e são puxadas para um assunto de muito antes, em vez de responder à pergunta imediatamente anterior
  • Ignora a informação recém-fornecida e responde usando dados antigos em algum ponto do contexto

O importante é que o modelo não está “cansado”. Ele é uma máquina stateless que relê tudo desde o início a cada turno. O que mudou não foi o modelo, mas o estado do contexto que ele precisa ler. A qualidade da saída cai porque a entrada é longa, bagunçada e contraditória.

Resumo

  • Estar no contexto não significa ser bem utilizado. Tanto lost in the middle, em que a recuperação das informações do meio cai, quanto context rot, em que o próprio comprimento reduz o desempenho, são fenômenos confirmados por pesquisas.
  • O número da especificação é um limite superior, não uma garantia de qualidade. Quanto mais complexo for o raciocínio necessário, mais curto deve ser considerado o contexto efetivo em relação à especificação.
  • O contexto do agente acumula restos de chamadas de ferramentas e pode conter até contradições. Os quatro padrões de falha — poisoning, distraction, confusion e clash — são os principais responsáveis pela queda de qualidade no fim da sessão.

Com o diagnóstico concluído, a partir da próxima parte começa o tratamento. Vamos começar pelas ferramentas básicas, /clear e /compact. Ambas “limpam o contexto”, mas seus princípios de funcionamento são completamente diferentes, e usá-las de forma errada pode apagar o contexto do trabalho. Vamos definir quando limpar e quando compactar.

Continue lendo