Naast structuur wordt effectieve prompt engineering geleid door principes—fundamentele waarheden die van toepassing zijn op alle modellen, taken en contexten. Beheers deze principes, en je kunt je aanpassen aan elke prompt-uitdaging.

<Callout type="info" title="De 8 Kernprincipes">
Deze principes zijn van toepassing op elk AI-model en elke taak. Leer ze één keer, gebruik ze overal.
</Callout>

## Principe 1: Duidelijkheid Boven Slimheid

De beste prompts zijn duidelijk, niet slim. AI-modellen zijn letterlijke interpreters—ze werken met precies wat je ze geeft.

### Wees Expliciet

<Compare 
  before={{ label: "Impliciet (problematisch)", content: "Maak dit beter." }}
  after={{ label: "Expliciet (effectief)", content: "Verbeter deze e-mail door:\n1. De onderwerpregel aantrekkelijker te maken\n2. Paragrafen te verkorten tot maximaal 2-3 zinnen\n3. Een duidelijke call-to-action aan het einde toe te voegen" }}
/>

### Vermijd Dubbelzinnigheid

Woorden kunnen meerdere betekenissen hebben. Kies precieze taal.

<Compare 
  before={{ label: "Dubbelzinnig", content: "Geef me een korte samenvatting.\n(Hoe kort? 1 zin? 1 paragraaf? 1 pagina?)" }}
  after={{ label: "Precies", content: "Vat samen in exact 3 opsommingstekens, elk onder de 20 woorden." }}
/>

### Benoem het Vanzelfsprekende

Wat voor jou vanzelfsprekend is, is niet vanzelfsprekend voor het model. Verwoord aannames expliciet.

```
Je helpt me een sollicitatiebrief te schrijven.

Belangrijke context:
- Ik solliciteer naar een Software Engineer positie bij Google
- Ik heb 5 jaar ervaring in Python en gedistribueerde systemen
- De rol vereist leiderschapservaring (ik heb een team van 4 geleid)
- Ik wil mijn open-source bijdragen benadrukken
```

## Principe 2: Specificiteit Levert Kwaliteit

Vage input produceert vage output. Specifieke input produceert specifieke, bruikbare output.

### De Specificiteitsladder

<SpecificitySpectrum levels={[
  { level: "Niveau 1", text: "Schrijf over klimaatverandering" },
  { level: "Niveau 2", text: "Schrijf een artikel over de effecten van klimaatverandering" },
  { level: "Niveau 3", text: "Schrijf een artikel van 500 woorden over hoe klimaatverandering koraalriffen beïnvloedt" },
  { level: "Niveau 4", text: "Schrijf een artikel van 500 woorden waarin wordt uitgelegd hoe stijgende oceaantemperaturen koraalverbleking veroorzaken, gericht op middelbare scholieren, met 2 specifieke voorbeelden van het Great Barrier Reef, in een boeiende maar wetenschappelijk nauwkeurige toon" }
]} />

Elk niveau voegt specificiteit toe en verbetert de outputkwaliteit drastisch.

### Specificeer Deze Elementen

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Doelgroep</span>
    <span className="text-muted-foreground">Wie gaat dit lezen/gebruiken?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Lengte</span>
    <span className="text-muted-foreground">Hoe lang/kort moet het zijn?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Toon</span>
    <span className="text-muted-foreground">Formeel? Informeel? Technisch?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Formaat</span>
    <span className="text-muted-foreground">Proza? Lijst? Tabel? Code?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Omvang</span>
    <span className="text-muted-foreground">Wat moet worden opgenomen/uitgesloten?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Doel</span>
    <span className="text-muted-foreground">Wat moet dit bereiken?</span>
  </div>
</div>

## Principe 3: Context Is Koning

Modellen hebben geen geheugen, geen toegang tot je bestanden en geen kennis van je situatie. Alles wat relevant is, moet in de prompt staan.

### Geef Voldoende Context

<Compare 
  before={{ label: "Onvoldoende context", content: "Waarom werkt mijn functie niet?" }}
  after={{ label: "Voldoende context", content: "Ik heb een Python-functie die een lijst van dictionaries moet filteren op een specifieke sleutelwaarde. Het retourneert een lege lijst terwijl het 3 items zou moeten retourneren.\n\nFunctie:\ndef filter_items(items, key, value):\n    return [item for item in items if item[key] = value]\n\nAanroep: filter_items(items, 'status', 'active')\nVerwacht: 2 items, Gekregen: lege lijst" }}
/>

### De Context Checklist

<Callout type="tip" title="Voordat Je Indient">
Vraag jezelf af: Zou een slimme vreemde dit verzoek begrijpen? Zo niet, voeg meer context toe.
</Callout>

<Checklist 
  title="Context Checklist"
  items={[
    { text: "Weet het model waaraan ik werk?" },
    { text: "Kent het mijn doel?" },
    { text: "Heeft het alle benodigde informatie?" },
    { text: "Begrijpt het de beperkingen?" },
    { text: "Zou een slimme vreemde dit verzoek begrijpen?" }
  ]}
