Een taalmodel in productie nemen is niet een ZIP downloaden en een commando uitvoeren. Ik heb teams maanden zien besteden aan een proof of concept dat werkte op de laptop van een engineer en op de eerste maandag met twintig gelijktijdige gebruikers omviel. Deze gids beschrijft het werkelijke configuratieproces, met de beslissingen die ertoe doen en de punten waar bijna iedereen struikelt.
Voordat je iets aanraakt: definieer de use case en het succes criterium
De technische configuratie hangt af van het werk dat het model gaat doen. Een interne assistent die antwoordt op basis van bedrijfsdocumentatie (retrieval-augmented generation over PDF’s) is niet hetzelfde als een classifier voor supporttickets (een afgebakende taak waarbij een klein, goed afgestemd model wint van een groot model met een generieke prompt).
Schrijf een concrete zin voordat je een leverancier kiest: «de salesmedewerker typt een vraag over prijzen en ontvangt binnen drie seconden een antwoord met de link naar het betreffende deel van de catalogus». Als je dat niet kunt meten, kun je niets met verstand configureren.
Een veelgemaakte fout: teams die beginnen met de vraag om «een interne ChatGPT» zonder domein of bronnen af te bakenen. Het resultaat is een chat die hallucineert over het vakantiebeleid omdat niemand hem toegang gaf tot het juiste document. Baken de bronnen af voordat je aan het model begint.
Beslissing 1: beheerde API, zelfgehost open model of hybride
Drie reële routes, met verschillende kosten en fricties:
- API van een cloudleverancier: je bent binnen enkele uren operationeel. De kosten zijn variabel per token en de latentie hangt af van het netwerk. Geschikt voor bijna alles, behalve wanneer er gegevens zijn die het perimeter niet mogen verlaten.
- Open model op je eigen infrastructuur: volledige controle over de data, vaste GPU-kosten. Vereist kennis van het draaien van inferentie: kwantisatie, videogeheugen, verzoekwachtrijen. Een model van 7-8 miljard parameters in 4-bits kwantisatie draait op een GPU van 24 GB; een model van 70B heeft er meerdere nodig of agressieve kwantisaties die de kwaliteit aantasten.
- Hybride: een klein lokaal model voor classificeren en routeren, een groot model via API alleen voor de complexe queries. Verlaagt kosten en data-exposure.
Volgens officiële documentatie van de belangrijkste inferentieframeworks (vLLM, TGI, Ollama) hangt de productieprestatie meer af van batching en het beheer van de KV-cache dan van het gekozen model. Een slecht geconfigureerde server met een uitstekend model geeft een slechtere ervaring dan een goed afgestelde met een middelmatig model.
De factor die niemand begroot: de GPU
Als je voor zelfhosting kiest, bereken dan het geheugen voordat je koopt. Vuistregel: parameters in miljarden × bytes per parameter afhankelijk van kwantisatie (≈0,5 byte bij 4 bits, ≈1 byte bij 8 bits, ≈2 bytes bij 16 bits) plus de ruimte voor de context. Een 7B in FP16 neemt ongeveer 14 GB in beslag alleen al voor de gewichten; met een lange context zit je eerder zonder VRAM dan je denkt.
Beslissing 2: hoe je het model de kennis van het bedrijf geeft
Hier zit 80% van het echte werk. Twee benaderingen:
Retrieval-augmented generation (RAG)
Je splitst documenten op, genereert embeddings, slaat ze op in een vectorindex en haalt bij elke query de relevante fragmenten op om ze in de prompt te injecteren. Configuratiestappen:
- Ingestie met versiebeheer. Elk document krijgt metadata: bron, datum, afdeling, rechten. Zonder rechten in de metadata kan een stagiair notulen van de raad van bestuur lezen.
- Bewust opsplitsen. Fragmenten van 300-800 tokens met overlap. Opsplitsen op tekens breekt tabellen en lijsten; splits op structuur (koppen, alinea’s).
- Embeddings en herindexering. Kies een meertalig embeddingmodel als er documenten in meerdere talen zijn. Plan herindexering wanneer het corpus verandert; een verouderde index antwoordt met gegevens van twee jaar geleden zonder waarschuwing.
- Hybride retrieval. Combineer semantisch zoeken met lexicaal zoeken (BM25). Productcodes en eigennamen falen bij puur vectorieel zoeken.
- Reranking en drempelwaarde. Een reranker verwijdert irrelevante fragmenten. Definieer een drempelwaarde: als de gelijkenis laag is, moet de assistent «ik weet het niet» zeggen in plaats van te verzinnen.
Fine-tuning
Nuttig voor stijl, uitvoerformaat en repetitieve taken met veel gelabelde voorbeelden. Het is niet het instrument om veranderende kennis te injecteren: een model dat is afgestemd met de catalogus van januari blijft antwoorden met die van januari. Voor gegevens die veranderen: RAG.
Configuratie van de systeemprompt en de waarborgen
De systeemprompt is configuratie, geen creatief schrijfwerk. Definieer: rol, toon, grenzen, uitvoerformaat en wat te doen bij twijfel. Wees expliciet over het formaat als je het antwoord gaat parsen (JSON met vast schema, bijvoorbeeld) en valideer de uitvoer met een parser voordat je die aan de gebruiker toont.
Minimale waarborgen die je moet configureren:
- In- en uitvoerfilter voor persoonsgegevens volgens het interne beleid.
- Limiet op contextlengte en uitvoertokens (voorkomt ontsporende kosten).
- Logging van gesprekken met gedefinieerde retentie en geauditeerde toegang.
- Rate limiting per gebruiker en per IP.
- Knop «onjuist antwoord melden» die een revisiewachtrij voedt.
Een detail dat je in productie ontdekt: gebruikers plakken volledige gesprekken uit andere chats in de prompt. Zonder lengtelimiet vermenigvuldigt de kosten per sessie zich en raakt het model afgeleid door irrelevante context.
Integratie met de systemen van het bedrijf
De assistent staat zelden op zichzelf. Typische configuratie:
- Orchestratielaag (eigen backend of agentframework) die het verzoek ontvangt, beslist of de index wordt geraadpleegd, een tool aanroept of direct antwoordt.
- Connectors naar interne systemen via API met servicecredentials met alleen-lezenrechten en minimale permissies. Geef het model in de eerste versie nooit schrijfcredentials op het ERP.
- Authenticatie en overerving van permissies. De assistent mag alleen antwoorden met wat de gebruiker mag zien. Dit implementeer je in de retrievall aag, niet in de prompt: het model vragen om «geen vertrouwelijke gegevens te onthullen» is geen toegangscontrole.
- Observability. Traces per verzoek: invoer- en uitvoertokens, latentie, opgehaalde fragmenten, geschatte kosten. Zonder dit kun je niet optimaliseren of de uitgaven rechtvaardigen.
Test met echte data voordat je de deur opent
Stel een evaluatieset samen met echte gebruikersvragen en verwachte antwoorden. Meet: nauwkeurigheid van het antwoord, percentage correcte «ik weet het niet», latentie percentiel 95 en gemiddelde kosten per query. Volgens sectorstudies komt een aanzienlijk deel van de fouten in bedrijfsassistenten uit de retrieval, niet uit de generatie: het model antwoordt goed op een verkeerd fragment.
Test ook de randgevallen: ambigue vragen, verzoeken buiten het domein, pogingen tot promptmanipulatie. En controleer het gedrag met slecht gedigitaliseerde gescande documenten: vuile OCR levert antwoorden met corrupte cijfers op.
Geleidelijke uitrol en onderhoud
Begin met een pilotgroep van tien tot twintig mensen uit één afdeling. Verzamel twee weken lang feedback, pas de prompt en het corpus aan, en breid pas daarna uit. Heb een terugdraaiplan: de assistent kunnen uitschakelen zonder de workflow van het team te breken.
Onmisbaar doorlopend onderhoud: herindexeren wanneer documenten veranderen, wekelijkse kosten controleren, latentie monitoren en het model pas bijwerken wanneer er een betere versie verschijnt nadat de evaluatie is doorstaan. Van model wisselen zonder te evalueren is de snelste manier om een systeem dat werkte te verslechteren.
Wat deze aanpak niet oplost
Een aldus geconfigureerd LLM vervangt geen regelsysteem in processen waar exactheid verplicht is (loonberekening, naleving van regelgeving met cijfers). Het is ook niet betrouwbaar voor complexe wiskundige redeneringen zonder externe tools. En het neemt de noodzaak van menselijke beoordeling bij gevoelige externe communicatie niet weg.
De stapsgewijze configuratie die werkt, is degene die afgebakend begint, meet en alleen uitbreidt wat waarde bewijst. De rest is geld uitgeven aan tokens.