Apresentando a janela de contexto e construindo a analogia
Para iniciar este curso, vamos entender o que é a janela de contexto, frequentemente mencionada quando trabalhamos com LLMs (Large Language Models, Modelos de Linguagem de Grande Porte). Por que essa janela de contexto é tão importante quando falamos de engenharia de contexto? O próprio termo indica que o contexto está contido em uma janela. Precisamos compreender o que é essa janela para, então, entender quais estratégias podemos adotar para gerenciar esse contexto, ou realizar o que muitos chamam de context engineering (engenharia de contexto).
Primeiro, vamos construir uma analogia para pensar sobre a janela de contexto. Imaginemos nossa mesa de trabalho ao lidarmos com processos muito complexos, com diversas documentações e papéis que precisamos ler com atenção para encontrar evidências, como em uma investigação de um caso que seguirá para um júri e para o qual precisamos localizar as provas. Começamos lendo o documento pelo início: pegamos a página 1, depois a página 2, em seguida a página 3 e a página 4, e vamos encontrando nessas páginas as evidências, ou as partes importantes, que destacamos visualmente.
Ao chegar à página 4, ao olharmos para a mesa de trabalho na qual dispomos tudo, percebemos que o espaço está quase no fim. Observamos a pilha de documentos que ainda temos ao lado e notamos que não haverá espaço suficiente para manter todas as páginas abertas simultaneamente e ter uma visão de conjunto, mas seguimos trabalhando.
Quando chegamos à página 24, notamos que as primeiras páginas que estavam em nossa mesa no início — e nas quais havíamos encontrado evidências importantes — já não estão mais ali. Encontramos evidências relevantes nas páginas 20 e 23, mas ainda restam muitas páginas pela frente, e sabemos que há outras evidências espalhadas no meio desse processo. Temos, portanto, uma quantidade de trabalho que não cabe em nossa mesa; não cabe no espaço físico disponível para dispor e organizar tudo ao mesmo tempo.
Relacionando a analogia aos LLMs e explicando os limites
Essa é a analogia de como podemos pensar a janela de contexto em um LLM (Large Language Model, Modelo de Linguagem de Grande Porte). Conforme o LLM interage conosco, lê os documentos que fornecemos e acompanha a própria conversa que organizamos, chegará um momento equivalente ao da página 24. Estaremos em uma conversa muito longa e extensa com esse assistente, ainda com muitas ações a realizar, mas as primeiras interações que tivemos — que provavelmente contêm informações importantes — já foram “esquecidas”; elas ficaram fora da área de trabalho que o LLM consegue reter como contexto.
Nessa analogia, nossa mesa de trabalho representa a janela de contexto: é a quantidade de memória efetiva que dizemos que os LLMs têm para processar informações. No final, eles não podem processar toda a informação de uma só vez. Embora a janela de contexto atualmente seja bastante ampla, ainda há um limite. Chega um ponto em que ultrapassamos esse limite e fornecemos mais informação do que o LLM consegue acessar naquele momento.
Essa característica é geral e vale para diversos modelos: ChatGPT, Gemini, Claude, Kiwi, entre outros. Em todos os casos, há um limite de janela de contexto — uma quantidade máxima de informação que podemos passar ao modelo, independentemente de onde ele esteja rodando e de qual modelo estejamos usando.
Apresentando o problema de retenção e comparando memórias
Diante disso, surge o problema: como reter tudo o que lemos nesse “caso”? Como, ao ler as páginas, retirar algumas da mesa, reorganizar o espaço e ainda assim lembrar de tudo no final? No cotidiano, já utilizamos ferramentas para isso: anotar, sublinhar, separar informações em lugares diferentes. Temos, portanto, instrumentos de trabalho para organizar esse tipo de informação.
Além disso, nossa memória, como pessoas, funciona de forma diferente da memória de um computador ou da memória operacional de um LLM. Há diferenças fundamentais; por isso, nenhuma analogia é 100% perfeita. Ainda assim, desenvolvemos estratégias para organizar nosso trabalho e a quantidade de informação que conseguimos reter e estruturar para, depois, lembrar ou dar continuidade ao que estamos fazendo.
Quais são, então, essas estratégias? Como fazemos para que isso funcione? O primeiro passo é entender como vamos organizar nosso próprio trabalho, pois esse entendimento abre caminho para as possíveis soluções relacionadas à janela de contexto. Teremos de organizar também o “trabalho” do LLM, facilitando sua atuação. Conhecendo o sistema e seu funcionamento, podemos elaborar estratégias mais eficazes — e é isso que veremos ao longo deste curso.
É útil trazer essa analogia para nosso contexto, porque também temos um limite. Chega um momento em que começamos a esquecer algumas coisas. Então, que estratégias adotamos para o trabalho quando lidamos com muitos contextos?
Contextualizando desafios de gestão e orientando o LLM
Quando atuamos em liderança ou gestão, podemos estar trabalhando em uma campanha de marketing (mercadologia), na qual falamos de público, datas importantes do produto que vamos promover, notas e comentários do serviço que já nos foram repassados para difundir ou mitigar na comunicação, bloqueios de compra quando queremos vender algo, precificação — tudo isso simultaneamente em nossa cabeça. Ao mesmo tempo, podemos estar gerenciando pessoas, porque atuamos como pessoas gestoras: o tamanho da equipe, as questões pessoais de cada pessoa da equipe, a restrição orçamentária, quando alguém solicita um aumento, ou quando temos um projeto que queremos realizar; a necessidade de individualizar essas conversas e problemas, como tratamos cada pessoa da equipe, próximos projetos — e, dentro da empresa, discutindo a estratégia da companhia. Temos stakeholders (partes interessadas), reuniões extensas e diferentes iniciativas que precisamos levar adiante no dia a dia. Tudo isso faz parte do trabalho de uma pessoa gestora, muitas vezes misturado, muitas vezes uma coisa colidindo com a outra, e precisamos de uma estratégia para organizar.
Devemos considerar que o LLM (Modelo de Linguagem Grande) vê tudo isso junto, e precisamos ajudá-lo com estratégias sobre como vamos fornecer a informação.
Explorando o cenário técnico e aplicando boas práticas ao LLM
Por outro lado, quando atuamos na área técnica ou social, como pessoa no time de desenvolvimento que usa o LLM (Modelo de Linguagem Grande) para auxiliar no desenvolvimento de uma aplicação com código, precisamos aprimorar a eficiência da debug (depuração) do sistema: analisar o log (registro), o stack trace (rastreamento de pilha) e o número de linha de cada classe, porque, como pessoas desenvolvedoras, já sabemos que trabalhar com uma classe de 3.000 linhas não é confortável. Se para nós isso não é confortável, por que seria melhor para o LLM (Modelo de Linguagem Grande)?
A divisão de responsabilidades dentro do nosso código, a organização dos módulos — ou o fato de estar tudo dentro de um módulo grande com muitas dependências — são aspectos cruciais. O princípio DRY (don't repeat yourself — não se repita) e os princípios SOLID (conjunto de boas práticas de projeto orientado a objetos) são técnicas que já utilizamos para trabalhar com código e que podem orientar o LLM (Modelo de Linguagem Grande) a manipular um sistema seguindo práticas que conhecemos.
Se para o código já temos estratégias que facilitam a forma como interagimos com o código, ou interagimos com o contexto de gestão mencionado anteriormente, por que não aplicar algumas dessas estratégias também ao LLM (Modelo de Linguagem Grande)? Por que obrigá-lo a criar classes com 5.000 linhas, se para nós isso é prejudicial? Se depois tivermos de intervir, será incômodo. Precisamos que escreva um código mais fácil de ler, que tenda a ser mais modularizado e menor, porque também queremos recordar o que está acontecendo naquele código. Se algo nos facilita, não facilitará também ao LLM (Modelo de Linguagem Grande)?
Esse paralelo tem limites: há aspectos que nos facilitam e que não necessariamente facilitarão o LLM (Modelo de Linguagem Grande), e o inverso também é verdadeiro. Ainda assim, é um primeiro passo para refletirmos quando estamos nesse contexto técnico usando LLMs (Modelos de Linguagem Grande).
Filtrando informações e conectando com estratégias do curso
Em outro cenário, quando há um erro em produção, teremos novamente uma lista de logs (registros), muitas vezes um log gigantesco com milhões de linhas. Se passarmos tudo de uma vez para o LLM (Modelo de Linguagem Grande) processar, será que conseguirá processar tudo? Realmente tudo o que está no log é relevante para resolver o erro em produção? Não. Filtramos o que pode ser relevante, reduzimos a quantidade de itens a analisar e então realizamos uma análise mais focada.
Essas estratégias já fazem parte do nosso dia a dia. Ao longo deste curso, no qual apresentaremos quatro estratégias que irão ajudar, queremos que também pensemos no nosso cotidiano: como organizamos nosso trabalho? Há muitas práticas que já podemos aproveitar para auxiliar nessa engenharia de contexto.
Alertando sobre excessos e reconhecendo problemas comuns
É tentador termos uma ferramenta nova — hoje nem tão nova, pois muitas empresas já a utilizam — e simplesmente abusarmos dela: despejar tudo em um único assistente LLM (Modelo de Linguagem Grande), esperando que faça todo o projeto e que nunca precisemos organizar nada. Sabemos que não é assim, porque conhecemos os problemas que isso causa.
Quando começamos a liderar a engenharia de contexto e lidamos com informação em excesso, surgem problemas de alucinação, confusão, mudança de contexto, mistura nas respostas e respostas que não são exatamente o que queremos. Esses problemas acontecerão.
Retomando as estratégias de organização no cotidiano
Voltemos à pergunta: quais são as ferramentas que temos no nosso trabalho, no dia a dia — seja em liderança, análise, trabalho técnico ou de marketing (mercadologia) — para organizar o trabalho? Quais estratégias utilizamos para manter tudo em ordem, ter uma visão do conjunto e dos vários projetos que estamos conduzindo?
Sabemos também que, hoje, mesmo atuando como pessoa analista individual, dificilmente estamos em apenas um projeto, executando uma tarefa por vez. Normalmente temos pelo menos dois ou três projetos em paralelo; enquanto um está parado, avançamos em outro, e então a liderança nos atribui mais um, porque é urgente. Portanto, já possuímos mecanismos naturais de organização. Quais são? Como os utilizamos?
Com isso em mente, vamos entender, na prática, como funciona essa janela de contexto. Apresentamos uma analogia; agora veremos como funciona na prática.