Prompt Engineering: Van Basis tot Productie
Een diepgaande gids voor prompt engineering die je van beginner naar expert brengt. Met concrete templates, technieken en productie-patronen.
TTom Builder
23 dagen geledenPrompt EngineeringAITutorialProductieLLM
# Prompt Engineering: Van Basis tot Productie
## Waarom prompt engineering cruciaal is
Prompt engineering is het verschil tussen een AI die "oké" presteert en een die excellent is. In productie-systemen bepaalt de prompt 60-70% van de output-kwaliteit. Het is geen dark art — het is een vaardigheid die je kunt leren en systematisch kunt verbeteren.
## De fundamenten
### 1. Wees specifiek
Slecht: "Vat dit document samen."
Goed: "Vat dit document samen in maximaal 3 bullet points. Focus op de financiele impact en de tijdlijn. Schrijf in het Nederlands, formele toon."
### 2. Geef context
Slecht: "Schrijf een email."
Goed: "Je bent een customer success manager bij een SaaS-bedrijf. Schrijf een email naar een klant die zijn abonnement wil opzeggen. De klant is 2 jaar klant en heeft onlangs een support ticket gehad dat slecht afgehandeld werd. Doel: de klant behouden met een concreet aanbod."
### 3. Geef voorbeelden (few-shot)
```
Classificeer de volgende klantvragen in categorieen.
Voorbeelden:
- "Hoe reset ik mijn wachtwoord?" → Account
- "De factuur klopt niet" → Billing
- "De app crasht op mijn iPhone" → Technical
Classificeer:
- "Ik kan niet inloggen sinds de update"
```
### 4. Definieer het output format
```
Analyseer het volgende klantgesprek en geef output in dit JSON format:
{
"sentiment": "positief" | "neutraal" | "negatief",
"categorie": string,
"urgentie": 1-5,
"samenvatting": string (max 50 woorden),
"actie_nodig": boolean
}
```
## Geavanceerde technieken
### Chain of Thought (CoT)
Vraag het model om stap voor stap te redeneren:
```
Analyseer of deze lead gekwalificeerd is voor ons product. Denk stap voor stap:
1. Heeft het bedrijf de juiste omvang? (50-500 medewerkers)
2. Zit het in een relevante industrie? (SaaS, e-commerce, finance)
3. Is er budget-indicatie? (>EUR 10.000)
4. Is er een duidelijke pijnpunt dat ons product oplost?
Geef per stap je analyse en eindig met een conclusie: Gekwalificeerd / Niet gekwalificeerd / Meer info nodig.
```
### System prompts voor consistentie
```
SYSTEM: Je bent een Nederlandse klantenservice medewerker voor TechFlow B.V., een SaaS-bedrijf voor projectmanagement.
Regels:
- Spreek de klant aan met "u"
- Gebruik een professionele maar warme toon
- Als je het antwoord niet weet, zeg: "Ik ga dit voor u uitzoeken. Mag ik u binnen 24 uur terugkoppelen?"
- Verwijs NOOIT naar concurrenten
- Bij technische problemen: vraag altijd om browser en OS
- Bij factuurvragen: verwijs naar finance@techflow.nl
```
### Guardrails en constraints
```
BELANGRIJK - Je mag NIET:
- Medisch advies geven of diagnoses stellen
- Juridisch advies geven
- Persoonlijke data van andere klanten delen
- Beloftes doen over productontwikkeling
- Korting aanbieden zonder goedkeuring
Als een gebruiker hierom vraagt, antwoord:
"Ik begrijp uw vraag, maar dit valt buiten wat ik voor u kan doen. Ik verbind u graag door met een collega die u verder kan helpen."
```
## Productie-patronen
### Patroon 1: Structured Output
Forceer gestructureerde output voor betrouwbare downstream processing:
```python
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "Je geeft altijd output als JSON."},
{"role": "user", "content": "Analyseer: 'De app werkt niet meer sinds gisteren'"}
]
)
```
### Patroon 2: Prompt templating
Gebruik templates voor herbruikbare prompts:
```python
CLASSIFICATION_PROMPT = """
Classificeer het volgende support ticket.
Ticket: {ticket_text}
Geef output als JSON:
{{
"category": "billing" | "technical" | "account" | "feature_request" | "other",
"priority": "low" | "medium" | "high" | "critical",
"sentiment": "positive" | "neutral" | "negative"
}}
"""
def classify_ticket(ticket_text: str) -> dict:
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={"type": "json_object"},
messages=[
{"role": "user", "content": CLASSIFICATION_PROMPT.format(ticket_text=ticket_text)}
]
)
return json.loads(response.choices[0].message.content)
```
### Patroon 3: Prompt versioning
Beheer prompts als code:
```python
# prompts/v2/ticket_classification.txt
VERSIE: 2.1
DATUM: 2026-02-01
WIJZIGING: "critical" priority toegevoegd
Classificeer het volgende support ticket...
```
Track welke versie in productie draait en A/B test nieuwe versies.
## Evaluatie
### Automatische evaluatie
```python
test_cases = [
{"input": "Ik kan niet inloggen", "expected_category": "account"},
{"input": "Factuur is dubbel", "expected_category": "billing"},
{"input": "Feature X werkt traag", "expected_category": "technical"},
]
correct = 0
for case in test_cases:
result = classify_ticket(case["input"])
if result["category"] == case["expected_category"]:
correct += 1
accuracy = correct / len(test_cases)
print(f"Accuracy: {accuracy:.1%}")
```
### Wanneer je prompt niet werkt
1. Voeg meer voorbeelden toe (few-shot)
2. Wees explicieter over wat je NIET wilt
3. Splits complexe taken op in meerdere prompts
4. Probeer een ander model (GPT-4o vs Claude)
5. Gebruik Chain of Thought voor complexe redenering
## Conclusie
Prompt engineering is geen magie. Het is een combinatie van duidelijk communiceren, systematisch testen en iteratief verbeteren. Begin met de fundamenten, experimenteer met geavanceerde technieken, en meet altijd de resultaten.