LiveKit · Claude AI · BPM Pizza Sim API v2.0 — Erweitere ein Voice-Agent-Skelett zu einem voll funktionsfähigen KI-Pizzabestellassistenten. Erwartete Dauer: ca. 45–60 Minuten.
In dieser Aufgabe baust du einen sprachgesteuerten Bestellassistenten für Roberto's Pizzeria. Der Agent wird:
Der Agent muss zwei typische Gesprächsverläufe beherrschen:
| Rolle | Dialog |
|---|---|
| Agent | „Willkommen bei Roberto's Pizzeria! Was darf es sein?“ |
| Kunde | „Was habt ihr denn?“ |
| Agent | Ruft getMenu auf, liest die Karte vor, empfiehlt eine Pizza + eine Pasta |
| Rolle | Dialog |
|---|---|
| Kunde | „Ich hätte gern zwei Pizza Regina und eine Pasta Aglio e Olio.“ |
| Agent | „Gern! Auf welchen Namen und an welche Adresse?“ |
| Kunde | „Max, Hauptstraße 42.“ |
| Agent | Ruft placeOrder auf → bestätigt Bestell-ID + Wartezeit |
Die Lieferadresse (street_one) wird direkt im Bestellrequest mitgeschickt. Falls die Adresse nicht bedient werden kann, gibt die API einen Validierungsfehler zurück — der Agent soll diesen verständlich kommunizieren.
Falls noch nicht geklont:
# Voice Agent (Node.js LiveKit agent) git clone https://github.com/BPMspaceUG/voice-agent-exercise.git voice-agent # Voice Web (Next.js browser UI) git clone https://github.com/BPMspaceUG/voice-web-exercise.git voice-web
Falls bereits geklont, auf neuesten Stand bringen:
git -C voice-agent pull git -C voice-web pull
Die AGENT_NAME Variable in voice-agent muss mit der AGENT_NAME Variable in voice-web übereinstimmen. Wähle eine eindeutige Zahl, um Kollisionen mit anderen Teams zu vermeiden!
Erstelle beide .env.local Dateien. Klicke „Secrets anzeigen“ um die gesperrten Werte einzublenden.
voice-agent/.env.local
AGENT_NAME=voice-agent-XXX # pick a unique random number LIVEKIT_URL=wss://voiceagent-rzkx4lrv.livekit.cloud LIVEKIT_API_KEY=•••••••• LIVEKIT_API_SECRET=•••••••• PIZZERIA_ID=# find your team's ID — see below PIZZASIM_API_KEY=# same as PIZZERIA_ID
voice-web/.env.local
AGENT_NAME=voice-agent-XXX # pick a unique random number LIVEKIT_URL=•••••••• LIVEKIT_API_KEY=•••••••• LIVEKIT_API_SECRET=•••••••• AUTH_API_KEY=•••••••• NEXT_PUBLIC_AUTH_API_KEY=•••••••• LOGIN_USERNAME=•••••••• LOGIN_PASSWORD=•••••••• AUTH_SECRET=••••••••
Pizzeria-ID deines Teams nachschlagen:
# Find your Pizzeria ID curl -X 'GET' 'https://www.aipizzasim.com/pizzerias' \ -H 'accept: application/json'
Oder nutze die Swagger UI zum Nachschlagen.
Öffne zwei Terminals:
# Terminal 1 — Voice Agent cd voice-agent pnpm install pnpm download-files pnpm dev
# Terminal 2 — Voice Web cd voice-web pnpm install pnpm dev
| Base URL | https://www.aipizzasim.com |
| Swagger Docs | https://www.aipizzasim.com/swagger.html |
| Authentifizierung | X-API-Key Header. Für Swagger UI Try-it-out: 00000000-0000-0000-0000-000000000000 |
Öffne die Swagger UI und beantworte:
Nutze Swagger + Claude, um die beiden Tools zu implementieren:
getMenu — Speisekarte per GET /menu abrufenplaceOrder — Bestellung per POST /pizzerias/{id}/orders aufgebenDer Agent soll:
getMenu aufrufenplaceOrder aufrufenTeste beide Szenarien: