58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
# Polderfest demo — Les 12 startpunt
|
|
|
|
Kopie van de werkende Les 11 demo. **Startpunt** voor Les 12 — Tool Calling.
|
|
|
|
## Wat zit hier al in?
|
|
|
|
- Next.js 16 + TypeScript + Tailwind
|
|
- Supabase client (`lib/supabase.ts` voor client, `lib/supabase-admin.ts` voor service-role)
|
|
- Chat-route met **context-all** aanpak (`app/api/chat/route.ts`):
|
|
- Haalt alle 500 bands op
|
|
- Stuurt mee als tekst in system prompt
|
|
- `streamText` → `toUIMessageStreamResponse()`
|
|
- Chat-pagina met `useChat` van `@ai-sdk/react` (`app/page.tsx`)
|
|
- Seed script (`scripts/seed-polderfest.ts`)
|
|
- `AGENTS.md` met project context
|
|
|
|
## Wat doen we in Les 12?
|
|
|
|
We refactoren `app/api/chat/route.ts` van **context-all** naar **Tool Calling**:
|
|
|
|
- Weg met de hele context-string
|
|
- Tools definiëren — `searchBands`, `getStats`, `getBandByName`, ...
|
|
- `stopWhen: stepCountIs(5)` voor multi-step
|
|
- System prompt aanpassen: "gebruik tools, verzin niet"
|
|
- UI uitbreiden om tool-invocations te tonen
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
# 1. Dependencies installeren
|
|
npm install
|
|
|
|
# 2. .env.local maken
|
|
cp .env.local.example .env.local
|
|
# Vul je eigen Supabase + OpenAI keys in
|
|
|
|
# 3. Supabase schema (als nog niet gedaan)
|
|
# Open Supabase → SQL Editor → run schema.sql uit Les 11
|
|
|
|
# 4. Seed (als nog niet gedaan)
|
|
npx tsx scripts/seed-polderfest.ts
|
|
|
|
# 5. Dev server
|
|
npm run dev
|
|
```
|
|
|
|
Open `http://localhost:3000` voor de chat.
|
|
|
|
## Stack-versies in dit project
|
|
|
|
- `ai` v6 — gebruikt nieuwere API:
|
|
- `UIMessage` type
|
|
- `convertToModelMessages()`
|
|
- `toUIMessageStreamResponse()`
|
|
- `@ai-sdk/react` v3 — `useChat` returnt `{ messages, sendMessage, status }`
|
|
- `@ai-sdk/openai` v3
|
|
- Tool API (v6): gebruikt `inputSchema` (was `parameters`) en `stopWhen` (was `maxSteps`)
|