Chain of Thought (CoT) prompting is een techniek die de AI-prestaties bij complexe redeneertaken drastisch verbetert door het model te vragen zijn werk stap voor stap te tonen.

<Callout type="info" title="Toon Je Werk">
Net zoals een wiskundeleraar leerlingen vraagt hun werk te tonen, vraagt CoT prompting de AI om zijn redenering zichtbaar te maken.
</Callout>

## Het Probleem Dat CoT Oplost

AI-modellen kunnen moeite hebben met redeneren in meerdere stappen wanneer ze gevraagd worden direct naar een antwoord te springen.

<Compare 
  before={{ label: "Direct Antwoord (Vaak Fout)", content: "Vraag: Een winkel verkoopt appels voor €2 per stuk. Als je 5 of meer koopt, krijg je 20% korting. Hoeveel kosten 7 appels?\n\nAntwoord: €14 ❌" }}
  after={{ label: "Chain of Thought (Correct)", content: "Vraag: Een winkel verkoopt appels voor €2 per stuk. Als je 5 of meer koopt, krijg je 20% korting. Hoeveel kosten 7 appels?\n\nLaten we dit stap voor stap doorwerken:\n1. Normale prijs per appel: €2\n2. Aantal appels: 7\n3. Aangezien 7 ≥ 5, is de korting van toepassing\n4. Normaal totaal: 7 × €2 = €14\n5. Korting: 20% van €14 = €2,80\n6. Eindprijs: €14 - €2,80 = €11,20\n\nAntwoord: €11,20 ✓" }}
/>

## Basis CoT Prompts

### Eenvoudige Triggerzinnen

Voeg een van deze toe aan je prompts:

<div className="my-4 grid gap-2">
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Laten we stap voor stap denken."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Denk hier zorgvuldig over na."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Werk dit probleem methodisch door."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Toon je redenering bij elke stap."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Leg je denkproces uit."</div>
</div>

### Expliciete Stapverzoek

<TryIt 
  title="Probeer Chain of Thought"
  description="Vraag de AI om een probleem stap voor stap op te lossen."
  prompt={`Los dit probleem op:

Een autoverhuur kost €40 per dag plus €0,25 per kilometer. Als iemand een auto huurt voor 3 dagen en 200 kilometer rijdt, wat zijn de totale kosten?

Voordat je je definitieve antwoord geeft:
1. Identificeer welke informatie gegeven is
2. Bepaal wat we moeten vinden
3. Plan je aanpak
4. Voer elke stap uit en toon je werk
5. Verifieer je antwoord`}
/>

## Zero-Shot vs Few-Shot CoT

Er zijn twee hoofdbenaderingen voor Chain of Thought prompting, elk met verschillende afwegingen tussen eenvoud en controle.

### Zero-Shot CoT

De eenvoudigste aanpak—voeg gewoon een triggerzin toe en laat het model uitzoeken hoe te redeneren. Geen voorbeelden nodig. Dit werkt verrassend goed voor veel problemen, hoewel je minder controle hebt over het redeneringsformaat.

<TryIt 
  compact
  title="Zero-Shot CoT"
  prompt={`Als Jan 3 appels heeft en de helft aan Marie geeft, en daarna 4 meer koopt, hoeveel heeft hij er dan?

Laten we stap voor stap denken.`}
/>

**Voorbeelduitvoer:**
```
Laten we stap voor stap denken.
- Jan begint met 3 appels
- De helft van 3 is 1,5, maar we kunnen appels niet splitsen
- Als we naar beneden afronden: Jan geeft 1 appel, houdt 2 over
- Na het kopen van 4 meer: 2 + 4 = 6 appels

Antwoord: 6 appels
```

### Few-Shot CoT

Voor consistentere resultaten, laat je het model precies zien hoe je wilt dat het redeneert door uitgewerkte voorbeelden te geven. Dit geeft je controle over de redeneerstijl, het formaat en het detailniveau. Het model zal je gedemonstreerde patroon nabootsen.