/>

## Principe 4: Begeleid, Vraag Niet Alleen

Vraag niet alleen om een antwoord—begeleid het model naar het antwoord dat je wilt.

### Gebruik Instructieve Framing

<Compare 
  before={{ label: "Alleen Vragen", content: "Wat zijn de voor- en nadelen van microservices?" }}
  after={{ label: "Begeleiden", content: "Noem 5 voordelen en 5 nadelen van microservices-architectuur.\n\nVoor elk punt:\n- Formuleer het punt duidelijk in één zin\n- Geef een korte uitleg (2-3 zinnen)\n- Geef een concreet voorbeeld\n\nOverweeg de perspectieven van: kleine startups, grote ondernemingen en teams die overstappen van monoliths." }}
/>

### Bied Redeneerstructuren

Voor complexe taken, begeleid het redeneerproces:

<TryIt 
  title="Voorbeeld van Redeneerstructuur"
  description="Deze prompt begeleidt de AI door een systematisch besluitvormingsproces."
  prompt={`Ik moet kiezen tussen PostgreSQL en MongoDB voor mijn e-commerce project.

Denk hier systematisch over na:
1. Noem eerst de typische vereisten voor een e-commerce database
2. Evalueer vervolgens elke database tegen elke vereiste
3. Overweeg afwegingen specifiek voor mijn use case
4. Doe een aanbeveling met duidelijke onderbouwing`}
/>

## Principe 5: Itereer en Verfijn

Prompt engineering is een iteratief proces. Je eerste prompt is zelden je beste.

### De Iteratiecyclus

```
1. Schrijf initiële prompt
2. Bekijk de output
3. Identificeer hiaten of problemen
4. Verfijn de prompt
5. Herhaal tot je tevreden bent
```

### Veelvoorkomende Verfijningen

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Te uitgebreid</span>
    <span className="text-muted-foreground">Voeg "Wees beknopt" of lengtelimieten toe</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Te vaag</span>
    <span className="text-muted-foreground">Voeg specifieke voorbeelden of beperkingen toe</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Verkeerd formaat</span>
    <span className="text-muted-foreground">Specificeer exacte outputstructuur</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Ontbrekende aspecten</span>
    <span className="text-muted-foreground">Voeg "Zorg ervoor dat je opneemt..." toe</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Verkeerde toon</span>
    <span className="text-muted-foreground">Specificeer doelgroep en stijl</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Onnauwkeurig</span>
    <span className="text-muted-foreground">Vraag om bronvermeldingen of stapsgewijze redenering</span>
  </div>
</div>

### Houd een Prompt Dagboek Bij

Documenteer wat werkt:
```
Taak: Code review
Versie 1: "Review deze code" → Te generiek
Versie 2: Specifieke reviewcriteria toegevoegd → Beter
Versie 3: Voorbeeld van goede review toegevoegd → Uitstekend
Definitief: [Sla succesvolle prompt op als template]
```

## Principe 6: Benut de Sterke Punten van het Model

Werk mee met hoe modellen zijn getraind, niet ertegen.

### Modellen Willen Behulpzaam Zijn

Formuleer verzoeken als dingen die een behulpzame assistent van nature zou doen:

<Compare 
  before={{ label: "Tegen de stroom in", content: "Ik weet dat je dit niet kunt, maar probeer..." }}
  after={{ label: "Met de stroom mee", content: "Help me te begrijpen...\nIk werk aan X en heb hulp nodig met...\nKun je me door ... leiden..." }}
/>

### Modellen Blinken Uit in Patronen

Als je consistente output nodig hebt, toon het patroon:

<TryIt 
  title="Voorbeeld van Patroon"
  description="Deze prompt toont de AI precies welk formaat je wilt voor boekaanbevelingen."
  prompt={`Beveel 3 sciencefictionboeken aan. Formatteer elke aanbeveling als:

📚 **[Titel]** door [Auteur]
*[Genre] | [Publicatiejaar]*
[Beschrijving van 2 zinnen]
Waarom je het geweldig zult vinden: [1 zin hook]

---`}
/>

### Modellen Kunnen Rollenspel

Gebruik persona's om verschillende "modi" van respons te activeren:

```
Als advocaat van de duivel, argumenteer tegen mijn voorstel...
Als ondersteunende mentor, help me te verbeteren...
Als sceptische investeerder, bekritiseer dit businessplan...
```

## Principe 7: Beheers de Outputstructuur

Gestructureerde outputs zijn nuttiger dan vrije tekst.

### Vraag Specifieke Formaten

```
Retourneer je analyse als:

SAMENVATTING: [1 zin]

BELANGRIJKSTE BEVINDINGEN:
• [Bevinding 1]
• [Bevinding 2]
• [Bevinding 3]

AANBEVELING: [1-2 zinnen]

ZEKERHEID: [Laag/Gemiddeld/Hoog] omdat [reden]
```

### Gebruik Scheidingstekens

Scheid secties van je prompt duidelijk:

```
### CONTEXT ###
[Je context hier]

### TAAK ###
[Je taak hier]

### FORMAAT ###
[Gewenst formaat hier]
```

