Systeemprompt
Wie weleens met ChatGPT, Claude of een andere AI-chatbot praat, ziet alleen het gesprek dat hijzelf begint. Maar voordat die eerste vraag wordt gesteld, heeft het systeem meestal al een uitgebreide set instructies meegekregen: de systeemprompt. Dit is een stuk tekst, onzichtbaar voor de gebruiker, dat het taalmodel vertelt wie het is, hoe het zich moet gedragen en wat het wel of niet mag doen.
Een handige vergelijking is die van een nieuwe medewerker bij een callcenter. Voordat die medewerker de telefoon opneemt, krijgt hij een instructiekaart: wees beleefd, noem de naam van het bedrijf, verwijs klachten door naar een specifieke afdeling, en geef nooit medisch advies. De klant aan de andere kant van de lijn hoort die kaart nooit voorlezen, maar merkt wel dat de medewerker zich eraan houdt. Zo werkt een systeemprompt ook: hij bepaalt de "persoonlijkheid" en de spelregels van de AI, nog voordat de gebruiker iets heeft getypt.
Wat is het precies?
Een taalmodel (een LLM, groot taalmodel, zoals GPT-4 of Claude) genereert tekst door steeds het volgende woord te voorspellen op basis van alles wat eraan voorafging. Het model heeft geen geheugen of persoonlijkheid van zichzelf; het reageert puur op de tekst die het te zien krijgt, de zogeheten prompt.
In de praktijk bestaat die tekst meestal uit meerdere lagen. Eerst komt de systeemprompt, geschreven door de bouwer van de chatbot. Daarna volgt het eigenlijke gesprek: de vragen van de gebruiker en de antwoorden van het model. Voor het model zelf is dit één doorlopende tekststroom, maar de systeemprompt staat vooraan en krijgt daardoor een soort voorrangspositie: het model is erop "getraind" om instructies die zo binnenkomen zwaarder te laten wegen dan latere berichten.
In een systeemprompt kan van alles staan. Een paar veelvoorkomende onderdelen: een persona ("Je bent een vriendelijke klantenservice-assistent van bedrijf X"), een toon van stem (formeel, informatief, luchtig), harde regels ("Geef nooit financieel advies", "Antwoord altijd in het Nederlands"), opmaakinstructies, en beschrijvingen van externe hulpmiddelen die het model mag gebruiken, zoals een rekenmachine of een zoekfunctie (dit heet vaak tool use).
Belangrijk is de contextvenster: de totale hoeveelheid tekst die een model in één keer kan "zien", gemeten in tokens (stukjes tekst, ruwweg driekwart woord per token). De systeemprompt telt mee in dat venster. Een lange, gedetailleerde systeemprompt kost dus ruimte die niet meer beschikbaar is voor het gesprek zelf, en kan bovendien de rekenkosten per gesprek verhogen.
Sommige bedrijven houden hun systeemprompt geheim, andere maken hem juist openbaar. Verder is de systeemprompt geen garantie: een model volgt de instructies over het algemeen, maar kan er ook van afwijken, zeker als een gebruiker het model actief probeert te overtuigen om de regels te negeren.
Wat wil men ermee bereiken?
De belangrijkste reden om een systeemprompt te gebruiken, is consistentie. Een bedrijf wil dat zijn chatbot elke keer op dezelfde, herkenbare manier reageert, ongeacht wat de gebruiker vraagt.
Daarnaast dient de systeemprompt als eerste verdedigingslinie voor veiligheid, vaak guardrails genoemd: regels die moeten voorkomen dat het model schadelijke, illegale of ongepaste inhoud produceert, of gevoelige informatie prijsgeeft.
Een systeemprompt geeft ook merkidentiteit mee. Een chatbot van een bank moet zakelijker klinken dan een chatbot voor tieners op een sociaal medium, terwijl beide op hetzelfde onderliggende taalmodel kunnen draaien.
Ten slotte is het een goedkope vorm van maatwerk. Het opnieuw trainen van een taalmodel kost enorm veel rekenkracht en tijd. Een systeemprompt aanpassen kost een paar seconden. Daardoor kunnen bedrijven en zelfs individuele gebruikers razendsnel een eigen variant van een chatbot bouwen, zonder ooit aan het onderliggende model te hoeven sleutelen. Dit maakt het mogelijk dat één basismodel de motor vormt achter honderden verschillende producten en persona's.
Voorbeelden uit de praktijk
Een bekend vroeg voorbeeld is Bing Chat (destijds intern ook wel "Sydney" genoemd), de chatbot die Microsoft in februari 2023 aan zijn zoekmachine koppelde. Kort na de lancering slaagde onderzoeker Kevin Liu erin de verborgen systeemprompt van de bot te laten prijsgeven door een slimme reeks vragen, een techniek die bekend werd als prompt injection. Het voorval liet zien hoe kwetsbaar systeemprompten in de praktijk kunnen zijn.
OpenAI introduceerde in de loop van 2023 "custom instructions" voor ChatGPT, waarmee gewone gebruikers zelf een stukje persoonlijke systeemprompt konden invullen (bijvoorbeeld: "Antwoord altijd beknopt"). Later dat jaar, tijdens het eigen ontwikkelaarsevenement, kwamen daar de "GPT's" bij: door derden gebouwde chatbotvarianten die in de kern draaien op een eigen systeemprompt, zonder dat er iets aan het onderliggende model verandert.
Anthropic, de maker van Claude, koos voor een ongebruikelijke aanpak van openheid: sinds 2024 publiceert het bedrijf de systeemprompts die Claude.ai daadwerkelijk gebruikt, inclusief updates wanneer die worden aangepast. Dit wordt gepresenteerd als een stap richting transparantie over hoe de assistent wordt aangestuurd.
Ook buiten de bekende chatbots duikt het principe op. Snapchat's ingebouwde assistent "My AI" kreeg een systeemprompt mee die de bot moest laten klingen als een vriendelijke, voorzichtige metgezel voor een grotendeels jong publiek. Platforms als Character.ai bouwen hun hele product rond het idee dat gebruikers zelf uitgebreide systeemprompt-achtige persona's kunnen samenstellen, van fictieve personages tot studiehulpjes.
Hoe ver is de techniek?
Het werken met systeemprompts is inmiddels een gevestigde, alledaagse techniek. Vrijwel elke commerciële chatbot gebruikt er een, en het schrijven ervan, soms "prompt engineering" genoemd, is een vak op zich geworden binnen softwareontwikkeling.
Het onopgeloste probleem is echter hardnekkig: prompt injection. De term werd in 2022 gemunt door de onafhankelijke onderzoeker en softwareontwikkelaar Simon Willison, die liet zien dat gebruikers (of zelfs tekst uit externe bronnen die een model verwerkt, zoals een webpagina of e-mail) een taalmodel kunnen verleiden om zijn systeeminstructies te negeren of te onthullen. Omdat een LLM systeemprompt en gebruikersinvoer uiteindelijk als één tekststroom verwerkt, is er geen harde technische muur tussen "instructie van de eigenaar" en "invoer van de gebruiker", zoals die wel bestaat tussen bijvoorbeeld code en data in traditionele software.
Onderzoekers werken aan oplossingen. OpenAI publiceerde in 2024 onderzoek naar een zogeheten instructiehiërarchie: een trainingsmethode die modellen beter moet leren onderscheiden welke instructies zwaarder wegen, zodat een systeemprompt lastiger te overschrijven is door latere berichten. Dergelijke methodes verminderen het risico, maar een waterdichte garantie bestaat vooralsnog niet. Voor toepassingen waarbij een systeemprompt bedrijfsgeheimen bevat, of waarbij misbruik van de chatbot echt schadelijk kan zijn, blijft dit dus een reëel aandachtspunt.
Wie werken eraan?
De grote AI-bedrijven die eigen taalmodellen bouwen, zijn ook de partijen die het meeste onderzoek doen naar systeemprompts en de beveiliging ervan: OpenAI (maker van ChatGPT en GPT-4/GPT-5), Anthropic (maker van Claude), Google DeepMind (maker van Gemini) en Microsoft, dat taalmodellen inzet in producten als Copilot.
Veel van dit werk is deels bedrijfsgeheim: de precieze systeemprompts en de technieken om ze te beschermen worden meestal niet volledig gedeeld, al publiceren sommige bedrijven, zoals Anthropic, wel delen ervan uit transparantieoverwegingen.
Daarnaast is er een levendige gemeenschap van onafhankelijke onderzoekers en beveiligingsspecialisten die juist de kwetsbaarheden onderzoeken en openbaar maken, met Simon Willison als een van de meest aangehaalde stemmen op dit gebied. Academische onderzoeksgroepen aan universiteiten wereldwijd publiceren bovendien geregeld artikelen over prompt injection en verdedigingsmethoden, vaak in samenwerking met of als reactie op werk van de grote techbedrijven.