79 lines
2.5 KiB
Markdown
79 lines
2.5 KiB
Markdown
# Les 13 — Lesopdracht
|
||
## Bouw je eigen Polderfest-agent
|
||
|
||
**Vak:** AI-Assisted Development
|
||
**Opleiding:** NOVI Hogeschool Utrecht
|
||
**Werkvorm:** in-class, na de pauze (±1,5 uur)
|
||
**Status:** klaar = productie-URL in de chat delen
|
||
|
||
---
|
||
|
||
## Doel
|
||
|
||
Aan het einde van deze opdracht heb je een werkende Polderfest-agent
|
||
met zes nieuwe features bovenop Les 12: getWeather, addToFavorites,
|
||
finishPlan, hasToolCall, prepareStep, en een UI die tool-calls toont.
|
||
|
||
Live op je eigen Vercel-deployment.
|
||
|
||
---
|
||
|
||
## Wat je nodig hebt (zit allemaal al klaar uit Les 11/12)
|
||
|
||
- Je Polderfest-app uit Les 12, of `polderfest-original.zip` uit lesbestanden
|
||
- Supabase project met `bands` en `user_favorites` tabel
|
||
- OpenAI API key in `.env.local`
|
||
- Vercel account
|
||
- `Les13-Stap-voor-stap.md` als gids
|
||
|
||
---
|
||
|
||
## Stappenplan
|
||
|
||
Werk in jouw eigen tempo. Hierbij de hoofdlijn — voor de exacte code
|
||
per stap zie `Les13-Stap-voor-stap.md` en `polderfest-with-agent.zip`.
|
||
|
||
1. **Project klaarzetten** — Polderfest-original uitpakken of eigen versie gebruiken, `npm install && npm run dev`
|
||
2. **Nieuwe route** — `app/api/agent/route.ts` aanmaken (kopie van chat-route)
|
||
3. **`addToFavorites`** — write-tool toevoegen (insert in `user_favorites`)
|
||
4. **`getWeather`** — externe API (Open-Meteo, geen key)
|
||
5. **`finishPlan`** — Zod-schema structured-output tool
|
||
6. **`hasToolCall`** — extra stop-conditie naast `stepCountIs(8)`
|
||
7. **`prepareStep`** — model switching (krachtig → goedkoop)
|
||
8. **UI** — `app/agent/page.tsx` met tool-call-rendering
|
||
9. **Testen** — drie demo-prompts in de browser
|
||
10. **Deploy** — Vercel + env vars
|
||
|
||
---
|
||
|
||
## Op te leveren
|
||
|
||
Tijdens de les in de chat plaatsen:
|
||
|
||
- Productie-URL van je `/agent` pagina
|
||
- Screenshot van je Supabase Table Editor met minimaal één nieuwe
|
||
rij in `user_favorites` (gemaakt door de agent)
|
||
|
||
---
|
||
|
||
## Test-prompts (gebruik deze om te valideren)
|
||
|
||
| Prompt | Verwachte tools |
|
||
|--------|-----------------|
|
||
| "Plan een avond met indie en techno voor zaterdag." | searchBands × 2 + getDaySchedule + finishPlan |
|
||
| "Wat speelt er op zondag en hoe is het weer?" | getDaySchedule + getWeather + finishPlan |
|
||
| "Welke band moet ik NIET missen op vrijdag? Zet hem in mijn favorieten." | searchBands + addToFavorites + finishPlan |
|
||
|
||
Werkt prompt 3 niet (geen rij in `user_favorites`)? Check of de service-role-key
|
||
in `.env.local` staat en of de tool de `band_id` correct ophaalt.
|
||
|
||
---
|
||
|
||
## Vastgelopen?
|
||
|
||
- Open `polderfest-with-agent.zip` als spiekbriefje
|
||
- Zoek in de code op `// STEP N` voor de exacte plek per feature
|
||
- Vraag in de chat — ik loop rond
|
||
|
||
Veel succes!
|