Cursussen AI in je bedrijf Week 7 Les 26 / 33

Hallucinations — en hoe je ze vermindert

Waarom modellen dingen verzinnen en wat je eraan kunt doen

Een klant vraagt je AI-assistent wanneer hij vorig jaar zijn laatste bestelling deed. De assistent antwoordt kalm: "Dat was op 14 maart 2025, een paar padelrackets en een tube overgrips." Klinkt prima. Behalve dat die bestelling nooit heeft plaatsgevonden. Het model heeft, zonder met de ogen te knipperen, een alternatieve werkelijkheid uit de lucht gegrepen. Dat heet een hallucinatie. En begrijpen waarom dat gebeurt is de eerste stap om het te temmen.

Waarom modellen überhaupt verzinnen

Een Large Language Model weet niets. Het voorspelt. Gegeven een stuk tekst, berekent het welk volgend token (woordstuk) statistisch het meest waarschijnlijk is. Dat proces herhaalt zich, token na token, tot er een antwoord staat. Nergens in die pijplijn zit een stap "controleer of dit waar is". Waarheid is geen ingebouwde variabele.

Dat is minder erg dan het klinkt, want op getrainde kennis is de voorspelling vaak accuraat. Wetenschappelijke feiten, veelvoorkomende programmeerpatronen, algemene geschiedenis — daar zit zoveel signaal in de trainingsdata dat de "waarschijnlijkste" tekst meestal ook de kloppende tekst is. Maar zodra je vraagt naar iets specifieks dat het model niet kent — jouw factuurnummer, jouw klant, jouw voorraad — moet het toch iets. Dus vult het in wat plausibel klinkt. Een naam die bij de context past. Een datum die aannemelijk is. Een prijs die binnen de marge valt. Dat is de hallucinatie in haar meest gewone vorm.

✦ Vloeiend is niet waar

Hallucinaties zijn taalkundig vaak van hoge kwaliteit. De zin loopt, de toon klopt, de context past. Dat is precies waarom ze gevaarlijk zijn: je leest er gladjes overheen. Een stotterende fout zou je opmerken. Een vloeiende leugen sluipt in je offerte.

Grounding — geef het model iets om op te staan

De sterkste mitigatie is ook de simpelste: zorg dat het model niet op eigen geheugen hoeft te leunen. Geef het de relevante bron in de prompt mee. Dit heet grounding, en in zijn geautomatiseerde vorm Retrieval-Augmented Generation (RAG).

Stel een klant vraagt: "Wat was het totaal van factuur 2026-0143?" In plaats van het model vrij te laten antwoorden, haal je eerst die factuur op uit je eigen database. Je plakt de JSON in de prompt. Je schrijft in je systeem-instructie: "Gebruik uitsluitend de gegevens tussen -tags. Als het antwoord daar niet in staat, zeg dan dat je het niet weet." Nu is de hallucinatie-kans drastisch kleiner, want het model heeft de waarheid letterlijk voor zich liggen.

Grounding is zo krachtig dat de meeste productieve AI-applicaties in 2026 er een vorm van gebruiken. Documentchatbots, support-assistenten, interne kennisbanken — bijna allemaal RAG onder de motorkap. Een latere les in deze cursus bouwt zo'n stack uit.

Structured output — dwing het model in een vorm

Vrije tekst is moeilijk te controleren. Gestructureerde output is makkelijk te valideren. Vraag dus, waar mogelijk, JSON met een vast schema. Anthropic, OpenAI en Google ondersteunen sinds 2025 allemaal structured output waarbij je een JSON Schema meegeeft en het model gegarandeerd valide JSON teruglevert.

Bij een offerte-generator: vraag niet "schrijf een offerte", maar vraag een JSON met velden zoals producten[], totaal_excl_btw, leveringstermijn_dagen. Dan kun je in PHP valideren of het totaal matcht met sommatie van regels, of de leveringstermijn binnen plausibele grenzen valt, of de product-SKU's bestaan. Vindt je validator een afwijking? Stuur de prompt opnieuw, of laat een mens goedkeuren. Structured output verandert "vertrouw het model" in "verifieer het model".

De "ik weet het niet"-instructie