### Vraag Machine-Leesbare Output

Voor programmatisch gebruik:

```
Retourneer alleen geldige JSON, geen uitleg:
{
  "decision": "approve" | "reject" | "review",
  "confidence": 0.0-1.0,
  "reasons": ["string array"]
}
```

## Principe 8: Verifieer en Valideer

Vertrouw nooit blindelings op modeloutputs, vooral niet voor belangrijke taken.

### Vraag om Redenering

```
Los dit probleem op en toon je werk stap voor stap.
Controleer na het oplossen je antwoord door [controlemethode].
```

### Vraag Meerdere Perspectieven

```
Geef me drie verschillende benaderingen om dit probleem op te lossen.
Leg voor elke benadering de afwegingen uit.
```

### Bouw Zelfcontrole In

```
Na het genereren van de code, review deze op:
- Syntaxfouten
- Randgevallen
- Beveiligingskwetsbaarheden
Noem eventuele gevonden problemen.
```

## Samenvatting: De Principes in Één Oogopslag

<PrinciplesSummary />

<Quiz 
  question="Welk principe suggereert dat je alle relevante achtergrondinformatie in je prompt moet opnemen?"
  options={[
    "Duidelijkheid Boven Slimheid",
    "Specificiteit Levert Kwaliteit",
    "Context Is Koning",
    "Itereer en Verfijn"
  ]}
  correctIndex={2}
  explanation="Context Is Koning benadrukt dat AI-modellen geen geheugen hebben tussen sessies en je gedachten niet kunnen lezen. Het opnemen van relevante achtergrond, beperkingen en doelen helpt het model je behoeften te begrijpen."
/>

## Oefening: Vul de Lege Plekken In

Test je begrip van de kernprincipes door deze prompt-template in te vullen:

<FillInTheBlank
  title="Pas de Principes Toe"
  description="Vul de lege plekken in om een goed gestructureerde prompt te maken — schrijf wat je maar wilt!"
  useAI={true}
  openEnded={true}
  template={`Je bent een {{role}} met expertise in {{expertise}}.

Context: Ik werk aan {{context}}.

Taak: {{task}}

Beperkingen:
- Houd je antwoord onder {{length}} woorden
- Focus alleen op {{focus}}

Formaat: Retourneer je antwoord als {{format}}.`}
  blanks={[
    { id: "role", correctAnswers: [], hint: "Welke professionele rol moet de AI aannemen?", context: "Een functietitel of professionele rol" },
    { id: "expertise", correctAnswers: [], hint: "Welke specifieke domeinkennis is nodig?", context: "Een vaardigheid of domein dat past bij de rol" },
    { id: "context", correctAnswers: [], hint: "Wat is het project of de situatie?", context: "Een project waar iemand met deze expertise aan zou werken" },
    { id: "task", correctAnswers: [], hint: "Welke specifieke actie moet de AI ondernemen?", context: "Een actie die past bij de rol en context" },
    { id: "length", correctAnswers: [], hint: "Hoe lang moet het antwoord zijn?", context: "Een getal (aantal woorden)" },
    { id: "focus", correctAnswers: [], hint: "Welk aspect moet prioriteit krijgen?", context: "Een kwaliteit of aspect relevant voor de taak" },
    { id: "format", correctAnswers: [], hint: "Hoe moet de output gestructureerd zijn?", context: "Een type outputformaat" }
  ]}
  explanation="Een goed gestructureerde prompt bevat: een duidelijke rol (Principe 1), voldoende context (Principe 3), specifieke taak (Principe 2), beperkingen (Principe 4) en outputformaat (Principe 5). De AI controleert of je keuzes intern consistent zijn."
/>

<InteractiveChecklist
  title="Principes Checklist"
  items={[
    { id: "clarity", label: "Duidelijkheid Boven Slimheid", description: "Is je prompt expliciet en ondubbelzinnig?" },
    { id: "specificity", label: "Specificiteit Levert Kwaliteit", description: "Heb je doelgroep, lengte, toon en formaat opgenomen?" },
    { id: "context", label: "Context Is Koning", description: "Bevat de prompt alle benodigde achtergrondinformatie?" },
    { id: "examples", label: "Voorbeelden Overtreffen Uitleg", description: "Heb je getoond wat je wilt, niet alleen beschreven?" },
    { id: "constraints", label: "Beperkingen Focussen Output", description: "Zijn er duidelijke grenzen aan omvang en formaat?" },
    { id: "iteration", label: "Itereer en Verfijn", description: "Ben je bereid te verbeteren op basis van resultaten?" },
    { id: "persona", label: "Persona Bepaalt Perspectief", description: "Weet de AI welke rol hij moet spelen?" },
    { id: "verify", label: "Verifieer en Valideer", description: "Heb je controles voor nauwkeurigheid ingebouwd?" }
  ]}
/>

Deze principes vormen de basis voor alles wat volgt. In Deel II passen we ze toe op specifieke technieken die de effectiviteit van prompts drastisch verbeteren.