<TryIt 
  compact
  title="Few-Shot CoT"
  prompt={`Voorbeeld 1:
V: Een bakker heeft 24 cupcakes. Ze verdeelt ze gelijk over 4 dozen. Daarna eet ze 2 cupcakes uit één doos. Hoeveel cupcakes zijn er in totaal over?

A: Laten we dit doorwerken:
- Totaal aantal cupcakes: 24
- Cupcakes per doos: 24 ÷ 4 = 6
- Na het eten van 2 uit één doos: 6 - 2 = 4 cupcakes in die doos
- Totaal over: (3 dozen × 6) + 4 = 18 + 4 = 22 cupcakes

Voorbeeld 2:
V: Een trein rijdt 2 uur met 60 km/u, daarna 3 uur met 40 km/u. Wat is de gemiddelde snelheid?

A: Laten we dit doorwerken:
- Afstand bij 60 km/u: 60 × 2 = 120 kilometer
- Afstand bij 40 km/u: 40 × 3 = 120 kilometer
- Totale afstand: 120 + 120 = 240 kilometer
- Totale tijd: 2 + 3 = 5 uur
- Gemiddelde snelheid: 240 ÷ 5 = 48 km/u

Los nu op:
V: Een winkel verkoopt schriften voor €3 per stuk. Als je 10 of meer koopt, krijg je 25% korting. Hoeveel kosten 12 schriften?`}
/>

**Voorbeelduitvoer:**
```
A: Laten we dit doorwerken:
- Normale prijs: €3, Aantal: 12
- Aangezien 12 ≥ 10, is de 25% korting van toepassing
- Normaal totaal: 12 × €3 = €36
- Korting: 25% van €36 = €9
- Eindprijs: €36 - €9 = €27
```

## Gestructureerde CoT Formaten

Voor consistente, reproduceerbare redenering, gebruik gestructureerde formaten met benoemde stappen. Deze frameworks zorgen ervoor dat het model geen belangrijke fasen overslaat en maken uitvoer gemakkelijker te ontleden en verifiëren.

### Het BREAK Formaat

Een makkelijk te onthouden acroniem dat het model door een volledige probleemoplossingscyclus leidt, van begrip tot verificatie.

<BREAKFramework />

### Het Redeneringssjabloon

Een meer formele structuur die invoer, doelen en uitvoering scheidt. Uitstekend voor technische problemen waar je duidelijke documentatie van het oplossingsproces nodig hebt.

<TryIt 
  compact
  title="Redeneringssjabloon"
  prompt={`Gebruik dit sjabloon om het probleem op te lossen:

GEGEVEN: [Som bekende informatie op]
DOEL: [Wat we moeten vinden]
AANPAK: [Strategie die we gaan gebruiken]
STAPPEN:
  1. [Eerste stap met redenering]
  2. [Tweede stap met redenering]
  ...
VERIFICATIE: [Controleer het antwoord]
ANTWOORD: [Definitief antwoord]

Probleem: Een auto verbruikt 8 liter brandstof per 100 km. Als de tank 45 liter bevat en brandstof €1,50 per liter kost, hoeveel kost het om 300 km te rijden?`}
/>

**Voorbeelduitvoer:**
```
GEGEVEN: 8L/100km, tank 45L, €1,50/L, rijd 300km
DOEL: Bereken brandstofkosten
AANPAK: Benodigde brandstof × prijs per liter
STAPPEN:
1. Brandstof = (300 ÷ 100) × 8 = 24 liter
2. Kosten = 24 × €1,50 = €36
VERIFICATIE: 24L < 45L tank ✓
ANTWOORD: €36
```

## CoT voor Verschillende Probleemtypes

Verschillende probleemtypes profiteren van verschillende CoT-benaderingen. Hier zijn patronen geoptimaliseerd voor veelvoorkomende scenario's.

### Wiskundig Redeneren

Wiskundeproblemen profiteren het meest van CoT omdat elke stap voortbouwt op de vorige. Fouten stapelen zich op, dus werk tonen helpt fouten vroeg op te vangen. Het model moet elke berekening duidelijk labelen.

<TryIt 
  compact
  title="Wiskunde met CoT"
  prompt={`De omzet van een bedrijf was €1,2M in Q1. Het groeide 15% in Q2, daalde 10% in Q3, en groeide 25% in Q4. Wat was de totale jaaromzet?

Denk door elk kwartaal en toon je berekeningen duidelijk.`}
/>

**Voorbeelduitvoer:**
```
Q1: €1.200.000 (gegeven)
Q2: €1.200.000 × 1,15 = €1.380.000
Q3: €1.380.000 × 0,90 = €1.242.000
Q4: €1.242.000 × 1,25 = €1.552.500

Totaal: €5.374.500
```

### Logisch Redeneren

