Voor iedere leerling hetzelfde
Vraag is hoeveel mensen iets willen kopen. Aanbod is hoeveel ervan te koop is. Als veel mensen iets willen en er weinig van is, stijgt de prijs vaak. Bij veel aanbod en weinig vraag daalt de prijs vaak.
Les 4 van 8
Je koppelt voor het eerst echte AI-modellen aan een onderwijsapp. Het onderwerp staat vast, maar de leerling vult een hobby in. Eén klik levert twee AI-uitleggen op, zodat je inhoud, wachttijd en kosten kunt vergelijken.
Het eindresultaat
De app toont altijd dezelfde basisuitleg over vraag en aanbod. De leerling vult één hobby in. Twee modellen krijgen exact dezelfde opdracht en maken ieder een eigen uitleg met een herkenbaar voorbeeld.
Vul een hobby in en bekijk hoe hetzelfde begrip op een andere manier kan worden uitgelegd.
Vraag is hoeveel mensen iets willen kopen. Aanbod is hoeveel ervan te koop is. Als veel mensen iets willen en er weinig van is, stijgt de prijs vaak. Bij veel aanbod en weinig vraag daalt de prijs vaak.
Vul eerst een hobby in.
Vul eerst een hobby in.
Deze schets gebruikt vaste voorbeeldtekst. In jouw eigen project laat je OpenRouter beide AI-uitleggen tegelijk maken en meet je de echte wachttijd in de app. Deze schets gebruikt geen credits en doet daarom geen snelheidsmeting na.
Onder de motorkap
De browser hoeft alleen de hobby te kennen. Jouw server voegt de geheime sleutel en dezelfde vaste uitlegopdracht toe voordat OpenRouter beide modellen tegelijk aanroept.
De browser verstuurt alleen de hobby naar jouw eigen serverroute.
De API-sleutel blijft in .env.local en komt niet in de browser terecht.
Dezelfde opdracht gaat tegelijk naar model A en model B.
De standaarduitleg en beide AI-antwoorden blijven naast elkaar staan.
Eenmalig instellen
Geef de sleutel een herkenbare naam en stel een lage bestedingslimiet in. Je kunt deze sleutel later verwijderen zonder andere projecten te raken.
Deel de sleutel niet. Zet hem niet in een screenshot of chatbericht. Heb je hem toch gedeeld? Verwijder de sleutel in OpenRouter en maak een nieuwe.
In je project
Kopieer je geheime OpenRouter-sleutel zelf naar dit lokale bestand. Deel de sleutel niet met je vibe-code tool en zet hem nooit rechtstreeks in je prompt.
Modelcodes zijn niet geheim. Die kies je hieronder en zet je rechtstreeks in de bouwprompt. Ze horen dus niet in.env.local.
OPENROUTER_API_KEY=plak_hier_jouw_eigen_sleutelOpen de actuele OpenRouter-catalogus, open een model en kopieer de volledige officiële modelcode. Iedere klik in je app gebruikt beide modellen en kost daarom twee aanvragen.
Kopieer de volledige codes uit de actuele OpenRouter-catalogus.
.env.local mag niet naar GitHub worden gestuurd.
Stop en start je lokale server nadat je de API-sleutel hebt toegevoegd.
Bouwen
Kies hierboven eerst je twee modelcodes. Kopieer daarna de volledige prompt naar je vibe-code tool. De modelcodes staan in de prompt; alleen je geheime API-sleutel blijft in .env.local.
We gaan in dit bestaande Next.js-project een kleine onderwijsapp met AI-integratie bouwen. Installeer geen nieuwe dependency als dat niet nodig is.
DOEL
De app legt het vaste onderwerp "vraag en aanbod" uit. De leerling vult alleen een hobby in. Na één klik maken twee verschillende AI-modellen via OpenRouter ieder een korte uitleg met een voorbeeld uit die hobby. De leerling vergelijkt de inhoud en de wachttijd.
GEBRUIK DEZE TWEE MODELLEN
- Model A: plak_hier_modelcode_a
- Model B: plak_hier_modelcode_b
- Gebruik deze twee volledige modelcodes rechtstreeks in de servercode voor de twee OpenRouter-aanvragen.
- Zet de modelcodes niet in .env.local. Alleen de geheime API-sleutel hoort daar te staan.
INTERFACE
- Toon bovenaan het vaste onderwerp: Vraag en aanbod.
- Toon altijd deze standaarduitleg:
"Vraag is hoeveel mensen iets willen kopen. Aanbod is hoeveel ervan te koop is. Als veel mensen iets willen en er weinig van is, stijgt de prijs vaak. Bij veel aanbod en weinig vraag daalt de prijs vaak."
- Voeg een tekstveld toe met het label "Welke hobby past bij jou?" en de placeholder "bijv. vibe coden".
- Voeg één knop toe met de tekst "Maak twee uitleggen".
- Toon tijdens het wachten bij beide modellen een eigen laadstatus en schakel de knop tijdelijk uit.
- Toon naast de standaarduitleg twee antwoordkaarten: Model A en Model B. Zet op iedere kaart de gebruikte modelcode en de gemeten wachttijd in milliseconden.
- Noem dit "Wachttijd in deze app". Leg in kleine tekst uit dat deze tijd ook netwerk en provider bevat en dus geen zuivere snelheidstest van alleen het model is.
- Zet bij ieder AI-antwoord: "Gemaakt met AI. Controleer de uitleg."
- Laat de standaarduitleg staan als één of beide AI-aanvragen mislukken. Toon de fout per model, zodat een geslaagd antwoord wel zichtbaar blijft.
VEILIGE SERVERKOPPELING
- Maak een POST-route op /api/uitleg.
- Lees uitsluitend OPENROUTER_API_KEY op de server uit process.env.
- Stuur de API-sleutel nooit naar de browser, zet hem niet in een NEXT_PUBLIC-variabele en log hem nergens.
- Laat de browser alleen de hobby naar /api/uitleg sturen.
- Controleer op de server dat de hobby na trimmen tussen 2 en 60 tekens bevat.
- Stuur beide aanvragen met fetch naar https://openrouter.ai/api/v1/chat/completions.
- Geef beide modellen exact dezelfde opdracht: leg vraag en aanbod in maximaal vier korte zinnen uit aan een vijftienjarige, gebruik één concreet voorbeeld dat past bij de hobby en verzin geen feiten over de leerling.
- Beperk ieder antwoord tot ongeveer 180 tokens.
- Start beide modelaanvragen tegelijk. Maak voor ieder model een aparte async functie, noteer Date.now() direct voor en na de fetch en voer de twee functies parallel uit met Promise.allSettled.
- Geef per model als JSON terug: model, uitleg of fout, en durationMs. Geef nooit de API-sleutel terug.
- Eén klik veroorzaakt dus twee betaalde OpenRouter-aanvragen.
PRIVACY EN TESTEN
- Zet onder het invoerveld: "Gebruik alleen een hobby. Vul geen naam of andere persoonlijke gegevens in."
- Voeg geen database, accounts of opslag toe.
- Controleer dat de app bruikbare foutmeldingen toont als de sleutel ontbreekt, een modelcode fout is of één model niet reageert.
- Test dat beide aanvragen parallel starten en dat één mislukte aanvraag het andere antwoord niet verwijdert.
Voer daarna de bestaande lint- en buildcontrole van het project uit. Leg kort uit welke bestanden je hebt aangepast, waar ik alleen OPENROUTER_API_KEY in .env.local moet invullen en in welk serverbestand de twee modelcodes staan.Echt proberen
Met één klik verstuur je dezelfde opdracht tegelijk naar beide modellen. Je ziet twee antwoorden en twee wachttijden. OpenRouter registreert ook twee betaalde aanvragen.
Vul bijvoorbeeld vibe coden in en maak beide uitleggen.
Bekijk hoe de inhoud verschilt en welk antwoord eerder klaar was.
Zoek de twee aanvragen en vergelijk wat ieder model heeft gekost.
Vergelijk de modelcode en kosten. De wachttijd meet je in de app; Activity gebruik je voor de echte kostenregistratie.
Controleer de API-sleutel en herstart de server.
Controleer je OpenRouter-tegoed en de limiet van de sleutel.
Lees de foutmelding van je serverroute en controleer de modelcode.
Nu doen
Rond alleen deze twee controles af. Eén goede vergelijking is genoeg voor deze les.
0 van 2 gedaan
Je hebt dezelfde onderwijsopdracht eerlijk vergeleken. Je zag live verschil in antwoord en wachttijd en vond de echte kosten terug in Activity.
Vragen en opmerkingen
Stel een vraag, lees mee of help een andere cursist op weg.
Je kunt alle vragen lezen. Log in of registreer gratis om zelf mee te praten.
Log in of registreer