Waarom het contextvenster alles verandert (en hoe je het optimaal benut)
Het contextvenster van een LLM is de hoeveelheid tekst die het in één interactie kan meenemen. In 2026 maken modellen zoals Gemini 1.5 Pro (tot 1 miljoen tokens), Claude 3.5 Sonnet (200.000 tokens) of GPT-4 Turbo (128.000 tokens) het mogelijk om uitgebreide documenten, lange gespreksgeschiedenissen of volledige codebases te verwerken zonder de informatie te hoeven opsplitsen. Deze capaciteit verandert volledig de manier waarop we prompts en workflows configureren.
Een LLM correct configureren om optimaal gebruik te maken van de lange context betekent niet alleen een enorme tekst plakken. Het vereist het afstemmen van parameters, het beheren van geheugen en het valideren dat het model daadwerkelijk de relevante informatie gebruikt. In deze stapsgewijze handleiding bekijken we hoe je dit doet met concrete voorbeelden en de beperkingen die je moet kennen.
Stap 1: Kies het juiste model op basis van je use case
Niet alle modellen met lange context presteren hetzelfde. Voordat je iets configureert, bepaal je wat je nodig hebt:
- Zeer uitgebreide documenten (contracten, rapporten, boeken): Gemini 1.5 Pro is de meest gangbare optie vanwege het venster van 1M tokens, hoewel de latentie hoger kan zijn. Claude 3.5 Sonnet verwerkt 200k tokens met een uitstekende redeneerkwaliteit voor juridische en technische analyses.
- Multi-turn gesprekken met een lange geschiedenis: GPT-4 Turbo (128k) of Claude 3.5 Haiku (200k) bieden een goede balans tussen kosten en het vermogen om de draad vast te houden.
- Code en repositories: modellen zoals CodeLlama 70B met uitgebreid venster of GPT-4 Turbo met 128k zijn nuttig, maar onthoud dat context de noodzaak om per module op te splitsen niet wegneemt.
Volgens de officiële documentatie van elke provider is de kosten per inputtoken doorgaans lager dan die per outputtoken, maar bij lange contexten schiet het inputvolume omhoog. Maak een realistische schatting voordat je begint.
Stap 2: Bereid de tekst voor en verwijder ruis
Een veelgemaakte fout is het volledige document zonder filtering erin te gooien. Het model besteedt aandacht aan alles, maar irrelevante informatie concurreert om de aandachtsbronnen. Voordat je verzendt:
- Verwijder repetitieve koppen, voetteksten en metadata die niets toevoegen.
- Als de tekst meer dan 80% van het venster beslaat, prioriteer dan secties via eerdere samenvattingen of het extraheren van sleutelfragmenten.
- Extraheer voor PDF’s de tekst met tools zoals PyPDF2 of pdfplumber; vermijd het verzenden van gescande afbeeldingen zonder OCR.
In onze ervaring met de analyse van contracten van meer dan 300 pagina’s verbeterde het opnemen van de inhoudsopgave en de volledige bijlagen de nauwkeurigheid van de antwoorden, maar het toevoegen van artikelen van niet-gerelateerde wetten verhoogde de hallucinaties. De sleutel ligt in relevantie, niet in de ruwe hoeveelheid.
Stap 3: Configureer de parameters van het model
De gebruikelijke parameters (temperatuur, top_p, max_tokens) werken samen met de lange context:
- Temperatuur: gebruik voor extractie- of samenvattingstaken lage waarden (0,1-0,3) om ongewenste creativiteit te verminderen. Bij lange contexten kan een hoge temperatuur ervoor zorgen dat het model specifieke details negeert.
- Max_tokens voor output: stem dit af op de verwachte grootte van het antwoord. Als je een samenvatting van 200 woorden nodig hebt, laat dan geen 4000 outputtokens toe; dit voorkomt afdwalingen in de antwoorden.
- Contextvenster: sommige providers maken het mogelijk een lagere limiet op te geven om kosten te besparen. Als je document 50k tokens bevat, configureer dan geen 1M; het model heeft die ruimte niet nodig en de kosten schieten omhoog.
In API’s zoals die van OpenAI regelt de parameter max_tokens de output, maar de inputcontext wordt automatisch beheerd. Bij implementaties met Hugging Face of vLLM daarentegen moet je max_model_len expliciet instellen. Raadpleeg de documentatie van je provider.
Stap 4: Structureer de prompt zodat het model de speld vindt
Een goed ontworpen prompt is cruciaal. Volg voor lange contexten deze structuur:
- Duidelijke instructie aan het begin: geef aan wat het model moet doen en hoe het de context moet gebruiken. Voorbeeld: «Hieronder staat een contract van 200 pagina’s. Extraheer de vertrouwelijkheidsclausules en leg hun reikwijdte uit. Antwoord alleen met de informatie uit de tekst.»
- Scheidingstekens: gebruik tags zoals <documento>…</documento> om de context van de instructies te scheiden. Dit helpt het model secties te onderscheiden.
- Expliciete verwijzingen: als het document secties heeft, vermeld dan de paginanummers of titels zodat het model weet waar het moet zoeken. Voorbeeld: «Raadpleeg sectie 4.2 van het bijgevoegde document».
- Uitvoerformaat: geef aan of je JSON, een lijst of een paragraaf wilt. Bij lange contexten neigt het model af te dwalen; een uitvoersjabloon vermindert de variabiliteit.
Een patroon dat goed werkt, is het opnemen van een samenvatting van het document aan het begin (vooraf gegenereerd) en vervolgens de volledige tekst. Het model gebruikt de samenvatting als kaart en de volledige tekst als detailbron.
Stap 5: Implementeer retrieval- en geheugentechnieken
Zelfs met vensters van 1M tokens is het niet altijd optimaal om alles te verzenden. Overweeg voor terugkerende workflows:
- RAG (Retrieval-Augmented Generation): splits het document in fragmenten, indexeer met embeddings en haal alleen de relevante op. Dit verlaagt de kosten en verbetert de nauwkeurigheid bij specifieke vragen. Bibliotheken zoals LangChain of LlamaIndex vergemakkelijken de integratie.
- Schuivend venster: behoud voor gesprekken de laatste N beurten en vat de eerdere samen. Zo behoud je de draad zonder de limiet te overschrijden.
- Contextcaching: sommige providers (Anthropic bijvoorbeeld) maken het mogelijk de statische context te cachen om deze niet bij elke aanroep opnieuw te verzenden. Dit verlaagt de latentie en kosten in applicaties met hetzelfde basisdocument.
In een klantenserviceproject ontdekten we dat het verzenden van de volledige 100k tokens geschiedenis bij elk verzoek de kosten tienvoudig verhoogde ten opzichte van het gebruik van RAG met de laatste 20 beurten en een samenvatting. Het voordeel van lange context ontslaat je niet van het ontwerpen van een goede architectuur.
Stap 6: Valideer en monitor de prestaties
Ga er niet van uit dat het model de volledige context gebruikt. Voer gecontroleerde tests uit:
- Plaats een sleutelzin op een willekeurige positie in het document en controleer of het model deze terugvindt wanneer je ernaar vraagt. Herhaal dit op verschillende posities (begin, midden, einde) om het «lost in the middle»-effect te detecteren, dat in sectorstudies is gedocumenteerd.
- Meet de latentie: hoe groter de context, hoe langer de verwerkingstijd. Als je applicatie realtime antwoorden vereist, moet je mogelijk het venster beperken of kleinere modellen gebruiken.
- Registreer het aantal input- en outputtokens om de uitgaven te beheersen. Tools zoals LangSmith of Helicone bieden gedetailleerde traces.
Een veelgemaakte fout is aannemen dat het model altijd aandacht zal besteden aan de details aan het einde van het document. In onze tests met Claude 3.5 Sonnet en een tekst van 150k tokens kregen vragen over de laatste 10% van het document in 85% van de gevallen correcte antwoorden, maar de nauwkeurigheid daalde naar 60% als de vraag ambigu was. Continue validatie is onmisbaar.
Beperkingen die je moet accepteren
Lange context is geen magische oplossing. Dit zijn de praktische beperkingen:
- Kosten: het verwerken van 1M inputtokens kan meerdere dollars per aanroep kosten. Bij intensief gebruik loopt de uitgave snel op.
- Latentie: modellen doen er langer over om antwoorden te genereren wanneer de context enorm is. In interactieve applicaties kan dit onacceptabel zijn.
- Verminderde aandacht: hoewel het model alle tekst «ziet», weegt het de relevante informatie niet altijd correct. Details midden in lange documenten kunnen over het hoofd worden gezien.
- Tokenlimieten: hoewel vensters van 1M worden aangekondigd, kan de werkelijke limiet lager zijn afhankelijk van de provider en het plan. Controleer altijd de voorwaarden van je API.
Deze aanpak werkt niet voor taken die actuele kennis vereisen die verder gaat dan de kennisafsluitdatum van het model, noch voor redeneringen die nauwkeurige symbolische berekeningen nodig hebben. Combineer voor die gevallen het LLM met externe tools.
Praktisch voorbeeld: configuratie voor het analyseren van een contract van 200 pagina’s
Stel dat je verplichtingen en termijnen uit een contract wilt extraheren. Concrete stappen:
- Extraheer de tekst uit de PDF en reinig deze. Sla het resultaat op in een tekstbestand.
- Tel de tokens met de bibliotheek tiktoken (voor OpenAI) of de tokenizer van het gekozen model. Als het meer dan 90% van het venster beslaat, splits dan per sectie en verwerk in delen met een latere samenvatting.
- Kies Claude 3.5 Sonnet (200k tokens) als het contract past; zo niet, Gemini 1.5 Pro.
- Bouw de prompt op: instructie + scheidingstekens + document + uitvoerformaat (JSON met velden «verplichting», «termijn», «partij»).
- Stel temperatuur 0,2 en max_tokens 2000 in.
- Voer uit en valideer handmatig een steekproef van de extracties. Pas de prompt aan als er omissies zijn.
In onze ervaring verbetert het opnemen van een checklist van clausuletypen aan het begin van de prompt de volledigheid. Het is ook nuttig het model te vragen de pagina of sectie te citeren waaruit het elk gegeven extraheert.
Conclusie
Een LLM met lange context configureren vereist meer dan alleen de tokenlimiet verhogen. Het omvat het kiezen van het juiste model, het opschonen van de tekst, het ontwerpen van een gestructureerde prompt, het implementeren van retrieval waar nodig en het valideren van het gedrag. De voordelen zijn duidelijk: minder fragmentatie, betere samenhang in uitgebreide documenten en natuurlijkere gesprekken. Maar de kosten, de latentie en de selectieve aandacht van het model stellen grenzen die je moet beheren. Met de beschreven stappen kun je deze capaciteit beginnen te benutten zonder in de meest voorkomende fouten te vervallen.