Logische puzzels vereisen systematische eliminatie en hypothesetesten. CoT helpt het model beperkingen bij te houden, mogelijkheden te testen en te verifiëren dat aan alle voorwaarden is voldaan. De sleutel is methodische verkenning in plaats van gokken.

<TryIt 
  compact
  title="Logische Puzzel"
  prompt={`Drie vrienden—Alice, Bob en Carol—hebben elk verschillende huisdieren (kat, hond, vis) en verschillende banen (leraar, ingenieur, dokter).

Aanwijzingen:
1. Alice heeft geen kat
2. De ingenieur heeft een hond
3. Bob is leraar
4. Carol heeft geen vis

Wie heeft welk huisdier en welke baan? Redeneer hier systematisch doorheen, test hypotheses en verifieer tegen alle aanwijzingen.`}
/>

**Voorbeelduitvoer:**
```
Uit aanwijzing 3: Bob = leraar
→ Alice en Carol zijn ingenieur/dokter

Als Carol = ingenieur:
- Carol heeft hond (aanwijzing 2)
- Alice = dokter, heeft vis (aanwijzing 1)
- Bob heeft kat

Verificatie: Alle 4 aanwijzingen voldaan ✓
Antwoord: Alice (dokter, vis), Bob (leraar, kat), Carol (ingenieur, hond)
```

### Code Debuggen

Debuggen profiteert van CoT omdat het het model dwingt de uitvoering te traceren in plaats van te gokken naar bugs. Door de code met concrete waarden te doorlopen, wordt het daadwerkelijke gedrag zichtbaar en worden afwijkingen van verwacht gedrag blootgelegd.

<TryIt 
  compact
  title="Debuggen met CoT"
  prompt={`Deze functie zou de som van even getallen in een lijst moeten retourneren, maar geeft verkeerde waarden terug. Debug stap voor stap door te traceren met de invoer [2, 3, 4, 6]:

def sum_evens(numbers):
    total = 0
    for n in numbers:
        if n % 2 == 0:
            total += 1
    return total

Traceer elke stap, vind de bug en geef de oplossing.`}
/>

**Voorbeelduitvoer:**
```
Traceer [2, 3, 4, 6]:
n=2: total += 1 → 1 (wacht, voegt 1 toe niet n!)
n=3: overslaan (oneven)
n=4: total = 2
n=6: total = 3

BUG: "total += 1" zou "total += n" moeten zijn
Verwacht: 12, Kreeg: 3
Oplossing: Verander naar "total += n"
```

## Zelfconsistentie met CoT

Voor kritieke problemen, vertrouw niet op één enkel redeneerpad. Genereer meerdere onafhankelijke oplossingen en vergelijk resultaten. Als verschillende benaderingen convergeren naar hetzelfde antwoord, is het vertrouwen hoog. Onenigheid signaleert de noodzaak voor zorgvuldige beoordeling.

<TryIt 
  compact
  title="Zelfconsistentie"
  prompt={`Los dit probleem op 3 verschillende manieren op, en geef dan je definitieve antwoord gebaseerd op welke oplossing het meest correct lijkt:

Probleem: Een boer heeft kippen en koeien. Samen hebben ze 30 koppen en 74 poten. Hoeveel kippen en hoeveel koeien heeft de boer?

Aanpak 1: Algebra
Aanpak 2: Gokken en controleren
Aanpak 3: Logisch redeneren

Vergelijk dan en geef je definitieve antwoord.`}
/>

**Voorbeelduitvoer:**
```
Aanpak 1 (Algebra): k + ko = 30, 2k + 4ko = 74 → k=23, ko=7
Aanpak 2 (Gokken): Probeer 23/7 → 46 + 28 = 74 ✓
Aanpak 3 (Logica): 30 kippen = 60 poten, 14 meer nodig → 7 koeien

Alle komen overeen: 23 kippen, 7 koeien
```

## CoT voor Besluitvorming

Beslissingen omvatten het afwegen van trade-offs over meerdere dimensies. CoT zorgt ervoor dat alle relevante factoren systematisch worden overwogen in plaats van naar conclusies te springen. Deze gestructureerde aanpak documenteert ook de redenering voor toekomstige referentie.

