Opdracht: Je eigen AI-Agent met Gemma 4¶
In deze opdracht ga je aan de slag met Gemma 4:E2B. Dit is een “edge-tier” model van Google dat klein genoeg is om soepel op je eigen laptop te draaien, maar krachtig genoeg om tekst, afbeeldingen en zelfs audio te begrijpen.
Deel 1: Installatie & Eerste Contact¶
Wat is Gemma 4:E2B?
De “E” staat voor Effective. Dit model is geoptimaliseerd voor snelheid op consumentenhardware. In tegenstelling tot oudere modellen is Gemma 4 volledig multimodaal.
- Stap 1: Download en installeer Ollama.
- Stap 2: Open je terminal en haal het model op:
- Stap 3: Start een chat in je terminal:
Stel een vraag als: “Wat zijn de drie belangrijkste programmeerprincipes?”
git-bash
Windows gebruikers kunnen git bash gebruiken als terminal. Het ondersteunt alle commando’s die we in deze opdracht gebruiken, inclusief curl en base64.
Deel 2: Verken de API met cURL¶
Nu gaan we stoppen met de “chat-app” van Ollama en de rauwe API gebruiken. Open een nieuwe terminal (laat Ollama draaien).
1. Welke modellen heb ik?
- Wat zie je nu?
- Welk formaat heeft de output?
- Welke modellen staan er in de lijst?
11434?
De standaardpoort voor Ollama’s API is 11434. Als je je ogen een beetje dichtknijpt kan je 11434 zien als het woord LLAMA.
2. Een eerste gesprek (met een goudvis 🐟) Stuur deze twee commando’s vlak na elkaar.
Stuur eerst deze vraag:
curl http://localhost:11434/api/chat -d '{
"model": "gemma4:e2b",
"messages": [{ "role": "user", "content": "Mijn naam is Joran." }],
"stream": false
}'
En daarna deze vraag:
curl http://localhost:11434/api/chat -d '{
"model": "gemma4:e2b",
"messages": [{ "role": "user", "content": "Hoe heet ik?" }],
"stream": false
}'
- Waarom weet de AI bij de tweede vraag niet meer dat je Joran heet?
3. Context meegeven (Met geheugen) Om een gesprek te voeren, moet jij de geschiedenis (“history”) meesturen.
curl http://localhost:11434/api/chat -d '{
"model": "gemma4:e2b",
"messages": [
{ "role": "user", "content": "Mijn naam is Joran." },
{ "role": "assistant", "content": "Aangenaam, Joran!" },
{ "role": "user", "content": "Hoe heet ik?" }
],
"stream": false
}'
4. Multimodaliteit: Afbeeldingen & Audio
Gemma 4 kan bestanden analyseren als je ze omzet naar base64 tekst.
Base64
Een API kan geen fysiek bestand “lezen”. Je moet de binaire data van een plaatje of audiofragment omzetten in een lange reeks teksttekens. Het omzetten van een bestand naar base64 kan meestal met een simpel commando in je terminal.
Download deze afbeelding en voer het volgende commando uit om een plaatje te beschrijven:
# Plaatje beschrijven (Zorg dat je een plaatje 'test.jpg' hebt)
curl http://localhost:11434/api/chat -d "{
\"model\": \"gemma4:e2b\",
\"messages\": [{
\"role\": \"user\",
\"content\": \"Wat zie je op dit plaatje?\",
\"images\": [\"$(base64 -w 0 test.jpg)\"]
}],
\"stream\": false
}"
MacOS
Op MacOS werkt het base64 commando iets anders. Gebruik deze variant:
- Wat zegt de AI over het plaatje?
- Wat gebeurt er als je een willekeurige afbeelding gebruikt?
Deel 3: Bouwen met Python (AI Toegestaan)¶
Gebruik een LLM (zoals Copilot of Claude) om je te helpen bij het schrijven van de volgende scripts. Let op: Je moet de code wel kunnen uitleggen!
-
Opdracht A: Maak een Python script (
chat.py) dat eenwhile Trueloop gebruikt om een gesprek te voeren met de Ollama API. Het moet de chatgeschiedenis in een lijst bijhouden, zodat je echt een gesprek kunt voeren in je terminal. -
Opdracht B: Maak een Flask-applicatie.
- De gebruiker vult een onderwerp in.
- De backend stuurt een prompt naar Gemma: “Schrijf een gedicht over [onderwerp]”.
- Challenge: Omdat een gedicht genereren lang duurt, bevriest je pagina. Laat zien dat de LLM bezig is door het antwoord in stukjes te streamen. Gebruik hiervoor de
streamoptie van de API. - Bonus: Voeg een veld toe waarin de gebruiker een afbeelding kan uploaden. Stuur deze afbeelding mee in de prompt en vraag de AI om het gedicht te laten inspireren door de afbeelding.
- Bonus 2: Voeg een veld toe waarin de gebruiker een geluidsfragment kan uploaden. Stuur dit mee in de prompt en vraag de AI om het gedicht te laten inspireren door het geluid.
Deel 4: Netwerken en Infrastructuur¶
Laat het model draaien op je laptop maar laat de front-end draaien op een andere computer. Gebruik tailscale of een andere VPN om dit mogelijk te maken. Zorg dat de API calls van de front-end bij je lokale model terechtkomen. Je kan je raspberry-pi gebruiken als back-end server en calls naar je LLM doorsturen naar je laptop.
Leeruitkomsten¶
De ervaring van deze opdracht kan op verschillende manieren worden gebruikt om leeruitkomsten te bewijzen. Hier zijn enkele voorbeelden:
- Onderzoekend probleemoplossen: onderzoeksrapport
- Welke AI mogelijkheden zijn er geschikt voor jullie applicatie?
- Hoe kan je ze implementeten?
-
Hoe zijn de verschillende onderdelen verdeeld over client en server?
-
Software: Technische documentatie
-
Beschrijf hoe je code werkt, welke onderdelen, welke moeilijkheden. Gebruik bronnen en code-snippets.
-
Infrastructuur: Infrastructuur ontwerp
-
Hoe ziet de architectuur van je applicatie eruit? Welke onderdelen draaien lokaal, welke in de cloud? Welke API’s gebruik je? Hoe zorg je ervoor dat alles veilig en schaalbaar is?
-
Security engineer: Beveiligingsanalyse
- Welke beveiligingsrisico’s zijn er bij het gebruik van LLM’s? Hoe ga je om met API keys? Hoe zorg je ervoor dat gebruikersdata veilig is? Wat is “prompt injection” en hoe voorkom je dat?