Aufgabe 4

Einen Voice-Ordering-Agenten bauen

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.

Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 Aufgabe 6
0

Überblick

In dieser Aufgabe baust du einen sprachgesteuerten Bestellassistenten für Roberto's Pizzeria. Der Agent wird:

  • Anrufer automatisch begrüßen
  • Die aktuelle Speisekarte live über die API abrufen
  • Bestellungen mit Mengen und Toppings entgegennehmen
  • Kundennamen und Lieferadresse erfassen
  • Die Bestellung an das Backend senden
  • Bestell-ID und geschätzte Wartezeit bestätigen
Pair Programming empfohlen! Diese Aufgabe eignet sich hervorragend für die Zusammenarbeit zu zweit.
1

Geschäftsanforderungen

Der Agent muss zwei typische Gesprächsverläufe beherrschen:

Szenario A: Kunde fragt nach der Karte
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
Szenario B: Kunde bestellt direkt
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
Wichtig: Kein separater Lieferprüfungs-Endpunkt

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.

Erforderliche Fähigkeiten
  • Anrufer begrüßen
  • Speisekarten-Anfragen beantworten (getMenu)
  • Direktbestellungen annehmen
  • Vornamen erfassen
  • Lieferadresse erfassen
  • Bestellung über placeOrder aufgeben
  • API-Fehler verständlich kommunizieren
2

Setup

Repositories klonen

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
Wichtig: AGENT_NAME muss übereinstimmen!

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!

Umgebungsvariablen

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.

Projekte starten

Ö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
3

API-Referenz

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
4

Aufgaben

Task 1: API erkunden

Öffne die Swagger UI und beantworte:

  • Welche HTTP-Methode liefert die Speisekarte?
  • Welcher Header wird für die Authentifizierung benötigt?
  • Welche Felder sind beim Erstellen einer Bestellung Pflicht?
  • Wie lautet der Item-Code für Pasta Aglio & Olio?
  • Was passiert bei einem falschen Pizza-Code?
Task 2: Agent Tools implementieren

Nutze Swagger + Claude, um die beiden Tools zu implementieren:

  • getMenuSpeisekarte per GET /menu abrufen
  • placeOrderBestellung per POST /pizzerias/{id}/orders aufgeben
Task 3: System Prompt aktualisieren

Der Agent soll:

  • Ein freundlicher Pizza-Bestellassistent sein
  • Anrufer zuerst begrüßen
  • Bei Menü-Fragen getMenu aufrufen
  • Vorname + Straße erfassen
  • Erst nach Bestätigung placeOrder aufrufen
  • Natürlich und sprachoptimiert kommunizieren (keine langen Listen vorlesen)
  • Fehler verständlich in Sprache erklären
Task 4: End-to-End Test

Teste beide Szenarien:

  • Szenario A: Frage nach der Speisekarte, bestelle dann, prüfe auf dem Dashboard
  • Szenario B: Bestelle direkt, gib Name + Adresse an, prüfe auf dem Dashboard
5

Abnahmekriterien

  • Agent begrüßt Anrufer automatisch
  • Menü liefert Live-Daten von GET /menu
  • Agent empfiehlt eine Pizza + Pasta
  • Direktbestellungen ohne Menü-Abfrage möglich
  • Vorname + Straße werden erfasst
  • placeOrder wird erst nach Bestätigung aufgerufen
  • Bestellung erscheint im PizzaSim-Dashboard
  • API-Fehler werden verständlich in Sprache erklärt
Zugangsdaten eingeben