<TryIt 
  compact
  title="Beslissingsanalyse"
  prompt={`Moeten we microservices-architectuur adopteren voor onze applicatie?

Context:
- Monolithische applicatie met 50.000 regels code
- Team van 5 ontwikkelaars
- 100 dagelijks actieve gebruikers
- Plannen voor 10x groei in 2 jaar

Denk hier systematisch over na:
1. Som de huidige staat op
2. Identificeer factoren om te overwegen (teamgrootte, schaal, snelheid, toekomstige groei)
3. Weeg elke factor af als voor/tegen
4. Geef een aanbeveling met redenering`}
/>

**Voorbeelduitvoer:**
```
FACTOREN:
- Teamgrootte (5): Te klein voor microservices ❌
- Schaal (100 DAU): Geen schaalbehoefte ❌  
- Snelheid: Monoliet = snellere iteratie ❌
- Toekomstige groei: Onzekere tijdlijn ⚠️

AFWEGING: 3 sterk tegen, 1 zwak voor

AANBEVELING: Blijf bij monoliet, gebruik duidelijke 
modulegrenzen om toekomstige overgang te vergemakkelijken.
```

## Wanneer CoT Gebruiken

<div className="my-6 grid md:grid-cols-2 gap-4">
  <div className="border rounded-lg bg-green-50/50 dark:bg-green-950/20 border-green-200 dark:border-green-900">
    <p className="text-sm font-semibold text-green-700 dark:text-green-400 px-4 pt-3 flex items-center gap-2 m-0!"><IconCheck className="h-4 w-4" /> Gebruik CoT Voor</p>
    <div className="text-sm p-4 pt-2 space-y-1">
      <p className="m-0!">**Wiskundeproblemen** — Vermindert rekenfouten</p>
      <p className="m-0!">**Logische puzzels** — Voorkomt overgeslagen stappen</p>
      <p className="m-0!">**Complexe analyse** — Organiseert denken</p>
      <p className="m-0!">**Code debuggen** — Traceert uitvoering</p>
      <p className="m-0!">**Besluitvorming** — Weegt trade-offs af</p>
    </div>
  </div>
  <div className="border rounded-lg bg-red-50/50 dark:bg-red-950/20 border-red-200 dark:border-red-900">
    <p className="text-sm font-semibold text-red-700 dark:text-red-400 px-4 pt-3 flex items-center gap-2 m-0!"><IconX className="h-4 w-4" /> Sla CoT Over Voor</p>
    <div className="text-sm p-4 pt-2 space-y-1">
      <p className="m-0!">**Eenvoudige V&A** — Onnodige overhead</p>
      <p className="m-0!">**Creatief schrijven** — Kan creativiteit beperken</p>
      <p className="m-0!">**Feitelijke opzoekingen** — Geen redenering nodig</p>
      <p className="m-0!">**Vertaling** — Directe taak</p>
      <p className="m-0!">**Samenvatten** — Meestal eenvoudig</p>
    </div>
  </div>
</div>

## CoT Beperkingen

Hoewel krachtig, is Chain of Thought geen wondermiddel. Het begrijpen van de beperkingen helpt je het op de juiste manier toe te passen.

1. **Verhoogd tokengebruik** — Meer uitvoer betekent hogere kosten
2. **Niet altijd nodig** — Eenvoudige taken profiteren er niet van
3. **Kan wijdlopig zijn** — Mogelijk moet je om beknoptheid vragen
4. **Redenering kan gebrekkig zijn** — CoT garandeert geen correctheid

## Samenvatting

<Callout type="tip" title="Belangrijkste Punten">
CoT verbetert complex redeneren drastisch door impliciete stappen expliciet te maken. Gebruik het voor wiskunde, logica, analyse en debuggen. Trade-off: betere nauwkeurigheid voor meer tokens.
</Callout>

<Quiz 
  question="Wanneer zou je Chain of Thought prompting NIET moeten gebruiken?"
  options={[
    "Wiskundeproblemen die meerdere stappen vereisen",
    "Eenvoudige feitelijke vragen zoals 'Wat is de hoofdstad van Frankrijk?'",
    "Code debuggen met complexe logica",
    "Een zakelijke beslissing analyseren"
  ]}
  correctIndex={1}
  explanation="Chain of Thought voegt onnodige overhead toe voor eenvoudige V&A. Het is het beste gereserveerd voor complexe redeneertaken zoals wiskunde, logische puzzels, code debuggen en analyse waar werk tonen de nauwkeurigheid verbetert."
/>

In het volgende hoofdstuk verkennen we few-shot learning—het model leren door middel van voorbeelden.
