182 lines
6.1 KiB
Markdown
182 lines
6.1 KiB
Markdown
# Les 11 — Huiswerk
|
|
## Seed-script aanpassen + uitbreiden + reflecteren
|
|
|
|
**Vak:** AI-Assisted Development
|
|
**Opleiding:** NOVI Hogeschool Utrecht
|
|
**Deadline:** Voor de volgende les (Les 12 — Tool Calling)
|
|
**Inleveren:** GitHub repo + `AI-CHAT.md` in root
|
|
|
|
---
|
|
|
|
## Doel
|
|
|
|
Bouwt voort op de **lesopdracht** (eigen thema-app). Hier:
|
|
|
|
- **A.** Pas het seed-script aan voor jouw eigen thema (mag AI bij helpen)
|
|
- **B.** Voeg een **extra veld** toe dat een nieuwe vraag mogelijk maakt
|
|
- **C.** Schrijf een **reflectie** over wat werkt en wat niet
|
|
|
|
> Niet klaar met de lesopdracht? Eerst die afmaken — daarna komt dit. De huiswerkopdracht heeft de lesopdracht-app nodig om op te bouwen.
|
|
|
|
---
|
|
|
|
## Onderdeel A — Seed-script voor jouw thema (verplicht)
|
|
|
|
Het Polderfest seed-script is je voorbeeld. Pas het aan voor jouw eigen thema.
|
|
|
|
### Stappen
|
|
|
|
1. Open `seed-polderfest.ts` als referentie
|
|
2. Pas aan voor jouw thema:
|
|
- Domein-arrays (in plaats van adjectives + nouns → wat past bij jouw thema?)
|
|
- Veld-namen + types
|
|
- Bio/beschrijving-fragmenten (de samengestelde tekst-generatie)
|
|
3. Run je seed-script tegen je eigen Supabase
|
|
4. Verifieer 100+ records in Table Editor
|
|
|
|
### Pro tip: AI als seed-script writer
|
|
|
|
Open OpenCode (of Cursor) en typ:
|
|
|
|
> Hier is het Polderfest seed-script. Pas het aan voor [mijn thema].
|
|
> Mijn schema is: [paste schema]
|
|
> Genereer 200 records met realistisch-ogende variatie.
|
|
|
|
AI doet dit in 1-2 minuten. Daarna jij review — controle.
|
|
|
|
### Eisen
|
|
|
|
- [ ] Werkende seed-script in `scripts/seed-[thema].ts`
|
|
- [ ] Minimaal **200 records** in Supabase (was 100 voor lesopdracht — nu meer)
|
|
- [ ] Procedureel gegenereerd (niet handmatig — gebruik combinaties)
|
|
- [ ] In je README: korte uitleg hoe je 't gegenereerd hebt
|
|
|
|
---
|
|
|
|
## Onderdeel B — Extra veld + nieuwe vraag (verplicht)
|
|
|
|
Voeg minstens **1 extra veld** toe aan je schema. Iets dat een **nieuwe interessante vraag** mogelijk maakt.
|
|
|
|
### Voorbeelden
|
|
|
|
| Bestaand veld | Extra veld | Nieuwe vraag mogelijk |
|
|
|---------------|-----------|----------------------|
|
|
| Restaurant — `cuisine` | `dietary_options: string[]` | "Welke veganistische opties zijn er?" |
|
|
| Scriptie — `year` | `keywords: string[]` | "Vat scripties over AI samen" |
|
|
| Festival-band — `tier` | `collaborations: string[]` | "Welke acts hebben samengewerkt met X?" |
|
|
| Museumstuk — `period` | `acquisition_story: string` | "Welke kunstwerken zijn op een veiling gekocht?" |
|
|
|
|
### Stappen
|
|
|
|
1. Update je `schema.sql` met het extra veld
|
|
2. Run de SQL in Supabase (kun je `ALTER TABLE` gebruiken — niet alles opnieuw)
|
|
3. Update je seed-script om het nieuwe veld te vullen
|
|
4. Re-seed je tabel (eerst wis bestaande records: `delete from items;`)
|
|
5. Test in chat: stel een vraag die alleen kan dankzij het nieuwe veld
|
|
|
|
### Eisen
|
|
|
|
- [ ] Nieuw veld toegevoegd aan schema
|
|
- [ ] Seed-script gevuld voor nieuwe veld
|
|
- [ ] 1 vraag aan chat die specifiek dit veld gebruikt — werkt
|
|
- [ ] Screenshot van die vraag + AI antwoord in `AI-CHAT.md`
|
|
|
|
---
|
|
|
|
## Onderdeel C — `AI-CHAT.md` reflectie (verplicht)
|
|
|
|
Schrijf een markdown-bestand `AI-CHAT.md` in je repo-root met:
|
|
|
|
### Sectie 1: Mijn thema
|
|
- Wat is het thema?
|
|
- Waarom **kan een gewone LLM** deze vragen niet beantwoorden zonder jouw data?
|
|
- Welke velden heb je gekozen en waarom?
|
|
- Welk extra veld heb je toegevoegd (onderdeel B)?
|
|
|
|
### Sectie 2: 3 leuke vragen die werken
|
|
Voor elke vraag:
|
|
- De vraag zelf
|
|
- Het antwoord van de AI (screenshot of plak-tekst)
|
|
- Waarom dit een goede demo is
|
|
|
|
### Sectie 3: 1 vraag waar AI moeite mee had
|
|
- Welke vraag was het?
|
|
- Wat ging er mis (vaag antwoord, hallucinatie, foute filter)?
|
|
- Hoe heb je je **system prompt** aangepast om dit op te lossen?
|
|
- Werkt de vraag nu wel?
|
|
|
|
### Vorm
|
|
- Max 600 woorden in totaal
|
|
- Concrete voorbeelden (geen vage reflectie)
|
|
- Mag wat informeel — geen scriptie-toon nodig
|
|
|
|
---
|
|
|
|
## Bonus (optioneel, niet verplicht)
|
|
|
|
Iets extra's? Mag, geen extra punten maar wel leerzaam:
|
|
|
|
- **Deploy op Vercel** + production URL in je README
|
|
- **Loading skeleton** in de chat UI (terwijl AI antwoord aan het streamen is)
|
|
- **Vergelijking gpt-4o-mini vs gpt-4o** — beschrijf het verschil in antwoorden
|
|
- **System prompt variaties** — drie prompts proberen, screenshot per variant
|
|
- **Themed UI** — Tailwind aanpassen zodat 't past bij thema (kleuren, fonts)
|
|
|
|
---
|
|
|
|
## Inleveren
|
|
|
|
1. **GitHub repo URL** in Brightspace
|
|
2. **`AI-CHAT.md`** in repo-root
|
|
3. **Seed-script** in `scripts/seed-[thema].ts`
|
|
4. **Updated schema** in `schema.sql` (met extra veld)
|
|
5. **Screenshots** ingevoegd in `AI-CHAT.md`
|
|
|
|
Optioneel: Vercel deploy URL als bonus.
|
|
|
|
---
|
|
|
|
## Beoordeling
|
|
|
|
| Criterium | Punten |
|
|
|-----------|--------|
|
|
| A — Seed-script werkt + procedureel + 200+ records | 3 |
|
|
| B — Extra veld + werkende nieuwe vraag | 2 |
|
|
| C — `AI-CHAT.md` aanwezig met 3 secties | 3 |
|
|
| Chat werkt end-to-end (geen broken pages) | 1 |
|
|
| Reflectie sectie C is concreet (geen fluff) | 1 |
|
|
| **Totaal** | **10** |
|
|
|
|
Voldoende = 6+. Bonus telt mee bij twijfelgevallen.
|
|
|
|
---
|
|
|
|
## Tijd-indicatie
|
|
|
|
| Onderdeel | Tijd |
|
|
|-----------|------|
|
|
| A — Seed-script aanpassen (met AI hulp) | 30-45 min |
|
|
| B — Schema uitbreiden + nieuwe veld + vraag testen | 30 min |
|
|
| C — AI-CHAT.md schrijven met screenshots | 30-45 min |
|
|
| **Totaal** | **~1,5 - 2 uur** |
|
|
|
|
---
|
|
|
|
## Veelvoorkomende valkuilen
|
|
|
|
- **Thema dat LLM al kent** — Yelp-clone, Spotify-data. Werkt niet voor demo van data-power.
|
|
- **Te weinig records** — 200+ vereist, anders is variatie te klein
|
|
- **Vage system prompt** — "Help bij vragen" werkt slecht. Wees specifiek.
|
|
- **Geen reflectie op slechte vragen** — sectie C wordt vaak vergeten, terwijl daar je leercurve zit
|
|
- **AI verzint feiten** — system prompt versterken: "Verzin NIETS. Gebruik alleen onze data."
|
|
|
|
---
|
|
|
|
## Tips
|
|
|
|
- **Schrijf je AI-CHAT.md gaandeweg** — niet aan einde. Sla goede prompts/screenshots op zodra ze werken.
|
|
- **Maak de prompt-iteratie expliciet** — sectie C wordt mooier als je echt 3-4 prompt-versies probeert.
|
|
- **Niet bang voor AI in je workflow** — laat OpenCode het seed-script schrijven. Tijdwinst is enorm.
|
|
|
|
Succes! Volgende les pakken we Tool Calling — dan kun je dezelfde demo schaalbaar maken naar 50.000 records.
|