Modellen zijn getraind om behulpzaam te zijn. Dat is meestal goed — behalve als het ze aanzet tot gokken in plaats van toegeven dat ze het niet weten. Je kunt dat gedrag bijsturen in de systeem-prompt. Een formule die in 2026 goed werkt bij Claude 4.7 en GPT-5:

"Beantwoord uitsluitend op basis van de gegeven context. Als de context geen antwoord bevat, antwoord letterlijk: 'Dat staat niet in de mij gegeven informatie.' Verzin nooit feiten, namen, getallen of datums."

Klinkt kinderlijk. Werkt verrassend goed. Test het met opzettelijk onbeantwoordbare vragen en kijk of je model zich aan de regel houdt. Als je consistent "dat weet ik niet" terugkrijgt op vragen die écht niet in de context staan, is je guardrail in orde.

✦ Temperatuur verlagen, bescheiden effect

Een lagere temperature (0.0 tot 0.3) maakt het model minder creatief en iets minder geneigd tot wilde invullingen. Het is géén remedie tegen hallucinaties — gronding en validatie doen veel meer. Maar voor taken waar je feitelijkheid boven variatie prefereert (factuurverwerking, data-extractie), is temp=0 een zinvolle default.

Evals — meet wat je niet ziet

Zonder meetinstrument weet je niet of je mitigaties werken. Bouw een evaluatie-set op: zeg twintig vragen waarvan jij het juiste antwoord kent, inclusief een paar valstrikvragen ("wat was de bestelling van Jansen op 30 februari?"). Run die set iedere keer dat je je prompt, model of context-opbouw wijzigt.

Voor een solo-bouwer is dit geen grote exercitie. Een JSON-bestand met twintig items, een PHP-script dat ze door je AI-endpoint stuurt en de output vergelijkt met de verwachte strekking. Semantic match kan met een goedkoop model (Haiku, GPT-5-mini) die "klopt dit ongeveer met dit?" beoordeelt. Een cronjob elke nacht, een mailtje als het succespercentage zakt. Klaar. Dit soort zelfgebouwde evals voorkomen dat je een prompt-wijziging doorvoert die één ding verbetert en drie andere dingen sloopt.

Zelf-consistentie — meerdere antwoorden, één waarheid

Voor extra kritische vragen kun je het model twee of drie keer parallel aanroepen met dezelfde prompt en de antwoorden vergelijken. Als alle drie hetzelfde getal geven, is de kans op een hallucinatie klein. Komen ze niet overeen, dan weet je dat je niet mag vertrouwen en laat je een mens naar kijken. Deze techniek heet zelf-consistentie en is goedkoop om in te bouwen — drie calls aan Haiku kost minder dan één aan Opus. Niet altijd nodig, wel een goede backstop voor beslissingen met geld of juridische lading.

Output-validatie — de laatste lijn

Zelfs met perfecte gronding, strakke JSON en lage temperatuur kan er iets raars doorslippen. Daarom: valideer altijd de output voor je er iets mee doet. Controleer of genoemde SKU's in je database bestaan. Controleer of totalen kloppen met sommatie. Controleer of datums in een redelijke range vallen. Controleer of genoemde klantnamen matchen met je klantenbestand.

Dit zijn vaak simpele if-statements in PHP. Ze voelen saai. Maar ze vangen precies de categorie fouten waar het model zich kundig omheen praat. De regel is: laat een AI nooit autonoom naar een externe partij schrijven (klant, boekhouder, leverancier) zonder dat een mens óf een validatielaag ertussen zit. In de komende cases zie je die flow concreet terug.

Drie dingen om mee te nemen

  1. Hallucinaties komen voort uit voorspelling, niet uit waarheid. Geen boze bedoeling van het model — gewoon het mechanisme. Behandel output altijd als concept tot gevalideerd.
  2. Gronding verslaat improvisatie. Geef het model de relevante bron mee en instructies om binnen die bron te blijven. Dat is twee derde van de winst.
  3. Valideer wat telt. Structured output, evals, en een laatste if-statement voor alles wat geld, mensen of juridische gevolgen raakt. Vloeiend taalgebruik is geen bewijs.

In de volgende les gaat het over een ander soort onbetrouwbaarheid: bias in trainingsdata, en de aanvallers die bewust proberen je model van zijn taak af te brengen.

Tot dan. Blijf scherp.

Cursus
↑ Overzicht