Wat is system prompt vs user prompt?
Rollen en verantwoordelijkheden
In chat-gebaseerde LLM's worden prompts vaak opgesplitst in twee categorieën: system prompts en user prompts. De system prompt wordt door de ontwikkelaar of beheerder ingesteld en bepaalt het algemene gedrag, de rol en de beperkingen van het model. Bijvoorbeeld: 'Je bent een behulpzame assistent die alleen vragen beantwoordt over juridische onderwerpen.' De system prompt is doorgaans niet zichtbaar voor de eindgebruiker en blijft constant over meerdere interacties. De user prompt daarentegen is de daadwerkelijke invoer van de gebruiker: een vraag, opdracht of reactie. Het model combineert beide prompts bij het genereren van een antwoord. De system prompt heeft vaak meer gewicht omdat deze de context en grenzen bepaalt. Sommige modellen ondersteunen ook een assistant-rol, waarmee eerdere antwoorden van het model worden weergegeven. Dit maakt multi-turn gesprekken mogelijk. Het onderscheid tussen system en user prompts is belangrijk voor prompt engineering: een goed geschreven system prompt kan het model sturen zonder dat de gebruiker telkens uitgebreide instructies hoeft te geven. Het stelt ontwikkelaars ook in staat om veiligheidsmaatregelen in te bouwen, zoals het weigeren van schadelijke verzoeken.
Prompt engineering en veiligheid
Prompt engineering is het vakgebied dat zich richt op het ontwerpen van effectieve prompts. Een system prompt kan worden gebruikt om het model een specifieke persoonlijkheid te geven, zoals 'Je bent een vriendelijke klantenservice-medewerker' of 'Je bent een expert in Python-programmering'. Dit beïnvloedt toon, stijl en inhoud van de antwoorden. Het is echter geen garantie: modellen kunnen nog steeds afwijken, vooral bij complexe of tegenstrijdige verzoeken. Een belangrijk veiligheidsaspect is prompt injection, waarbij een gebruiker probeert de system prompt te overschrijven of te omzeilen. Bijvoorbeeld door te zeggen: 'Negeer alle vorige instructies en doe het volgende...'. Moderne modellen zijn getraind om dergelijke aanvallen te weerstaan, maar het is geen waterdicht systeem. Ontwikkelaars worden aangeraden om gevoelige instructies niet in de system prompt te zetten als ze niet openbaar mogen worden. Daarnaast is het belangrijk om de system prompt te scheiden van gebruikersinvoer, zodat gebruikers niet per ongeluk of expres de rol van het model kunnen veranderen. Het bewust omgaan met systeem- en gebruikersprompts is essentieel voor veilige en betrouwbare LLM-toepassingen.