Konteksti-insenertöö: 1M-tokeniliste akende haldamine ilma konteksti-mädanikuta
1M-tokenilised kontekstiaknad on olemas, aga kvaliteet halveneb tunduvalt enne seda piiri. Konteksti-insenertöö on distsipliin kontekstiakende efektiivseks kasutamiseks — mida kaasata, mida kokku võtta, mida värskelt välja võtta, ning mustrid, mis hoiavad kvaliteedi kontekstiga kasvades kõrgel.
- aastal on sul 1M-tokenilised kontekstiaknad. Gemini, GPT-5, Claude (extended thinking'uga) toetavad neid kõik. Demod näitavad mudeleid, mis loevad terveid raamatuid ühe käiguga. Unistus on lõpuks reaalne: pane lihtsalt kõik konteksti ja lase mudelil ise selgeks teha.
Tegelikkus, nagu alati, on nüansirikkam. 1M tokenit on tehniline mahutavus, mitte jõudluse garantii. Päris-maailma mudelid on parimas vormis 5–50K tokeni kontekstiga. 100K+ juures tekivad peened kvaliteediprobleemid. 500K+ juures jäetakse oluline info usaldusväärselt vahele. 1M juures on mudel üle koormatud.
See nähtus — "konteksti-mädanik" — on reaalne, hästi dokumenteeritud ja nähtav evalueerimistes. Järeldus: sa ei saa lihtsalt kõike konteksti visata ja sellega aetud lugeda. Sul on vaja konteksti-insenertööd: teadlikud otsused selle kohta, mida kaasata, mida kokku võtta, mida dünaamiliselt välja võtta ja kuidas tulemuseks olevat konteksti struktureerida.
See artikkel käsitleb tõsiste produktsioonisüsteemide jaoks efektiivse konteksti-insenertöö mustreid ja distsipliini.
Mis on konteksti-mädanik
"Konteksti-mädanik" on empiiriline tähelepanek, et LLM-i jõudlus halveneb konteksti kasvades, isegi tehnilise piiri sees.
Konkreetsed läbikukkumise režiimid:
Keskelt-kadunud. Mudelid pööravad rohkem tähelepanu konteksti algusele ja lõpule. Keskel olev info on ebausaldusväärsemalt kasutatav. Fakt, mis on paigutatud positsioonile 50K-st 100K-st, jääb suurema tõenäosusega kahe silma vahele kui sama fakt positsioonil 1K või 99K.
Värskuse-kallak. Mudelid kaaluvad värskemat sisu üle. Vestlusajaloos muutub vana kontekst praktiliselt nähtamatuks.
Tähelepanu-segajate tundlikkus. Asjasse mittepuutuv sisu kontekstis halvendab jõudlust isegi ülesannete peal, mis seda sisu ei vaja. Mudel peab filtreerima; osa filtreerimissignaalist lekib.
Arutlemise kvaliteet langeb. Mitmesammuline arutlus muutub konteksti kasvades vähem usaldusväärseks. Mudelil on rohkem jälgida; jälgimise kvaliteet kannatab.
Kulu ja latents. Kvaliteedist sõltumata: suured kontekstid on kallid (tokeni-põhine hinnastamine) ja aeglased (lineaarne tokenite arvust paljude mudelite puhul).
Need pole teoreetilised mured. Produktsiooni juurutused naiivsete suurte kontekstidega jäävad järjepidevalt alla juurutustele kureeritud kontekstidega.
Põhimõte: vähem on rohkem
Põhi-arusaam: kontekst on hinnaline, kahanev ressurss. Kasuta seda strateegiliselt.
30K-tokeniline kontekst hoolikalt valitud sisuga ületab tüüpiliselt 300K-tokenilise konteksti, kuhu kõik sisse loobitud. Kvaliteet, kulu ja latents kõik soosivad väiksemat konteksti.
See nihutab inseneritööd. "Leia viis, kuidas konteksti rohkem mahutada" asemel on see "otsusta, mis tegelikult kontekstis peaks olema, ja pane see sinna hästi".
Konteksti eelarve
Mõtle kontekstist kui eelarvest, mille sa jagad.
Tüüpiline jaotus klienditoe agendile:
Kogu konteksti-eelarve: 30K tokenit
- Süsteemiprompt: 1500 tokenit (5%)
- Tööriistakirjeldused: 1000 tokenit (3%)
- Kasutaja profiil / kontekst: 500 tokenit (2%)
- Vestlusajaloo kokkuvõte: 1000 tokenit (3%)
- Hiljutised vestluspööramised (täies pikkuses): 4000 tokenit (13%)
- Välja võetud asjakohased teadmised: 12000 tokenit (40%)
- Kasutaja praegune sõnum: 500 tokenit (2%)
- Väljundi tokeni-eelarve (vastus): 10K tokenit (33%)Iga komponent võistleb ruumi pärast. Konteksti kasvades teed kompromisse.
Distsipliin: ole jaotuse osas selge. Ära lase ühelgi komponendil piiramatult kasvada.
Muster 1: Astmestatud vestlusmälu
Mitmepööramise vestluste jaoks kasvab täisajalugu piiramatult. Enamik produktsioonisüsteeme kasutab astmestatud mälu:
Aste 1: Hiljutised pööramised täies pikkuses. Viimased 5–10 vahetust, sõna-sõnalt.
Aste 2: Kokku võetud vanemad pööramised. Vestluse varasem osa, kokkusurutud lühikeseks kokkuvõtteks.
Aste 3: Välja võetud faktid. Vestluse võtmeinfo (kasutaja nimi, eelistused, tehtud otsused), salvestatud struktureeritud faktidena.
Implementatsioon:
Igal pööramisel:
1. Võta vestlusajalugu.
2. Viimased 10 pööramist hoitakse sõna-sõnalt.
3. Pööramised 11–30 võetakse kokku 200 sõnaks ("Varem arutas kasutaja X-i ja me leppisime kokku Y-s").
4. Pööramised 31+ taandatakse väljavõetud faktideks ("Kasutaja eelistab Pythonit. Kasutaja on enterprise tasemel.").
5. Kokku mälu: ~2K tokenit, sõltumata vestluse pikkusest.See muster on fundamentaalne iga pikalt jooksva vestluse jaoks. Ilma selleta vestlused halvenevad nende kasvades.
Nüanss: kokkuvõtte tegemine peaks säilitama infot, mida agent vajab. Kui kasutaja mainis 5. pööramisel konto numbrit ja agent ei tõmba seda pikaajalisse mällu, on 50. pööramise ajaks konto number kadunud.
Jooksuta kokkuvõtetegemist selgete juhistega selle kohta, mida säilitada:
Võta seni toimunud vestlus kokku. Säilita:
- Kõik faktid kasutaja kohta (nimi, roll, eelistused, kontoinfo).
- Kõik tehtud otsused.
- Kõik avatud kohustused või järellugemised.
- Vestluse praegune eesmärk.
Loobu:
- Viisakustest.
- Korduvast infost.
- Detailsest arutlustest, mis on lahendatud.Muster 2: Just-in-time välja võtmine
Konteksti eelnevalt laadimise asemel võta välja seda, mis on praegu asjakohane, kui see asjakohane on.
Vastandmuster: kõikide kasutaja dokumentide konteksti tuppimine "juhuks kui mudel neid vajab". Enamik päringuid vajab pisikest alamhulka. Konteksti raisatakse; jõudlus kannatab.
Parem: võta dokumendid välja praeguse päringu põhjal. Erinevad päringud saavad erinevaid dokumente. Kokku kontekst kutse kohta jääb väikseks; asjakohasus jääb kõrgeks.
See on lihtsalt distsiplineeritult rakendatud RAG. Võti: ära kiusatu "lihtsalt kõike kaasama, sest saame". See kiusatab isegi kogenud meeskondi, kui pika konteksti mudelid on saadaval.
Muster 3: Kokkusurutud esitused
Info jaoks, mis vajab kontekstis püsimist, kasuta kokkusurutud esitusi.
Originaal (sõnaohter):
Kasutaja on tarkvarainsenerina töötanud 8 aastat. Ta alustas väikeses iduettevõttes nimega Acme Corp, kus ta tegeles tagasüsteemidega. 3 aasta pärast liikus ta suuremasse ettevõttesse nimega Beta Inc, kus ta tegi frontend-tööd. Ta on praegu Gamma LLC-s, kus ta töötab masinõppe süsteemide kallal.Kokkusurutud:
Kasutaja: SWE, 8 a, praegu ML Gamma LLC-s. Varem: backend@Acme (3 a), frontend@Beta.Kokkusurutud versioon säilitab asjakohased faktid vähemates tokenites. Mudel saab mõlemat enamiku eesmärkide jaoks võrdselt hästi kasutada.
Rakenda seda tehnikat:
- Kasutajaprofiilidele.
- Dokumendi kokkuvõtetele.
- Eelmise vestluse kontekstile.
- Teadmistebaasi kirjetele (kui täielikku sisu ei vajata).
Kompromiss: kokkusurumine kaotab nüansi. Kasuta täisteksti, kui nüanss loeb; kokkusurutud, kui mitte.
Muster 4: Hierarhiline välja võtmine
Väga suurte teadmistebaaside jaoks võta välja hierarhiliselt.
Samm 1: Võta välja laiad kategooriad või dokumentide kokkuvõtted päringu põhjal.
Samm 2: Kõige asjakohasemate kategooriate seest võta välja konkreetsed tükid.
Samm 3: Kaasa lõplikku konteksti ainult sammus 2 valitud tükid.
See väldib "mul on 10K dokumenti; lase ma manustan need kõik konteksti". Selle asemel hoiab lehtri-effekt konteksti pingul.
Variant: väike LLM-kutse valib, millised tükid on kõige asjakohasemad, enne kui need põhikutsesse kaasatakse. See lisab väikese kulu, kuid vähendab oluliselt konteksti turset.
Muster 5: Konteksti mõtisklemine
Pikalt jooksvate ülesannete agentide puhul mõtiskle perioodiliselt selle üle, mis kontekstis on ja mis seal olema peaks.
Iga 10 sammu järel agent teeb:
1. Vaatab oma praegust konteksti üle.
2. Identifitseerib, mis on käimasoleva tööga seotud.
3. Võtab kokku või loobub kõigest, mida enam pole vaja.
4. Märgib, mis lisakontekst võiks aidata.
5. Asendab vana konteksti kureeritud versiooniga.See on "prügikoristus" konteksti jaoks. Ilma selleta kuhjuvad agendid seisma jäänud infot, mis tõrjub uue, asjakohase info välja.
Implementatsioon nõuab kohandatud orkestreerimist — enamik raamistikke seda omakeselt ei tee. Muster: sammude vahel on agendil "mälu-konsolideerimise" faas, mis kohandab seda, mis kontekstis on.
Muster 6: Dünaamilised kontekstiaknad
Agendi jooksu eri osad võivad nõuda erinevat optimaalset kontekstisuurust.
- Otsuse-sammud: Väike kontekst, fokuseeritud vahetule otsusele.
- Süntees-sammud: Suurem kontekst, hõlmates palju allikaid.
- Genereerimise sammud: Keskmine kontekst, koos stiili- ja vorminguviidete.
Muster: iga samm agendi töövoos kasutab erinevat konteksti kuju. Orkestreerimine haldab, milline sisu millisesse sammu läheb.
See nõuab agendi töö lammutamist eksplitsiitseteks sammudeks ühe suure tsükli asemel. Raamistiku valik loeb siin (LangGraph käsitleb seda loomulikult; otsene API nõuab käsitsi tööd).
Muster 7: Positsiooni-teadlik paigutus
Arvestades, et mudelid pööravad rohkem tähelepanu konteksti algusele ja lõpule, paiguta oluline sisu sinna.
Vähem efektiivne: Kriitiline juhis pikka süsteemipromptisse keskele maetud.
Tõhusam: Kriitiline juhis päris alguses JA lõpu lähedal uuesti välja öeldud.
RAG-i jaoks mitme välja võetud dokumendiga: kõige asjakohasem dokument alguses, teine kõige asjakohasem lõpus, vähem asjakohased keskel.
See on taktikaline optimeerimine, kuid mõjutab väljundeid mõõdetavalt.
Muster 8: Valikuline kokkuvõtetegemine
Mitte kogu kokkuvõtetegemine pole võrdne. Kohanda kokkuvõtetegemist sellega, mida allavoolu ülesanded vajavad.
Halb: üldine kokkuvõte, mis kasutaja eelistused minema viskab.
Parem: kokkuvõte, mis eksplitsiitselt säilitab kasutaja eelistused, mis on allavoolu ülesande jaoks asjakohased.
Võta see dokument kokku, keskendudes:
- Tehtud tehnilistele otsustele.
- Mainitud sidusrühmadele.
- Avatud küsimustele või riskidele.
Loobu:
- Üldisest kontekstist, mida meeskond juba teab.
- Korduvatest punktidest.Kokkuvõttepromptid on insenertehniliselt allavoolu kasutuse jaoks tehtud.
Muster 9: Struktureeritud kontekst
Lihttekst on üks valik. Struktureeritud kontekst (JSON, XML või kindel märgistus) võib olla palju tihedam.
Sõnaohter proosa:
Kliendi nimi on John Smith. Ta on olnud klient alates märtsist 2023. Tema praegune plaan on Pro, kuukulu 29 $. Tal on 3 aktiivset integratsiooni: Slack, Notion ja Linear. Tema kasutus viimase 30 päeva jooksul on olnud mõõdukas — 1250 API-kutset.Struktureeritud:
{
"customer": {
"name": "John Smith",
"since": "2023-03",
"plan": "Pro",
"billing": "monthly $29",
"integrations": ["Slack", "Notion", "Linear"],
"usage_30d": {"api_calls": 1250, "tier": "moderate"}
}
}Struktureeritud versioon on lühem ja (tihti) lihtsamini mudeli poolt kasutatav. Mudel saab kiiresti konkreetseid fakte leida.
Hoiatus: kõik mudelid pole struktureeritud sisendiga võrdselt head. Testi mõlemat formaati oma kasutusjuhtumi jaoks.
Muster 10: Konteksti kihistamine
Kihista konteksti prioriteedi järgi. Kõrge prioriteet on alati kaasatud; keskmine prioriteet kaasatud kui asjakohane; madal prioriteet välja võetud nõudmisel.
Alati kiht:
- Süsteemiprompt (identiteet, käitumine).
- Praegune kasutaja kontekst (oluline faktid).
- Hiljutine vestlus.
Kui asjakohane:
- Päringule sobivad välja võetud dokumendid.
- Tööriista väljundid hiljutistest sammudest.
Nõudmisel:
- Konkreetsed andmed, mida agent küsib tööriistakutsetega.
- Ajalooline kontekst hiljutise akna kõrvalt.
"Nõudmisel" muster on skaleerumise jaoks kriitiline: agent võtab välja seda, mida vajab, kui ta seda vajab, mitte ei lae kõike eelnevalt.
Muster 11: Väljatõstmise strateegiad
Kui kontekst läheneb piiridele, mis välja tõstetakse?
- Värskuse-põhine: vanim sisu tõstetakse esimesena välja.
- Asjakohasuse-põhine: praeguse ülesandega kõige vähem seotud sisu tõstetakse esimesena välja.
- Tähtsuse-põhine: madala tähtsusega märgitud sisu tõstetakse esimesena välja.
Praktiline muster: silti konteksti-elemente prioriteediastmetega. Kui väljatõstmist on vaja, kaota prioriteedi järjekorras.
context_items = [
{"content": "...", "priority": "critical"}, # Mitte kunagi välja tõsta
{"content": "...", "priority": "high"}, # Tõsta välja viimasena
{"content": "...", "priority": "medium"}, # Tõsta välja, kui vaja
{"content": "...", "priority": "low"}, # Tõsta välja esimesena
]
def evict_to_fit(items, budget):
items_by_priority = sorted(items, key=lambda x: priority_value(x.priority))
while total_tokens(items) > budget:
items.remove(items_by_priority.pop(0)) # Eemalda madalaim prioriteet
return itemsMuster 12: Vahemällu salvestamine korduva konteksti jaoks
Paljud kutsed kasutavad sama konteksti — sama süsteemipromptit, sama tööriistakirjeldusi, sama kasutajaprofiili.
Enamik pakkujaid toetab nüüd prompti vahemällu salvestamist:
- Anthropic: selged
cache_controlmarkerid sõnumites. - OpenAI: automaatne eesliite-vastavusega päringute jaoks.
- Google: selge vahemällu salvestatud sisu API kaudu.
Kui sama eesliidet kasutatakse uuesti, on vahemällu salvestatud versioon kiirem ja odavam (tihti 90% odavam).
Agentide jaoks, mis teevad ühes sessioonis palju kutseid, taga, et staatilised osad (süsteemiprompt, tööriistad, kasutaja kontekst) oleksid vahemällu-salvestatavad. Pane dünaamiline sisu (praegune samm, hiljutised tulemused) vahemällu-salvestatava eesliite järele.
See on üks kõrgeima ROI-ga optimeerimisi. 10K-tokeniline staatiline eesliide, mida kasutatakse 50 kutse vahel ühes sessioonis: täishind esimese kutse jaoks, 90% off järgmiste jaoks. Märkimisväärsed säästud.
Muster 13: Konteksti-teadlikud promptid
Promptid saavad julgustada mudelit konteksti hästi kasutama:
Viita allolevatele dokumentidele, et kasutaja küsimusele vastata. Tsiteeri alati konkreetset dokumenti ja tsiteeri asjakohaseid lõike.
Kui sa ei leia vastust pakutud dokumentidest, ütle seda eksplitsiitselt. Ära väljamõtle infot.
Kui info mitmest dokumendist on asjakohane, sünteesi need ja märgi võimalikud lahkarvamused.Selline promptimine vähendab hallutsineerimist konteksti-põhistel ülesannetel ja parandab tsiteerimise kvaliteeti.
Millal pikemat konteksti omaks võtta
Vaatamata konteksti-mädanikule on pikem kontekst mõnede ülesannete jaoks päriselt parem:
Üksiku dokumendi analüüs. Kui ülesanne on "analüüsi see leping", on terve lepingu mahutamine konteksti sageli parem kui tükeldatud välja võtmine.
Mitme elemendi vahel võrdlus. 10 lepingu kõrvuti võrdlemine saab kasu kõigi 10 konteksti panemisest.
Koodi muutmine kontekstis. Funktsiooni muutmine 5K-rea-koodi failis on lihtsam, kui fail on kontekstis, kui välja võetud katkenditega.
Tervet vestlust hõlmav kokkuvõte. Pika vestluse kokkuvõtte tegemine töötab paremini täiskontekstiga (kuni teatud piirini).
Muster: kui ülesanne fundamentaalselt nõuab seoste mõistmist sisus, aitab pikem kontekst. Kui ülesannet saab teha väikese viiluga, on väiksem kontekst parem.
Praktiline heuristika: kuni 50K tokenini on kontekstid üldiselt okei. 50–200K tokenit töötavad, kuid kvaliteet langeb. 200K+ tokenit jäävad sageli lühematele kontekstidele alla. Testi empiiriliselt.
Eval-distsipliin
Kuidas tead, et sinu konteksti-insenertöö töötab? Eval.
Konkreetsed eval'id:
Meeldetuletustestid. Manusta võtmefaktid pikkadesse kontekstidesse erinevatele positsioonidele. Testi, kas mudel neid kasutab. Mõõda meenutamist vs positsioon.
Tähelepanu-segajate testid. Võrdle jõudlust sama päringu peal koos asjasse mittepuutuva kontekstiga ja ilma. Mõõda halvenemist.
Pikk-kontekst vs RAG võrdlus. Samad päringud vastatud täiskontekstiga vs välja võetud tükkidega. Võrdle kvaliteeti.
Tokeni-efektiivsus. Kvaliteet euro kohta. Konteksti kasvades maksad rohkem — kas kvaliteet kasvab proportsionaalselt?
Need eval'id paljastavad, kas sinu konteksti-valikud tegelikult aitavad. Ilma nendeta arvad.
Läbi tehtud näide: uurimisassistent
Päris-maailma näide: AI-uurimisassistent väikesele meeskonnale.
Ülesanne: Vasta küsimustele 200-dokumendilise korpuse kohta (artiklid, sisedokumendid, koosolekumärkmed).
Naiivne lähenemine: Manusta kõik dokumendid konteksti (300K tokenit). Kvaliteet on okei; kulu on kõrge; latents on halb.
Inseneritehniliselt tehtud lähenemine:
Konteksti-eelarve: 25K tokenit
- Süsteemiprompt: 1500 tokenit (vahemällu)
- Tööriistakirjeldused (search, fetch_doc jne): 800 tokenit (vahemällu)
- Vestlusmälu: 1500 tokenit (viimased 10 pööramist)
- Praeguse päringu jaoks välja võetud tükid: 18000 tokenit (top 12 tükki RAG kaudu)
- Kasutaja praegune küsimus: 200 tokenit
- Väljundi eelarve: ~3000 tokenitAgent võtab tükke dünaamiliselt välja küsimuse põhjal. Vestlusmälu hoiab hiljutist konteksti. Staatilised elemendid on vahemällu salvestatud.
Tulemus:
- Latents: 2–3 sekundit (vs 10–15 300K kontekstiga).
- Kulu: ~0,01 € päringu kohta (vs ~0,10 €).
- Kvaliteet: parem, mõõdetud eval-komplekti peal, sest asjakohasele sisule pööratakse korralikku tähelepanu.
Nii näeb distsiplineeritud konteksti-insenertöö välja. Pole ühekordne otsus, vaid jätkuv häälestamine.
Levinud vead
Mõned mustrid:
Viga 1: "Rohkem konteksti = parem." Pikem kontekst kui lahendus kvaliteediprobleemidele. Tihti on vastupidi.
Viga 2: Pole konteksti-eelarvet. Komponendid kasvavad piiramatult. Kasutaja profiili sektsioonist saab 5K tokenit; välja võetud tükkide sektsioonist saab 50K. Pole distsipliini.
Viga 3: Positsioonide ignoreerimine. Kriitilised juhised keskele maetud, lootuses, et mudel need leiab. Mõnikord leiab; sageli ei.
Viga 4: Sõnaohter proosa faktide jaoks. Pikad laused, kus struktureeritud andmed sobiksid. Raiskab tokeneid.
Viga 5: Pole vestluse kokkuvõtet. Vestlused kasvavad, kuni nad piirid ületavad. Siis kas trail-off või katki.
Viga 6: Pole vahemällu salvestamist. Korduvad staatilised eesliited maksavad iga kutse jaoks täishinda. Lihtne raha lauale jäetud.
Viga 7: Pole eval'i konteksti-valikute kohta. Usaldad, et "parem konteksti-insenertöö" toimib. Vahel ei toimi.
Viga 8: Üldine kokkuvõtetegemine. Võtab kokku, mõtlemata, mida allavoolu ülesanded vajavad. Kaotab infot, mis loeb.
Kokkuvõte
Pikad kontekstiaknad on reaalsed, kuid nad pole luba konteksti-insenertöö ignoreerimiseks. Kvaliteet halveneb ammu enne tehnilisi piire. Kulu ja latents on reaalsed.
Konteksti-insenertöö distsipliin:
- Käsita konteksti kui eelarvet.
- Astmesta mälu (hiljutine sõna-sõnalt, vanem kokku võetud, vanim faktidena).
- Võta välja just-in-time, mitte ennetavalt.
- Suru kokku seal, kus kokkusurumine infot säilitab.
- Pane kriitiline sisu kõrge tähelepanuga positsioonidele.
- Kihista konteksti prioriteedi järgi.
- Salvesta staatilised eesliited vahemällu.
- Eval pidevalt.
Need mustrid toodavad süsteeme, mis töötavad paremini, kiiremini ja odavamalt kui naiivsed "viska kõik konteksti" lähenemised.
Küpsetele produktsioonisüsteemidele on konteksti-insenertöö üks suurima võimendiga alasid. Tehnilised algelemendid on lihtsad; distsipliin neid rangelt rakendada on see, mis eraldab "demo töötab" "produktsioonis usaldusväärsest".
Investeeri mustritesse. Ehita distsipliin. Tulemuseks on AI-süsteemid, mis skaleeruvad graatsiliselt, kui nad puutuvad kokku rohkemate andmete, rohkemate vestluste ja rohkema keerukusega.