# Een Ollama Modelfile aanmaken voor een aangepast model Een Ollama Modelfile aanmaken laat je een bestaand model omtoveren tot een aangepaste assistent met vaste instructies, een eigen persoonlijkheid en afgestemde instellingen. In plaats van elke keer dezelfde uitleg te typen, leg je die een keer vast in een Modelfile. [[TOC]] ## Wat is een Modelfile? Een Modelfile is een eenvoudig tekstbestand dat beschrijft hoe je aangepaste model eruitziet. Het lijkt op een Dockerfile: je begint met een basismodel en voegt daar lagen aan toe, zoals een systeeminstructie en parameters. Het resultaat is een nieuw model dat je met een eigen naam aanroept. :::info title="Modelfile lijkt op Dockerfile" Net als een Dockerfile begint een Modelfile met een basis (`FROM`) en bouwt daarop verder. Wie ooit met Docker heeft gewerkt, herkent de logica meteen. ::: ## De belangrijkste instructies Een Modelfile gebruikt een handvol sleutelwoorden. Voor de meeste aanpassingen heb je alleen `FROM`, `SYSTEM` en `PARAMETER` nodig. De `TEMPLATE`-instructie is geavanceerder en bepaalt het volledige promptformaat. De instructies zijn niet hoofdlettergevoelig en de volgorde maakt niet uit, al houden de meeste mensen `FROM` bovenaan. | Instructie | Wat het doet | Voorbeeld | | --- | --- | --- | | `FROM` | Geeft aan welk basismodel je gebruikt | `FROM llama3.2` | | `SYSTEM` | Legt de vaste instructie en persoonlijkheid vast | `SYSTEM Je bent een Nederlandse assistent.` | | `PARAMETER` | Stelt temperatuur en andere instellingen in | `PARAMETER temperature 0.3` | | `TEMPLATE` | Bepaalt het volledige promptformaat (optioneel) | Go-template-syntax | Het bouwen zelf doe je daarna met het commando `ollama create`. ## Een Modelfile schrijven Stel je wilt een assistent die altijd in het Nederlands antwoordt en kort en zakelijk blijft. Je maakt een bestand met de naam `Modelfile` (zonder extensie) en vult het zo: ```text FROM llama3.2 SYSTEM Je bent een behulpzame assistent die altijd in het Nederlands antwoordt. Houd je antwoorden kort en zakelijk. PARAMETER temperature 0.3 PARAMETER num_ctx 4096 ``` De `SYSTEM`-regel bepaalt het gedrag, de `temperature` houdt antwoorden voorspelbaar, en `num_ctx` stelt in hoeveel tekst het model kan onthouden. :::tip title="Kies een recent basismodel" Gebruik een actueel basismodel zoals `llama3.2` in plaats van een oudere versie. Met `ollama pull llama3.2` haal je het binnen, en met `ollama list` zie je welke modellen je al lokaal hebt staan. ::: ## Je model bouwen en gebruiken :::howto title="Aangepast model maken" 1. Sla je Modelfile op in een map, bijvoorbeeld als `Modelfile` zonder extensie. 2. Open een terminal in die map. 3. Bouw het model met `ollama create mijn-assistent -f Modelfile`. 4. Wacht tot Ollama het model heeft samengesteld. 5. Start het met `ollama run mijn-assistent` en test of het zich gedraagt zoals bedoeld. ::: :::tip title="Geef je modellen duidelijke namen" Noem je aangepaste modellen iets als `nl-zakelijk` of `code-helper`. Met `ollama list` zie je ze tussen je andere modellen staan en weet je meteen waarvoor elk bedoeld is. ::: ## Parameters fijn afstemmen De `PARAMETER`-regels bepalen hoe het model zich gedraagt. De temperatuur regelt creativiteit: laag voor feitelijke antwoorden, hoog voor brainstormen. Met `num_ctx` vergroot je het geheugen voor lange gesprekken, al kost dat meer werkgeheugen. Met `stop` bepaal je waar het model moet stoppen, en met `top_p` of `top_k` stuur je hoe gevarieerd de woordkeuze is. | Parameter | Effect | Veelgebruikte waarde | | --- | --- | --- | | `temperature` | Creativiteit van antwoorden | 0.2 tot 0.4 feitelijk, 0.7 tot 0.9 creatief | | `num_ctx` | Hoeveel tekst het model onthoudt | 2048 tot 8192 | | `stop` | Tekst die de generatie stopt | Afhankelijk van het promptformaat | | `top_p` | Variatie in woordkeuze | 0.9 | :::warn title="Pas op met een hoge num_ctx" Een te hoge `num_ctx` kost veel geheugen en kan op zwakke hardware tot trage of vastlopende antwoorden leiden. Verhoog deze waarde alleen als je lange documenten verwerkt en je hardware het aankan. ::: ## Een persoonlijkheid meegeven De `SYSTEM`-instructie is je krachtigste gereedschap. Hierin beschrijf je wie het model is, welke toon het aanhoudt en welke regels het volgt. Je kunt het bijvoorbeeld vertellen dat het een vriendelijke helpdeskmedewerker is die alleen over jouw product praat, of een strenge code-reviewer die op beveiliging let. :::accordion title="Voorbeeld van een uitgebreide SYSTEM-instructie" Je kunt meerdere gedragsregels meegeven, zoals: Je bent een ervaren Nederlandse boekhouder. Je legt fiscale begrippen helder uit voor ondernemers zonder financiele achtergrond. Je geeft nooit definitief belastingadvies maar verwijst bij twijfel naar een accountant. Je antwoordt altijd in eenvoudig Nederlands. ::: :::faq ### Heb ik een nieuw model nodig voor elke aanpassing? Nee, je bouwt voort op een bestaand basismodel met `FROM`. De aanpassing is een dunne laag eroverheen en kost nauwelijks extra schijfruimte. ### Kan ik mijn Modelfile delen met collega's? Ja, het is een eenvoudig tekstbestand. Deel het bestand en je collega's bouwen hetzelfde model met `ollama create`. Let er wel op dat zij hetzelfde basismodel binnenhalen. ### Wat is het verschil tussen SYSTEM en een gewone prompt? `SYSTEM` legt het gedrag permanent vast in het model, terwijl een gewone prompt eenmalig is. Met `SYSTEM` hoef je instructies niet telkens te herhalen. ### Welke temperatuur kies ik? Voor feitelijke, voorspelbare antwoorden kies je rond 0.2 tot 0.4. Voor creatief schrijven of brainstormen ga je richting 0.7 tot 0.9. ### Hoe verwijder ik een aangepast model weer? Met `ollama rm mijn-assistent` verwijder je het. Het basismodel waarop het is gebaseerd blijft gewoon staan, dus je verliest geen schijfruimte van dat model. ::: Met een Modelfile maak je lokale AI echt van jezelf. Verdiep je verder in [[lokale-ai-finetunen-basis|het fine-tunen van modellen]] of bouw een [[lokale-ai-rag-pipeline|RAG-pipeline met eigen documenten]].