【Översättning】 Kontextteknik: Fyll inte fönstret med för mycket! Använd skrivning och filtrering i fyra steg, var försiktig med förorening och förvirring, och håll bullret utanför fönstret - Lär dig AI långsamt 170
Inledande ord
- Begränsningarna för AI-agenter beror inte bara på modellens storlek, utan också på konsten att hantera kontext. Det är som att konfigurera minne för en CPU och avgör hur djupt och effektivt agenten kan tänka.
- Kontextfönstret ska inte fungera som en soptunna: Informationsöverbelastning kan “förorena”, störa och förvirra AI:s bedömningar. Precision är mycket viktigare än mängd.
- Skickliga användare hanterar AI:s kontext med strategin “Skriv, Filtrera, Komprimera och Isolera”, för att använda det begränsade “minnet” effektivt och uppnå lägre kostnader och högre effektivitet.
- Framtidens konkurrens handlar om systemeffektivitet. Att “isolera” uppgifter med en fleragentarkitektur, så att varje agent kan briljera i sitt eget lilla fönster, är nyckeln till att bygga komplexa uppgiftssystem.
Huvudsammanfattning
Agenter (Agents) utför uppgifter med hjälp av kontext (Context). “Kontextteknik” handlar om att med precision injicera korrekt information i agentens kontextfönster för varje steg i uppgiftsutförandet. Denna artikel sammanfattar de aktuella strategierna för kontextteknik som används av populära agenter i några övergripande mönster.
Kontextteknik (Context Engineering)
Som Andrej Karpathy säger, liknar stora språkmodeller (LLM) ett “nytänkande operativsystem”. LLM fungerar som CPU, medan dess “kontextfönster” fungerar som RAM, och fungerar som modellens arbetsminne. Precis som kapaciteten hos RAM är begränsad, så är kontextfönster för LLM även begränsade när de hanterar olika kontextkällor. En av operativsystemets huvudsakliga uppgifter är att hantera hur RAM effektivt används, och “kontextteknik” spelar en liknande roll. Karpathy sammanfattade detta mycket väl:
Kontextteknik är “… en fin konst och vetenskap för att exakt fylla kontextfönstret för nästa steg (beräkning).”
Vilka typer av kontext behöver vi hantera när vi bygger LLM-applikationer? Kontextteknik omfattar följande olika typer av kontext:
- • Instruktioner (Instructions) – Promptord, minnen, några exempel, verktygsbeskrivningar etc.
- • Kunskap (Knowledge) – Fakta, minnen etc.
- • Verktyg (Tools) – Feedbackinformation från verktygsanrop.
Kontextteknik för agenter
I år, med LLM:s förbättrade förmågor inom resonemang och verktygsanrop, har intresset för agenter ökat stadigt. Agenter utför uppgifter genom att växelvis anropa LLM och verktyg, och är särskilt duktiga på att hantera långvariga och komplexa uppgifter.
Men långsiktiga uppgifter och den ständigt växande mängden feedback från verktygsanrop innebär att agenter ofta konsumerar en stor mängd tokens. Detta kan leda till flera problem: överskridande av kontextfönstrets kapacitetsgränser, vilket resulterar i ökade kostnader och förseningar, och till och med sänkt agentprestanda. Drew Breunig har tydligt påpekat att en för lång kontext kan orsaka prestationsproblem på flera sätt:
- • Kontextförorening (Context Poisoning): När falska uppgifter (illusioner) kommer in i kontexten.
- • Kontextstörning (Context Distraction): När överflödig kontextinformation överskuggar modellens ursprungliga träningskunskaper.
- • Kontextförvirring (Context Confusion): När irrelevant kontextinformation påverkar modellens svar.
- • Kontextkonflikt (Context Clash): När olika delar av kontexten motsäger varandra.
Med tanke på dessa problem betonar företaget Cognition AI vikten av kontextteknik:
“Kontextteknik”… är i själva verket ingenjörens främsta uppgift vid konstruktion av AI-agenter.
Företaget Anthropic har också påpekat att:
Agenter behöver ofta genomföra hundratals dialogrundor, vilket kräver att vi tillämpar försiktiga strategier för kontextförvaltning.
Hur möter dagens utvecklare denna utmaning? Jag har sammanfattat nuvarande metoder i fyra kategorier – Skriva (Write), Filtrera (Select), Komprimera (Compress) och Isolera (Isolate) – och ger exempel för varje.
Skriva kontext (Write Context)
Att skriva kontext handlar om att spara information utanför kontextfönstret för att agenten ska använda när den utför sina uppgifter.
Tillfälligt lagringsutrymme (Scratchpads)
När människor löser problem, gör de anteckningar och kommer ihåg vissa detaljer för framtida relaterade uppgifter. Agenter får också allt mer dessa förmågor! Att använda “tillfälligt lagringsutrymme” för att göra anteckningar är en metod för att bevara information under en agents uppgiftsutförande. Kärnprincipen är att spara information utanför kontextfönstret, men som agenten kan hämta när som helst. Anthropic har ett tydligt exempel genom sitt fleragentforskningssystem:
“Huvudforskaren” tänker först på hur de ska lösa problemet och sparar sin plan i “minnet” för att bevara kontexten, eftersom kontextfönstret kan klippas av när det överskrider 200 000 tokens, och att bevara planen är avgörande.
Det finns flera sätt att implementera tillfälligt lagringsutrymme. Det kan vara ett enkelt verktygsanrop för att skriva till en fil; det kan också vara ett fält i en runtime-statusobjekt som förblir konstant under hela sessionen. Oavsett metod, låter tillfälligt lagringsutrymme agenten spara användbar information för att bättre utföra sina uppgifter.
Minnen (Memories)
Tillfälligt lagringsutrymme hjälper agenten att lösa uppgifter inom en session, men ibland behöver agenten komma ihåg saker över flera sessioner. Reflexion-modellen introducerar idéer om att reflektera efter varje åtgärd som agenten utför och återanvända dessa egenproducerade minnen. Generativa agentmodellen kan periodiskt syntetisera minnen från samlingen av tidigare feedback från agenten.
Dessa koncept har tillämpats i populära produkter som ChatGPT, Cursor och Windsurf. De har mekanismer för att automatiskt generera långvariga minnen baserat på interaktioner mellan användaren och agenten.
Filtrera kontext (Select Context)
Att filtrera kontext innebär att hämta önskad information till kontextfönstret för att hjälpa agenten att utföra sin uppgift.
Tillfälligt lagringsutrymme (Scratchpad)
Filtreringsmekanismen från det tillfälliga lagringsutrymmet beror på hur det är implementerat. Om det är ett verktyg, kan agenten bara läsa information via verktygsanropet. Om det är en del av agentens runtime-status kan utvecklaren välja att exponera vissa delar av statusen för agenten i varje steg. Detta ger fin kontroll över att förse LLM med tillfälliga kontextdetaljer i kommande rundor.
Minnen (Memories)
Om agenten kan spara minnen behöver den också möjligheten att filtrera relevanta minnen för den aktuella uppgiften. Detta är mycket användbart av flera skäl: agenten kan välja exempel med få prov (situationsminnen) för att lära sig förväntade beteendemönster; den kan välja instruktioner (programminnen) för att styra sitt beteende; eller välja fakta (semantiska minnen) för att ge relevant bakgrund för uppgiften.
En stor utmaning är att säkerställa att de filtrerade minnena är relevanta. Vissa populära agenter använder bara en liten del av en fast fil, som alltid laddas till kontexten. Till exempel, många kodenheter använder filer för att spara instruktioner (“programminnen”) eller, i vissa fall, för att spara exempel (“situationsminnen”). Claude Code använder CLAUDE.md
, medan Cursor och Windsurf använder regel-filer.
Men om agenten har lagrat en stor mängd fakta eller relationer (till exempel av “semantisk minnes”-typ) blir filtreringen mer komplicerad. ChatGPT är ett bra exempel på detta, då den lagrar och filtrerar från en stor mängd användarspecifika minnen.
Vektor-inbäddningar och/eller kunskapsgrafer är vanliga tekniker för att indexera minnen och underlätta filtrering. Trots detta är minnesfiltrering fortfarande fylld med utmaningar. På AIEngineer Världsmässan delade Simon Willison ett exempel på ett misstag i filtreringen av minnen: ChatGPT hämtade hans position från minnet och av misstag injicerade det i bilden han bad om. Denna oväntade och oönskade hämtning av minne kan få vissa användare att känna att kontextfönstret “inte längre tillhör dem själva”!
Verktyg (Tools)
Agenter behöver använda verktyg, men om det finns för många tillgängliga verktyg kan de bli överväldigade. Detta beror ofta på att verktygsbeskrivningarna kan överlappa, vilket gör att modellen blir förvirrad angående vilket verktyg som ska väljas. En metod är att tillämpa RAG (Retrieval-Augmented Generation) på verktygsbeskrivningar för att hämta det mest relevanta verktyget baserat på semantisk likhet. Nyare studier har visat att denna metod kan tredubbla noggrannheten i verktygsval.
Kunskap (Knowledge)
Retrieval-Augmented Generation (RAG) är ett omfattande ämne och kan bli en kärnissue inom kontextteknik. Kodenheter är ett av de bästa exemplen på RAG i storskalig tillämpning. Windsurf’s Varun sammanfattade några av de utmaningar som uppstår:
Indexera kod ≠ Kontextbaserad hämtning… Vi arbetar med att analysera koden genom AST (abstrakt syntaxträd) och segmentera längs meningsfulla semantiska gränser… Men i takt med att kodbasen växer, blir vektor-inbäddningssökningar som en hämtning-heuristik opålitlig… Vi måste förlita oss på en kombination av flera tekniker, som grep/filsökning, kunskapsgrafbaserad hämtning, och… ett omordningssteg där kontexten rangordnas efter relevans.
Komprimera kontext (Compress Context)
Att komprimera kontext handlar om att endast behålla de tokens som är nödvändiga för att utföra uppgifter.
Kontextsummering (Context Summarization)
Agenternas interaktion kan sträcka sig över hundratals rundor och använda verktyg som konsumerar en stor mängd tokens. Summering är en vanlig metod för att hantera dessa utmaningar. Om du har använt Claude Code, har du kanske redan sett dess praktiska tillämpning. När kontextfönstrets användning överstiger 95%, kör Claude Code automatisk “komprimering” och summerar hela interaktionshistoriken mellan användaren och agenten. Denna summering av agentens spår kan ta flera former, som rekursiv eller hierarkisk summering.
Det är också användbart att inkludera summering i agentens design vid rätt tillfälle. Till exempel kan den användas för att efterbehandla vissa verktygsanrop (speciellt sådana som konsumerar mycket tokens, som sökverktyg). Dessutom nämnde Cognition att man summerar vid gränsen mellan en agent och en annan agent, för att minska token-kostnaderna under kunskapsöverföringen. Att fånga specifika händelser eller beslut kan dock vara en utmaning. Cognition använde här en finjusterad modell, vilket belyser den stora mängd arbete som kan krävas för att genomföra detta steg.
Kontexttrimning (Context Trimming)
Summering använder vanligtvis LLM för att extrahera de mest relevanta kontextfragmenten, medan trimning handlar mer om att filtrera eller som Drew Breunig beskriver det, “beskära” kontexten. Detta kan göras med hårdkodade heuristiska regler, till exempel genom att ta bort äldre meddelanden från meddelandelistan. Drew nämnde också Provence, en kontextbeskärare som tränades för fråge- och svarsuppgifter.
Isolera kontext (Isolating Context)
Att isolera kontext handlar om att segmentera kontexten för att hjälpa agenten i uppgiftsutförandet.
Fleragenter (Multi-agent)
En av de mest populära metoderna för att isolera kontext är att sprida den över flera underagenter. En av motiven bakom OpenAI:s Swarm-bibliotek är att “separera fokus”, med ett team av agenter som hanterar underuppgifter. Varje agent har sin egen specifika uppsättning verktyg, instruktioner och oberoende kontextfönster.
Anthropics fleragentforskningssystem ger en stark bevisning för att flera agenter med oberoende kontext presterar bättre än en enda agent, mycket tack vare att varje underagentens kontextfönster kan fokusera på en smalare underuppgift. Som de beskriver i sin blogg:
Underagenterna arbetar parallellt med egna kontextfönster och utforskar olika aspekter av problemet.
Naturligtvis står fleragenter också inför utmaningar, inklusive token-konsumtion (till exempel, Anthropics rapporterar att deras användning av tokens är 15 gånger högre än för chatkonversationer), behovet av noggrant promptengineering för att planera underagenternas arbete, samt samordningsproblem mellan underagenterna.
Isolering av kontext genom miljöer (Context Isolation with Environments)
HuggingFace:s djupforskningsprogram visar ett intressant exempel på kontextisolering. De flesta agenter använder verktygsanrops-API:er, som returnerar JSON-objekt (verktygsparametrar) som skickas till verktyg (som sök-API) för att få feedback (som sökresultat). HuggingFace använder istället en CodeAgent, som direkt producerar koden för de nödvändiga verktygsanropen. Denna kod körs sedan i en sandlådemiljö. Endast den specifika kontext som returneras (som returvärden) skickas tillbaka till LLM.
Detta gör att kontexten kan isoleras i miljön med LLM. Hugging Face påpekar att detta är en utmärkt metod för att isolera objekt som konsumerar stora mängder tokens:
Code Agents kan hantera tillstånd bättre… behöver du lagra bilder/ljud/annan data för framtida bruk? Inga problem, tilldela det bara som en variabel, så kan du använda det senare.
Status (State)
Det är värt att nämna att agentens runtime-statusobjekt också är en bra metod för att isolera kontext. Det kan fungera på liknande sätt som en sandlåda. Statusobjektet kan designas med ett schema (exempelvis en Pydantic-modell) som innehåller fält som kan skrivas till kontexten. Ett fält i schemat (som messages
) kan exponeras för LLM i varje interaktionsrunda, men schemat kan isolera information i andra fält för mer selektiv användning.
Slutsats
Mönstren för kontextteknik i AI-agenter utvecklas fortfarande, men vi kan sammanfatta de vanligaste metoderna i fyra kategorier – Skriva, Filtrera, Komprimera och Isolera:
- • Skriva kontext, handlar om att spara information utanför kontextfönstret för att agenten ska använda vid utförande av uppgifter.
- • Filtrera kontext, handlar om att hämta önskad information till kontextfönstret för att hjälpa agenten att utföra uppgifter.
- • Komprimera kontext, handlar om att endast behålla de tokens som är nödvändiga för att utföra uppgifter.
- • Isolera kontext, handlar om att segmentera kontexten för att hjälpa agenten att utföra uppgifter.
Att förstå och tillämpa dessa mönster är kärnan i att bygga effektiva agenter idag.