Dify-handleidingen: eerste uitgave, stand 20 september 2026

Handleidingen 01, 02, 03, 05, 07, 08 met Zelf kiezen-kaders en Maak hem van jou;
bijlagen ontwerpkaart, ontwerppatronen, AI-tools in het onderwijs; draaiboek workshop
Kennisfestival 23-09-2026; gedeeld bouwscript, extract.py, CC BY-SA 4.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido van Dijk
2026-09-20 20:25:01 +02:00
commit 659e4c7e76
284 changed files with 3944 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
# Gebouwde uitvoer: maak je met python3 build.py in elke map
*.html
*.pdf
*.docx
!**/schoolgids-voorbeeldcollege.pdf
!**/schrijfwijzer-voorbeeldcollege.pdf
!**/studiewijzer-biologie-3havo-ecologie.pdf
!**/lesbrief-ecologie.pdf
!**/stercollectie-voedselweb-hv3.pdf
__pycache__/
.*-embed.html
+229
View File
@@ -0,0 +1,229 @@
<!--
VOOR CLAUDE CODE
Bijlage bij de serie Dify-handleidingen: overzicht van de AI-tools die in het onderwijs
al aanwezig zijn en hoe ze zich verhouden tot wat we in Dify bouwen. Geen beelden.
Bouwen: python3 build.py
Stand van zaken: 20 september 2026. Bronnen die bij het schrijven zijn geraadpleegd:
sivon.nl/veelgestelde-vragen-over-ai, sivon.nl/toetsingskader (AI Toetsingskader Funderend
Onderwijs 1.0, 1 april 2026), kennisnet.nl (SURF-advies Microsoft 365 Copilot).
Bij een volgende workshop: de kolom "Stand in Nederland" opnieuw nalopen.
-->
# AI-tools in het onderwijs: wat er al is, en waar Dify past
**Bijlage bij de workshop AI Agents**
LeX Consultancy B.V. · 20 september 2026
Bijna iedereen in de zaal gebruikt al een AI-tool: Copilot omdat de school Microsoft heeft, Gemini omdat de school Google heeft, ChatGPT omdat het de bekendste is. Deze bijlage zet de tools naast elkaar in gewoon Nederlands: wat het is, waar het al in zit, wat erover bekend is voor scholen in Nederland, en wanneer je het wel of niet inzet. Aan het eind staat waar Dify in dit landschap past, want Dify is geen zoveelste chatbot maar een bouwlaag bovenop deze tools.
Alles hieronder is de stand van **20 september 2026**. Deze markt verandert per kwartaal. Voor besluiten over inzet op school kijk je altijd naar de actuele adviezen van SIVON en SURF, en naar het AI Toetsingskader Funderend Onderwijs.
> De belangrijkste zin van deze bijlage: **het verschil zit niet in het model maar in het account.** Dezelfde chatbot is met een gratis privéaccount iets heel anders dan met een schoolaccount onder een verwerkersovereenkomst. In het eerste geval kunnen je gesprekken gebruikt worden om het model te trainen en heb je geen rechten; in het tweede geval zijn daar afspraken over. Vraag dus nooit "mogen we ChatGPT gebruiken?" maar "onder welk account, met welke gegevens, voor welke taak?"
---
## Drie lagen
Het helpt om drie lagen uit elkaar te houden. De meeste discussies op school gaan over laag 1, de meeste winst zit in laag 2 en 3.
| Laag | Wat het is | Voorbeelden | Wie beslist |
| --- | --- | --- | --- |
| **1. Chatbot** | Je typt een vraag, je krijgt een antwoord. Elke keer opnieuw uitleggen wat je wilt. | ChatGPT, Gemini-app, Claude, Le Chat, Copilot Chat | De gebruiker zelf, vaak zonder dat de school het weet |
| **2. Assistent in je kantoorpakket** | AI in de tools die je al hebt: mail samenvatten, een presentatie opzetten, een tabel uitleggen. | Microsoft 365 Copilot, Gemini in Workspace for Education | De school, via licenties en instellingen |
| **3. Bouwplatform** | Jij bouwt een app met vaste stappen, eigen regels en eigen documenten, en deelt die met collega's. | Dify, Copilot Studio, Gems (Google), GPT's en Projects (OpenAI), Projects (Claude) | De school, per app; dit is waar deze workshop over gaat |
Een chatbot (laag 1) is handig voor wie zelf goed kan sturen. Een app (laag 3) neemt dat sturen over: de regels zitten ingebouwd, dus een collega die nooit een prompt schreef, krijgt toch een goed resultaat. Dat is precies waarom we in de handleidingen apps bouwen en geen prompts uitdelen.
---
## De tools naast elkaar
### Microsoft Copilot
| | |
| --- | --- |
| **Van wie** | Microsoft (VS), modellen van OpenAI en eigen modellen |
| **Waar zit het al in school** | In Microsoft 365: Copilot Chat met schoolaccount is er vaak al; Microsoft 365 Copilot (in Word, Outlook, Teams) is een aparte licentie |
| **Stand in Nederland (20-09-2026)** | SURF deed een DPIA en adviseert **terughoudend** gebruik van Microsoft 365 Copilot; van de vier hoge risico's zijn er twee over, nu als middel ingeschat. Kennisnet sluit zich daarbij aan en adviseert schoolafspraken vóór inzet |
| **Geschikt voor** | Werken in eigen documenten en mail, samenvattingen van Teams-overleggen, eerste opzet van teksten |
| **Let op** | Copilot Chat met schoolaccount (data blijft in de tenant) is iets anders dan Copilot in de browser met privéaccount. Controleer welke je hebt. Copilot Studio is het bouwplatform van Microsoft; vergelijkbaar met Dify, maar gebonden aan Microsoft |
### Google Gemini
| | |
| --- | --- |
| **Van wie** | Google (VS) |
| **Waar zit het al in school** | In Workspace for Education: Gemini in Docs, Gmail en Classroom, de Gemini-app, NotebookLM, Gems |
| **Stand in Nederland (20-09-2026)** | SIVON voert in 2026 een DPIA uit op Gemini in Workspace for Education; bij het schrijven van deze bijlage was er nog geen afgerond oordeel. Google zet Gemini intussen aan in steeds meer onderdelen; beheerders kunnen dat per onderdeel uitzetten |
| **Geschikt voor** | Werken in Google-documenten, NotebookLM voor leren uit eigen bronnen, Gems als eenvoudige eigen assistent |
| **Let op** | Wacht met inzet bij leerlingen op de DPIA. Let op wat je beheerder heeft aangezet; standaardinstellingen wijzigen bij updates |
### ChatGPT (OpenAI)
| | |
| --- | --- |
| **Van wie** | OpenAI (VS) |
| **Waar zit het al in school** | Meestal niet via school; wel massaal privé bij docenten en leerlingen |
| **Stand in Nederland (20-09-2026)** | Geen sectorbrede DPIA voor het funderend onderwijs. Bij een gratis of Plus-account kunnen gesprekken standaard gebruikt worden voor training (uit te zetten in de instellingen); bij Team, Enterprise en Edu niet, en er is dan een verwerkersovereenkomst mogelijk |
| **Geschikt voor** | Het breedste ecosysteem: GPT's, Projects, spraak, beeld. Voor persoonlijk gebruik door de docent zonder schooldata |
| **Let op** | Nooit leerlinggegevens of ongepubliceerd toetsmateriaal in een privéaccount. Via de API (zoals in Dify) gelden andere voorwaarden dan in de app: standaard geen training op API-verkeer |
### Claude (Anthropic)
| | |
| --- | --- |
| **Van wie** | Anthropic (VS) |
| **Waar zit het al in school** | Zelden via school; via Dify beschikbaar als model |
| **Stand in Nederland (20-09-2026)** | Geen sectorbrede DPIA. Claude for Education en een leerstand ("learning mode") bestaan, vooral gericht op hoger onderwijs. Zakelijke accounts trainen niet op gesprekken |
| **Geschikt voor** | Lange documenten lezen en herschrijven, zorgvuldig taalgebruik, Projects met eigen bronnen. In de Agent Console van Dify een van de compatibele modellen |
| **Let op** | Zelfde regel als bij ChatGPT: account bepaalt wat mag. Duurder per antwoord dan gpt-5-mini |
### Mistral (Le Chat)
| | |
| --- | --- |
| **Van wie** | Mistral AI (Frankrijk) |
| **Waar zit het al in school** | Zelden via school |
| **Stand in Nederland (20-09-2026)** | Europese aanbieder, valt onder EU-recht en hosting in de EU is mogelijk; sommige modellen zijn open (zelf te draaien). Geen sectorbrede onderwijs-DPIA |
| **Geschikt voor** | Wie een Europese aanbieder wil of zelf wil hosten; goed in Nederlands en Frans |
| **Let op** | Kleiner ecosysteem; minder kant-en-klare onderwijsfuncties. Ook hier: gratis account is niet hetzelfde als een zakelijk account |
### DeepSeek
| | |
| --- | --- |
| **Van wie** | DeepSeek (China) |
| **Waar zit het al in school** | Niet via school |
| **Stand in Nederland (20-09-2026)** | De app en de website verwerken gegevens op servers in China; de Autoriteit Persoonsgegevens en meerdere Europese toezichthouders hebben gewaarschuwd. De open modellen zijn wel door Europese partijen te hosten |
| **Geschikt voor** | Alleen als open model, gehost door een partij in de EU, voor wie technisch wil experimenteren |
| **Let op** | Niet gebruiken met schooldata via de app. Het model is niet het probleem, de verwerking is het probleem |
### Grok (xAI)
| | |
| --- | --- |
| **Van wie** | xAI (VS), verweven met X |
| **Waar zit het al in school** | Niet via school |
| **Stand in Nederland (20-09-2026)** | Geen onderwijsgebruik van betekenis; herhaalde controverses over ongefilterde uitvoer en gebruik van X-berichten voor training |
| **Geschikt voor** | Nergens voor in een schoolcontext |
| **Let op** | Niet inzetten. Noem hem wel in de les over mediawijsheid: leerlingen komen hem tegen op X |
### Perplexity
| | |
| --- | --- |
| **Van wie** | Perplexity (VS) |
| **Waar zit het al in school** | Niet via school; populair bij leerlingen als "zoekmachine" |
| **Stand in Nederland (20-09-2026)** | Geen DPIA. Zoekt op het web en geeft bronnen |
| **Geschikt voor** | Oriënterend zoeken met bronvermelding; bronnen daarna zelf controleren |
| **Let op** | Bronnen zijn niet altijd de beste, en de samenvatting is niet altijd wat de bron zegt |
### NotebookLM
| | |
| --- | --- |
| **Van wie** | Google (VS) |
| **Waar zit het al in school** | Onderdeel van Workspace for Education (beheerder kan aan- of uitzetten) |
| **Stand in Nederland (20-09-2026)** | Valt onder de Google-DPIA's van SIVON; controleer of je beheerder het heeft aangezet |
| **Geschikt voor** | Leren uit eigen bronnen: samenvatting, vragen, audio-overzicht van een hoofdstuk |
| **Let op** | Alleen met materiaal dat je mag uploaden. Dezelfde regels als voor een kennisbank in Dify |
### GPT-NL
| | |
| --- | --- |
| **Van wie** | TNO, SURF en NFI (Nederland) |
| **Waar zit het al in school** | Nog niet in scholen |
| **Stand in Nederland (20-09-2026)** | Nederlands taalmodel in ontwikkeling, met aandacht voor rechtmatige trainingsdata en Nederlandse waarden; bedoeld voor publieke organisaties |
| **Geschikt voor** | Op termijn: een model waarvan de herkomst van de data bekend is |
| **Let op** | Nog geen product dat je vandaag inzet; wel volgen |
---
## Vier vragen voor elke tool
Of het nu Copilot is of een app die je zelf in Dify bouwt, dezelfde vier vragen bepalen of het mag en of het verstandig is.
1. **Onder welk account?** Privé, gratis, betaald of een schoolaccount met verwerkersovereenkomst. Alleen in het laatste geval heeft de school iets te zeggen over wat er met de gegevens gebeurt.
2. **Welke gegevens gaan erin?** Geen persoonsgegevens van leerlingen, ouders of collega's, tenzij de tool daarvoor is beoordeeld. Ongepubliceerd toetsmateriaal en vertrouwelijke stukken tellen ook.
3. **Wordt er getraind op wat je invoert?** Bij consumentenaccounts vaak standaard ja (soms uit te zetten), bij zakelijke accounts en API-gebruik meestal nee. Controleer het, geloof het niet op gezag van een collega.
4. **Wie beslist en wie kijkt na?** Een tool die één docent voor zichzelf gebruikt is iets anders dan een tool die leerlingen gebruiken. Voor het tweede is er een schoolbesluit nodig, en iemand die de uitvoer controleert.
Hulpmiddelen die er al zijn:
- **AI Toetsingskader Funderend Onderwijs** (SIVON en Kennisnet, versie 1.0, 1 april 2026): vier stappen om te bepalen of een AI-systeem onder de Europese AI-verordening valt en welke verplichtingen gelden, met een beslisboom en checklists voor school en leverancier. Gebruik het bij inkoop en bij elke tool die leerlingen raakt.
- **Kennisnet: schoolafspraken over generatieve AI**: een toolkit (met een spel) om als team afspraken te maken. Doe dat vóór de tools, niet erna.
- **SIVON-veelgestelde vragen over AI**: onder meer de vuistregel dat kinderen onder 13 niet zelfstandig met generatieve AI werken.
- **De DPIA's van SURF en SIVON** op Microsoft en Google: de enige onafhankelijke beoordelingen voor de Nederlandse onderwijssector. Andere aanbieders hebben zo'n beoordeling niet; dat betekent niet dat ze onveilig zijn, maar wel dat de school het zelf moet uitzoeken.
---
## AVG en AI Act in het kort
Twee wetten bepalen wat mag. De **AVG** gaat over persoonsgegevens, de **AI-verordening (EU AI Act)** over AI-systemen. Ze overlappen, maar stellen andere vragen.
**AVG: wie is verantwoordelijk voor de gegevens?**
- De school is verwerkingsverantwoordelijke. Dify (cloud, buiten de EU) en de modelaanbieder (OpenAI, Anthropic, Google) zijn verwerkers. Zonder verwerkersovereenkomst mogen er geen persoonsgegevens in, en die overeenkomst heeft een sandbox-account niet. Daarom werken de handleidingen met fictief materiaal.
- Zodra een app gegevens van leerlingen, ouders of collega's verwerkt (een naam in een ouderbrief, een persoonlijk bericht aan de Studiecoach dat naar de docent gaat), gelden grondslag, dataminimalisatie, een bewaartermijn voor de logs en bij hoog risico een DPIA. Bij leerlingen is dat vrijwel altijd hoog risico.
- Doorgifte buiten de EU vraagt een grondslag (bijvoorbeeld het EU-US Data Privacy Framework voor Amerikaanse aanbieders die daaronder vallen); controleer dat per aanbieder, het verandert.
**AI Act: wat voor systeem is het, en wat moet je dan?**
| Onderdeel | Sinds | Wat het betekent voor een school |
| --- | --- | --- |
| Art. 4, AI-geletterdheid | 2 februari 2025 | Wie AI inzet, zorgt dat personeel er genoeg van weet. Een workshop als deze is zo'n maatregel; leg vast wie hem volgde |
| Art. 5, verboden praktijken | 2 februari 2025 | Onder meer emotieherkenning in het onderwijs. Geen tool inzetten die stemming of aandacht van leerlingen meet |
| Bijlage III, hoog risico in het onderwijs | gepland augustus 2026; in 2025-2026 is uitstel besproken, controleer de actuele stand | Toelating en plaatsing, beoordelen van leerresultaten of niveau, toezicht bij toetsen. Dan gelden zware eisen aan leverancier én school: risicobeheer, menselijk toezicht, documentatie, registratie |
| Art. 50, transparantie | augustus 2026 | Een chatbot laat weten dat de gebruiker met AI praat; AI-gegenereerde inhoud wordt als zodanig herkenbaar gemaakt waar dat relevant is |
De apps uit deze serie (tekst herschrijven, vragen beantwoorden uit een schoolgids, berichten opstellen, een transcript samenvatten) nemen geen beslissingen over personen en vallen niet onder hoog risico. De grens ligt dichtbij: een Studiecoach die leerlingen uitlegt en hints geeft is geen hoog risico; dezelfde coach die zou vastleggen wie de stof niet snapt en dat aan de docent rapporteert als beoordeling, wel. Dat is een ontwerpkeuze, en de ontwerpkaart vraagt ernaar in vak 4. Het **AI Toetsingskader Funderend Onderwijs** (SIVON en Kennisnet, 1.0, april 2026) loopt deze stappen met een beslisboom na.
## De EU-competentiekaders: waar bouwen in past
De AI-verordening zegt dát personeel AI-geletterd moet zijn; twee Europese kaders zeggen wat dat inhoudt.
- Het **AI Literacy Framework for Primary and Secondary Education** (OESO en Europese Commissie, definitief in 2026) beschrijft vier competentiedomeinen voor leerlingen, elk met kennis, vaardigheden en houding: **Engage with AI** (begrijpen hoe het werkt en er verantwoord mee omgaan), **Create with AI** (er iets mee maken), **Manage AI** (het verantwoord inzetten en bewaken) en **Shape AI** (keuzes maken en invloed uitoefenen).
- **DigCompEdu** is het Europese kader voor de digitale competenties van docenten (zes gebieden, van professionele betrokkenheid tot het bevorderen van digitale competentie bij leerlingen); de Commissie heeft er aanvullingen bij gemaakt voor AI en data.
De handleidingenserie en de workshop raken alle vier de domeinen, en dat is te gebruiken in een professionaliseringsplan:
| Domein | In de serie |
| --- | --- |
| Engage with AI | Drie lagen, vijf patronen, de sabotage van de agent, de kennisbank die verkeerd knipt |
| Create with AI | De bouwblokken: workflow, agent, chatflow, poortwachter, agent console |
| Manage AI | Poortwachter en zelfkritiek, de mens in de lus, Logs, de checklists eigen materiaal, de vier vragen |
| Shape AI | De ontwerpkaart, de pitch, de keuze waar de mens hoort en wat een app nooit mag beslissen |
Bronnen: ailiteracyframework.org en education.ec.europa.eu (AI Literacy Framework); joint-research-centre.ec.europa.eu (DigCompEdu).
## Waar Dify past
Dify is geen model en geen chatbot. Het is een bouwplatform (laag 3) dat de modellen van de aanbieders hierboven aanroept via hun API. In de handleidingen koos je per app een model: meestal gpt-5-mini van OpenAI, in de Agent Console ook Claude of Gemini. Drie gevolgen daarvan:
**1. Je kiest het model per taak, en kunt wisselen.** Een ouderbrief herschrijven kan met een klein, goedkoop model. Een lang beleidsstuk analyseren vraagt een groter model. In Dify verander je dat in één menu, zonder dat de gebruiker van de app iets merkt. Komt er morgen een Europees model dat goed genoeg is (Mistral, of op termijn GPT-NL), dan zet je dat eronder.
**2. API-verkeer is niet hetzelfde als de chatbot.** Wat via de API van OpenAI, Anthropic of Google loopt, wordt standaard niet gebruikt om modellen te trainen, en er is een zakelijke overeenkomst. Dat is een betere positie dan een gratis chatbotaccount. Maar de gegevens gaan nog steeds naar een verwerker buiten de school, meestal buiten de EU. De regels uit de vier vragen blijven gelden.
**3. Dify-cloud zelf is óók een verwerker.** Het sandbox-account uit de workshop draait op de servers van Dify, buiten de EU. Voor oefenen met fictief materiaal is dat prima. Voor echt gebruik met schooldata zijn er twee routes: Dify zelf hosten (het is open source) of het draaien in een omgeving van het bestuur, zoals de Experimenteerruimte ICT van SOML met de centrale modelsleutels. Handleiding 5 (Transcriptietool) laat zien hoe je een prototype uit de cloud overzet.
**Wanneer wat**
| Situatie | Pak |
| --- | --- |
| Een snelle vraag, een eerste opzet, iets voor jezelf | De chatbot waar je school een account voor heeft (Copilot Chat of Gemini met schoolaccount) |
| Een taak die elke week terugkomt en aan regels moet voldoen (huisstijl, format, bronnen) | Een app in Dify, of in het bouwplatform van je pakket (Copilot Studio, Gems) |
| Werken in je eigen documenten en mail | Microsoft 365 Copilot of Gemini in Workspace, zodra je bestuur daar op grond van de DPIA een besluit over heeft genomen |
| Iets voor leerlingen | Eerst het schoolbesluit, het toetsingskader en de leeftijdsgrens; dan pas de tool |
| Experimenteren met wat kan | Dify met fictief materiaal, zoals in deze workshop |
---
## Om te onthouden
- Het account bepaalt meer dan het merk.
- AVG: geen persoonsgegevens zonder verwerkersovereenkomst. AI Act: geletterdheid is verplicht, beoordelen van leerlingen is hoog risico, een chatbot zegt dat hij AI is.
- Copilot en Gemini zitten al in school; of ze aan mogen, is een bestuursbesluit op basis van de DPIA's van SURF en SIVON, geen keuze van een individuele docent.
- ChatGPT, Claude en Mistral zijn prima gereedschap voor de docent zelf, zonder schooldata, en als model onder een app.
- DeepSeek-app en Grok blijven buiten school.
- Dify zet je bovenop deze modellen: je bouwt de regels in, kiest het model per taak en kunt wisselen als de markt verandert. Voor echt gebruik hoort de bouwlaag bij het bestuur, niet in een gratis cloudaccount.
+4
View File
@@ -0,0 +1,4 @@
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "ai-tools-in-het-onderwijs.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
+4
View File
@@ -0,0 +1,4 @@
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "ontwerpkaart.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
+44
View File
@@ -0,0 +1,44 @@
<!--
VOOR CLAUDE CODE
Losse A4 bij de serie Dify-handleidingen. Geen beelden. Bouwen: python3 build.py
STIJL: compact (kleinere letter, zie build_handleiding.py)
Bedoeld om uit te printen en met pen in te vullen vóór iemand in Dify gaat klikken.
-->
# Ontwerpkaart: je app in vijf vakken
**Bij de workshop AI Agents · vul dit in voordat je gaat bouwen**
LeX Consultancy B.V. · 20 september 2026
Eerst invullen, dan bouwen. Eén kaart per app, met pen, maximaal drie regels per vak.
| 1. Voor wie | 2. Wat gaat erin |
| --- | --- |
| Wie gebruikt de app, en in welke situatie? Eén persoon, niet "iedereen". Wat weet die persoon al, wat heeft die geen tijd voor? <br>&nbsp;<br>&nbsp;<br>&nbsp; | Wat plakt of kiest de gebruiker? Tekst, een bestand, een keuze uit een lijstje? Welke vragen stel je altijd vóór je iets voor iemand schrijft? Dat zijn je invoervelden. <br>&nbsp;<br>&nbsp;<br>&nbsp; |
| 3. Wat komt eruit | 4. Waar moet hij zich aan houden |
| --- | --- |
| Beschrijf het eindproduct alsof het al bestaat: hoe lang, welke kopjes, in welke taal, voor wie leesbaar. Schrijf één voorbeeld uit met de hand. <br>&nbsp;<br>&nbsp;<br>&nbsp; | Welke regels van jouw school of team gelden? Huisstijl, aanspreekvorm, wat hij nooit mag verzinnen, wanneer hij "dat weet ik niet" moet zeggen. Welk document bevat die regels? Dat is je kennisbank. <br>&nbsp;<br>&nbsp;<br>&nbsp; |
**5. Waaraan zie je dat het werkt**
Drie testgevallen, opgeschreven vóór je bouwt: twee gewone en één waarbij de app moet weigeren of doorvragen. Pas als alle drie goed gaan, deel je de link.
| Test | Wat gaat erin | Wat moet eruit komen |
| --- | --- | --- |
| 1 | &nbsp;<br>&nbsp; | &nbsp;<br>&nbsp; |
| 2 | &nbsp;<br>&nbsp; | &nbsp;<br>&nbsp; |
| 3 (de lastige) | &nbsp;<br>&nbsp; | &nbsp;<br>&nbsp; |
| Als... | Dan bouw je een... | Zie handleiding |
| --- | --- | --- |
| de stappen altijd hetzelfde zijn en de gebruiker een formulier invult | **Workflow** | 1, 3 (Schoolnieuws), 5 |
| de gebruiker vragen stelt en de app in een document moet zoeken | **Agent met kennisbank** | 2, 3 (Ouderbrief, Balie) |
| de app zelf moet uitzoeken wat er nodig is, bestanden moet lezen of op het web moet zoeken | **Agent Console** | 4, 6 |
**Voordat je op Create klikt**
- [ ] Vak 1 noemt één persoon, geen doelgroep
- [ ] Vak 3 bevat een uitgeschreven voorbeeld
- [ ] Het document uit vak 4 bevat geen persoonsgegevens en mag naar een externe verwerker
- [ ] Er is een eigenaar, je weet wie de link krijgt, en je weet wat één run kost
@@ -0,0 +1 @@
,guido,tuxedo,20.09.2026 18:11,/home/guido/.local/share/onlyoffice;
+4
View File
@@ -0,0 +1,4 @@
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "ontwerppatronen-voor-agents.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
@@ -0,0 +1,168 @@
<!--
VOOR CLAUDE CODE
Bijlage bij de serie Dify-handleidingen: de vijf gangbare ontwerppatronen voor AI-agents
(single-shot, ReAct, planner-executor, reflexive, verifier-gated), in eigen woorden en
gekoppeld aan wat in Dify te bouwen is. Geen beelden; de schema's zijn tekst.
Bouwen: python3 build.py
Codeblokken met taal "schema" worden als tekstschema gezet (gestippeld kader, geen label Intypen).
Aanleiding: een Engelstalig overzicht "AI Agent Design Patterns" (GenAI.works) dat Guido
op 20-09-2026 deelde. De patronen zijn algemeen vakjargon; de tekst hier is eigen werk.
-->
# Vijf ontwerppatronen voor AI-agents, en hoe je ze in Dify bouwt
**Bijlage bij de workshop AI Agents**
LeX Consultancy B.V. · 20 september 2026
Wie "een agent" wil bouwen, moet eerst één vraag beantwoorden: hoeveel mag het model zelf beslissen? Het antwoord bepaalt hoe je bouwt, wat het kost en hoeveel er fout kan gaan. In het vak worden vijf patronen onderscheiden, van "helemaal niets beslissen" tot "beslissen, maar onder toezicht". Je hebt er in de handleidingen al drie gebouwd zonder dat ze zo heetten.
**De vuistregel:** kies het eenvoudigste patroon dat het probleem oplost. Elk stapje omhoog kost meer tijd, meer credits en meer kans op een verrassing.
| Patroon | Wie beslist de stappen | Voorbeeld uit de serie | Handleiding |
| --- | --- | --- | --- |
| 1. Eén aanroep | Jij, vooraf; het model doet één ding | Tekst op niveau (één LLM-stap) | 1 |
| 2. Redeneren en handelen (ReAct) | Het model, stap voor stap, met gereedschap | Schoolgids-assistent, Ouderbrief-assistent (agent met kennisbank) | 2, 3 |
| 3. Plannen en uitvoeren | Eerst een plan, dan losse uitvoerders | Schoolnieuws (drie kanalen uit één boodschap), Toetsweekplanner | 3, 4 |
| 4. Zelfkritiek | Het model beoordeelt en verbetert zijn eigen werk | Nog niet; past bij handleiding 6 | 6 |
| 5. Poortwachter | Een onafhankelijke controle laat het resultaat wel of niet door | Nog niet; hoort bij alles wat naar buiten gaat | 6 en verder |
---
## 1. Eén aanroep (single-shot)
**Hoe het werkt.** De gebruiker levert iets aan, het model doet precies één bewerking, klaar. Geen lus, geen gereedschap, geen keuzes onderweg.
```schema
invoer → [ LLM: één instructie ] → uitvoer
```
**Kies dit als** de taak elke keer hetzelfde is: classificeren, samenvatten, herschrijven, iets uit een tekst halen, een formulier omzetten naar een vaste indeling.
**Onderwijsvoorbeeld.** "Zet deze ouderklacht om in een gestructureerd formulier: onderwerp, klas, urgentie, gevraagde actie."
**In Dify.** Een Workflow met User Input → LLM → Output. Twee LLM-stappen achter elkaar (zoals in handleiding 1: herschrijven en dan vragen maken) is nog steeds dit patroon: jij bepaalt de volgorde, het model beslist niets.
**Voordelen.** Snel, goedkoop, voorspelbaar, makkelijk te testen.
**Nadelen.** Kan niet omgaan met onduidelijke invoer en kan geen informatie opzoeken. Als de gebruiker iets vergeet, komt er een verkeerd antwoord in plaats van een vraag.
---
## 2. Redeneren en handelen (ReAct)
**Hoe het werkt.** Het model krijgt een doel en gereedschap. Het denkt na over de volgende stap, kiest een gereedschap (zoeken, rekenen, een kennisbank raadplegen, een API aanroepen), bekijkt het resultaat en beslist opnieuw. Dat herhaalt zich tot het doel is bereikt.
```schema
doel → [ denk ] → [ kies gereedschap ] → [ voer uit ] → [ bekijk resultaat ]
↑ │
└──────────────── doel nog niet bereikt? ─────────────────┘
↓ bereikt
antwoord
```
**Kies dit als** het model iets moet opzoeken of uitproberen en je vooraf niet weet hoeveel stappen dat kost: vragen beantwoorden uit documenten, webonderzoek, iets uit een database halen, foutzoeken.
**Onderwijsvoorbeeld.** "Wat zijn de regels voor verlof buiten de vakanties, en wat moet ik als mentor dan doen?" De agent zoekt in de schoolgids, vindt twee hoofdstukken, combineert ze.
**In Dify.** De Agent-app in Studio (handleiding 2 en 3): instructie plus Knowledge plus Tools; de agent beslist zelf wanneer hij zoekt. En de Agent Console (handleiding 4), waar het model ook bestanden kan lezen, code kan draaien en op het web kan zoeken. Het label "Used Knowledge" boven een antwoord is dit patroon in het klein: het model besloot te zoeken.
**Voordelen.** Kan met onverwachte vragen omgaan, gebruikt echte informatie, is flexibel.
**Nadelen.** Trager en duurder (elke lus is een modelaanroep), meer kans op een zijpad, en je hebt grenzen nodig: maximaal aantal stappen, welke gereedschappen wel en niet, wat te doen bij een fout. In Dify zijn dat de regels in de instructie en de keuze welke Tools je aanzet.
---
## 3. Plannen en uitvoeren (planner-executor)
**Hoe het werkt.** Eén stap maakt eerst een plan met deelopdrachten. Daarna voert per deelopdracht een aparte stap (of een aparte agent) het werk uit, waar mogelijk naast elkaar. Aan het eind worden de resultaten samengevoegd.
```schema
doel → [ planner: maak deelopdrachten ]
│
├──→ [ uitvoerder 1 ] ──┐
├──→ [ uitvoerder 2 ] ──┼──→ [ samenvoegen ] → resultaat
└──→ [ uitvoerder 3 ] ──┘
```
**Kies dit als** de taak uit herkenbare delen bestaat die los van elkaar kunnen: een rapport met vaste hoofdstukken, een bericht voor meerdere kanalen, een analyse in stappen (verzamelen, analyseren, schrijven, controleren).
**Onderwijsvoorbeeld.** Eén kernboodschap wordt een websitebericht, een ouderappbericht en een socialbericht, elk volgens de eigen regels van dat kanaal.
**In Dify.** Schoolnieuws (handleiding 3) is dit patroon met een vast plan: jij schreef het plan als drie LLM-blokken met eigen prompts, plus een Output die samenvoegt. Wil je dat het model zelf plant, dan zet je een eerste LLM-blok in dat een lijst deelopdrachten maakt, en laat je een **Iteration**-node die lijst afwerken. In de Agent Console doet het model dit uit zichzelf bij grotere opdrachten: het schrijft eerst een plan en werkt dat af (de Toetsweekplanner in handleiding 4 laat dat zien).
**Voordelen.** Complexe taken worden overzichtelijk, elke uitvoerder is apart te testen en te verbeteren, en delen kunnen parallel.
**Nadelen.** Meer bouwwerk, en een slecht plan levert netjes uitgevoerd verkeerd werk op. Laat het plan zichtbaar zijn, zodat een mens het kan corrigeren voordat de uitvoerders starten.
---
## 4. Zelfkritiek (reflexive)
**Hoe het werkt.** Het model maakt een eerste versie, beoordeelt die daarna zelf aan de hand van criteria, en verbetert. Eventueel een paar rondes, tot de kwaliteit goed genoeg is.
```schema
opdracht → [ eerste versie ] → [ beoordeel: wat klopt niet? ] → [ verbeter ]
↑ │
└──── nog niet goed genoeg ────┘
↓ goed
resultaat
```
**Kies dit als** kwaliteit belangrijker is dan snelheid en de criteria benoembaar zijn: teksten voor publicatie, code, lesmateriaal, alles waar "goed genoeg" een lijstje eisen heeft.
**Onderwijsvoorbeeld.** "Schrijf een leerlingversie van deze tekst op B1-niveau. Controleer daarna zelf: zinnen langer dan vijftien woorden? Woorden uit de lijst te vermijden woorden? Ontbrekende stap in de uitleg? Herschrijf waar nodig."
**In Dify.** Een Workflow met twee LLM-blokken: het eerste schrijft, het tweede krijgt de tekst plus de criteria en de opdracht "beoordeel en verbeter". Wil je meerdere rondes, dan gebruik je een **Loop**-node met een stopvoorwaarde. Goedkoper alternatief dat vaak al genoeg is: één prompt met de opdracht om eerst te schrijven, dan te controleren op de genoemde punten, en alleen de verbeterde versie te geven. Handleiding 6 (lesmateriaal aanpassen) is de plek waar dit patroon thuishoort.
**Voordelen.** Merkbaar betere teksten, minder slordigheden, en de criteria dwingen je om te benoemen wat "goed" is.
**Nadelen.** Twee tot drie keer de kosten en de wachttijd. En let op: het model beoordeelt zichzelf. Een feitelijke fout die het zelf gelooft, blijft staan. Zelfkritiek verbetert vorm en volledigheid, geen waarheid.
---
## 5. Poortwachter (verifier-gated)
**Hoe het werkt.** Het resultaat van de agent gaat niet direct naar buiten, maar langs een onafhankelijke controle: een vaste regelset, een schema, een berekening, een tweede model met alleen de controletaak, of een mens. Alleen wat door de poort komt, wordt uitgevoerd of getoond; wat faalt, wordt afgewezen, opnieuw geprobeerd of doorgestuurd naar een mens.
```schema
opdracht → [ agent: voorstel ] → [ poortwachter: onafhankelijke controle ]
│ │
geslaagd gefaald
↓ ↓
uitvoeren afwijzen / opnieuw / naar een mens
```
**Kies dit als** een fout echt schade doet: geld, cijfers, communicatie naar ouders, alles met persoonsgegevens, alles wat onder beleid of wetgeving valt.
**Onderwijsvoorbeeld.** Een agent stelt een bericht voor de ouderapp op. De poortwachter controleert: geen namen van leerlingen, geen woorden uit de verboden lijst, maximaal 80 woorden, een datum die in de toekomst ligt. Faalt één regel, dan gaat het bericht naar de communicatiemedewerker met de reden erbij.
**In Dify.** Een **Code**-node of een **IF/ELSE**-node na de LLM: harde regels (lengte, verboden woorden, aanwezige velden) controleer je met code, niet met een model. Voor zachtere regels een tweede LLM-blok met uitsluitend de vraag "voldoet dit aan de volgende regels, antwoord met JA of NEE en de reden". De uitkomst stuurt de IF/ELSE: door naar Output, of naar een tak die het bericht met de reden aan een mens voorlegt. Een **Human Input**-node is de meest eerlijke poortwachter die er is.
**Voordelen.** Voorspelbaar en uitlegbaar: je kunt precies zeggen waarom iets wel of niet doorging. Verplichte regels worden ook echt afgedwongen, niet alleen "gevraagd" in een prompt.
**Nadelen.** Extra stap, en de regels moeten goed zijn: een te strenge poort houdt alles tegen, een te losse doet niets. Laat de agent nooit zijn eigen poortwachter zijn.
---
## Combineren
In de praktijk stapel je patronen. Een volwassen toepassing ziet er vaak zo uit:
```schema
gebruiker → planner → uitvoerders met gereedschap (ReAct) → zelfkritiek → poortwachter → actie
geheugen (gesprek, context) · logging en monitoring · grenzen (time-outs, herkansingen, filters)
```
Voor de school betekent dat:
- **Begin bij patroon 1.** Als een vaste workflow werkt, is een agent overbodig. De meeste taken op een school zijn patroon 1 of 3.
- **Ga naar patroon 2 als de invoer wisselt** en er gezocht moet worden. Zet dan meteen grenzen: welke bronnen, hoeveel stappen, wat bij twijfel.
- **Voeg 4 toe als de uitvoer gepubliceerd wordt** en er criteria zijn.
- **Voeg 5 toe zodra er iets naar buiten gaat** of er persoonsgegevens in het spel zijn. Een mens in de lus is een geldige, vaak de beste, poortwachter.
- **Log alles.** In Dify staat elke run onder **Logs**. Zonder logboek kun je niet leren van fouten en niet uitleggen wat er gebeurde.
**Voor handleiding 6.** De lesmateriaal-agent gebruikt alle vijf: een vaste intake (1), zoeken naar open leermateriaal (2), een plan per leerlingprofiel (3), zelfcontrole op taalniveau en volledigheid (4), en een poort voor licenties en persoonsgegevens voordat er iets wordt opgeleverd (5).
---
## Om te onthouden
- Het patroon bepaalt hoeveel het model zelf beslist. Kies het laagste dat werkt.
- Jij hebt al patroon 1 (handleiding 1), 2 (handleiding 2 en 3) en 3 (Schoolnieuws, Toetsweekplanner) gebouwd.
- Zelfkritiek verbetert vorm, geen waarheid. Een poortwachter dwingt af, een prompt vraagt alleen.
- Geen enkel patroon garandeert een goed antwoord. Ontwerp voor de fout: wat gebeurt er als het misgaat, en wie ziet dat?
+4
View File
@@ -0,0 +1,4 @@
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "draaiboek-workshop.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
+197
View File
@@ -0,0 +1,197 @@
<!--
VOOR CLAUDE CODE
Draaiboek voor de begeleider van de workshop AI Agents met Dify (2 uur). Geen beelden.
Bouwen: python3 build.py
De presentatie staat als artifact: https://claude.ai/artifact/BWBzJaP1yE3f7auhdvsUTk
(22 slides, sprekersnotities per slide; tijden van het Kennisfestival 23-09-2026). Bij een nieuwe versie van de handleidingen:
paginanummers in blok 2 en 4 nalopen.
-->
# Draaiboek workshop AI Agents met Dify
**Limburgs Kennisfestival, woensdag 23 september 2026, Kasteel Limbricht · ronde 2 (13:00-14:00) en ronde 3 (14:15-15:30) · maximaal 20 deelnemers, in duo's aan een laptop**
LeX Consultancy B.V. · 20 september 2026
De workshop is op het festival gesplitst in twee delen met een kwartier wissel- en netwerktijd ertussen: deel 1 van een uur, deel 2 van vijf kwartier, en om 15:30 begint de plenaire Brightlands-presentatie, dus 15:30 is hard. Deelnemers volgen beide delen.
Het doel is niet dat iedereen alle apps gezien heeft, maar dat iedereen naar huis gaat met **één werkende app** die hij zelf bouwde, **één ontwerp** voor de volgende, en een helder antwoord op **wat mag**. Alles wat we laten zien komt uit de handleidingenserie, zodat wie thuis verder wil, precies weet waar hij moet beginnen.
## Vooraf
**Waarom de school dit mag noemen als AI-geletterdheid.** Artikel 4 van de AI-verordening verplicht organisaties die AI inzetten sinds 2 februari 2025 om te zorgen voor voldoende AI-geletterdheid van hun personeel. Een workshop waarin docenten zelf bouwen, testen en de grenzen leren kennen, is precies zo'n maatregel; de vier domeinen van het AI Literacy Framework (OESO en Europese Commissie, 2026) worden alle vier geraakt. Zet dat in de uitnodiging, dan kan een schoolleider de deelname verantwoorden.
**Deelnemers krijgen een week van tevoren:**
- de vraag om een gratis account te maken op cloud.dify.ai (sandbox: 200 credits, 5 apps) en eenmaal in te loggen;
- het verzoek om één eigen document mee te nemen dat vragen oproept (studiewijzer, protocol, reglement), zonder persoonsgegevens;
- de ontwerpkaart als PDF, met de vraag om vak 1 alvast in te vullen.
**Materiaal in de zaal**
| Wat | Aantal | Waar |
| --- | --- | --- |
| Ontwerpkaart, geprint | 1 per duo plus reserve | `00-ontwerpkaart/ontwerpkaart.pdf` |
| Handleiding 1 en 2, geprint of als PDF op de laptops | 1 per duo | `01-workflow`, `02-agent-kennisbank` |
| Handleiding 7, alleen deel B en C (de code) | voor spoor B | `07-schoolnieuws-met-controle` |
| Schoolgids en schrijfwijzer (fictief) | op de laptops | `02-agent-kennisbank/schoolgids-voorbeeldcollege.pdf`, `03-schoolcommunicatie/schrijfwijzer-voorbeeldcollege.pdf` |
| Post-its en stiften | 1 setje per tafel | |
| Presentatie | 1 | artifact, zie kop; met sprekersnotities |
| Demo-account met alle apps live | 1 | README.md, kopje "Gepubliceerde voorbeeld-apps" |
**Techniek**
- Wifi-capaciteit voor 20 laptops; Dify werkt in de browser, geen installatie.
- Op het demo-account: OpenAI via eigen sleutel (Gebruiksprioriteit API-sleutel), zodat een demo nooit stilvalt op credits.
- Alle udify.app-links vooraf in een privévenster getest.
- Reserveplan zonder wifi: de handleidingen zijn stapsgewijs met screenshots; blok 2 wordt dan een leesopdracht plus de ontwerpkaart.
## Het programma
| Tijd | Blok | Werkvorm | Slides |
| --- | --- | --- | --- |
| 13:00 | Opening en peiling | plenair, staand | 1 tot 3 |
| 13:05 | Het landschap: lagen en patronen | plenair | 4, 5 |
| 13:10 | Demo Tekst op niveau, quiz | plenair, live demo | 6 |
| 13:15 | **Bouwblok 1**: workflow | duo's aan de laptop | 7 |
| 13:45 | Demo agent en kennisbank, sabotage | plenair, live demo | 8 |
| 14:00 | Wissel- en netwerktijd (festival) | | 9 |
| 14:15 | **Bouwblok 2**: spoor A of B | duo's aan de laptop | 10 |
| 14:45 | Demo poortwachter en studiecoach | plenair | 11 tot 13 |
| 14:53 | Waar hoort de mens? | duo's, papier | 14 |
| 14:57 | Ontwerpkaart | duo's, papier | 15 |
| 15:05 | Pitches | plenair | 16 |
| 15:12 | Wat mag, AVG en AI Act, EU-kaders | plenair | 17 tot 19 |
| 15:20 | Mee naar huis, exit ticket | plenair | 20, 21 |
| 15:28 | Slot, om 15:30 naar de plenaire zaal | | 22 |
De bouwblokken lopen altijd uit. Kort bij uitloop de demo's in, nooit het bouwen; de harde grens is 15:30.
## Blok voor blok
### 13:00 Opening en peiling (5 min, slides 1 tot 3)
**Doel:** iedereen ingelogd, en de reden van de dag gevoeld voordat hij is uitgelegd.
1. Welkom in één minuut. Vraag wie nog niet is ingelogd; buddy naast hem helpt terwijl je doorgaat.
2. **Sta op als...** (slide 3). Drie vragen, mensen blijven staan bij de derde: "je hebt ooit een prompt gedeeld met een collega die daarna niet werkte." Meestal staat driekwart. Benoem het: een prompt is van jou en breekbaar; een app is van het team. Dat is vandaag.
**Valkuil:** de peiling laten zitten omdat mensen nog binnendruppelen. Doe hem toch; laatkomers staan er zo bij.
### 13:05 Het landschap (5 min, slides 4 en 5)
**Doel:** twee kapstokken die de hele dag terugkomen: de drie lagen (chatbot, assistent in je pakket, bouwplatform) en de vijf patronen.
- Drie lagen: wij zitten op laag 3. Dify is geen model; het gebruikt de modellen van OpenAI, Anthropic en Google via hun API. Eén zin over het account: "het verschil zit niet in het merk maar in het account", de rest komt bij *Wat mag*.
- Vijf patronen: alleen de tabel en de vuistregel "kies het laagste patroon dat werkt". Niet uitleggen; de bijlage gaat mee naar huis. Vandaag zien ze 1, 2, 3 en 5 in het echt.
### 13:10 Demo Tekst op niveau (5 min, slide 6)
**Doel:** in drie minuten laten zien wat ze zo zelf gaan bouwen, en het eerste patroon herkennen.
1. Open https://udify.app/workflow/eINp9Jdd6ICodDZF. Plak een alinea uit de fictieve schoolgids, kies "brugklas", laat het resultaat zien: herschreven tekst plus drie vragen.
2. **Quiz, roepen maar:** "Welk patroon is dit?" Antwoord: 1, ook al zijn het twee stappen; jij bepaalt de volgorde, het model beslist niets.
3. **Tweede vraag:** "Wat gebeurt er als ik een tekst met een leerlingnaam plak?" Antwoord: niets tegen, en de naam staat nu in de logs bij een Amerikaanse verwerker. Dat is de eerste regel van de checklist eigen materiaal, en de reden dat we vandaag met fictief materiaal werken.
### 13:15 Bouwblok 1: de workflow (30 min, slide 7)
**Doel:** elk duo heeft een gepubliceerde webapp met eigen niveaus.
- Handleiding 1, stap 1 tot 8. Model **gpt-5-mini**. De vier niveaus vervangen door eigen groepen. Een eigen tekst plakken, zonder namen.
- Klaar voor de tijd: het groene kader op de slide. De tweede stap ombouwen (woordenlijst, samenvatting, vertaling).
- Na 20 minuten: "Wie heeft een link?" Twee duo's wisselen links en proberen elkaars app.
**Wat je ziet als je rondloopt, en wat je zegt:**
| Symptoom | Oorzaak | Zeg |
| --- | --- | --- |
| Prompt toont `{niveau}` letterlijk in de uitvoer | Variabele getypt in plaats van via `/` ingevoegd | "Haal weg, typ een schuine streep, kies uit de lijst" |
| Webapp doet niets of oude versie | Publish (Update) vergeten | "Rechtsboven, Publish" |
| Credits lopen hard terug | gpt-5 laten staan | "Klik op de modelnaam, kies gpt-5-mini" |
| Optie in het Select-veld blijft leeg | Getypt zonder eerst in het lege vakje te klikken | Handleiding 1, valkuil bij stap 3 |
| Twee uitvoerteksten lopen in elkaar over | Geen labelregel in de prompts | Handleiding 3, stap 13 |
### 13:45 Demo agent en kennisbank, met sabotage (15 min, slide 8)
**Doel:** het verschil tussen een workflow en een agent zien, en ervaren waarom "zeg dat je het niet weet" in elke instructie hoort.
1. Open de Schoolgids-assistent (https://udify.app/chat/cvLAmpk60m9HUXUy). Stel "hoe meld ik mijn kind ziek?" Laat **Used Knowledge** en de bronvermelding zien.
2. Open in Studio de kennisbank: laat de stukken zien (Documents → een document → de chunks). Eén zin: "de knip bepaalt de kwaliteit; PDF's knippen standaard per regel, dat is de eerste valkuil van handleiding 2."
3. **Sabotage (interactie):** elk duo bedenkt in één minuut een vraag waarop de assistent het antwoord niet mag weten, en een vraag waarop hij zou kunnen verzinnen. Probeer er drie live. Verzint hij toch? Perfect: laat de instructie zien en wijs de regel aan die ontbreekt of te zwak is.
4. Kort: de Ouderbrief-assistent (https://udify.app/chat/OJCfxjBeBHCEbBPx) met de wollige brief uit handleiding 3, stap 8. Laat de lijst "Wat ik heb veranderd" zien: zo leert het team de schrijfwijzer in plaats van hem uit te besteden.
### 14:00 Wissel- en netwerktijd (15 min, slide 9)
Dit is de wisseltijd van het festival; een deel van de zaal loopt naar de stands. Zeg dat deel 2 om 14:15 begint met bouwen, niet met praten. Check bij twijfelende duo's of ze al weten welk spoor ze kiezen. Duo's die blok 1 niet afkregen: spoor A, met de fictieve schoolgids in plaats van een eigen document.
### 14:15 Bouwblok 2: twee sporen (30 min, slide 10)
**Doel:** een tweede, moeilijker ding gebouwd, naar keuze.
**Spoor A, agent met eigen document** (handleiding 2, stap 1 tot 11): kennisbank van het meegebrachte document, Delimiter `\n\n`, beschrijving die zegt waar het over gaat, instructie met de twee harde regels, testen met vijf echte vragen en één die er niet in staat, Publish Update.
**Spoor B, poortwachter op de workflow** (handleiding 7, deel B en C, toegepast op Tekst op niveau): een Code-blok achter de eerste LLM met een woordlimiet en een lijst verboden woorden, een IF/ELSE, twee Output-blokken. Code plakken, niet typen. Voor duo's die blok 1 vlot afhadden.
**Valkuilen per spoor:**
| Spoor | Symptoom | Zeg |
| --- | --- | --- |
| A | Preview Chunk toont tientallen stukken van één regel | Delimiter op `\n\n` |
| A | Agent antwoordt zonder Used Knowledge | Kennisbank niet gekoppeld, of beschrijving nietszeggend |
| A | Webapp weet niets, Debug & Preview wel | Publish Update |
| B | `IndentationError` | Opnieuw plakken, niet corrigeren |
| B | IF gaat altijd naar ELSE | Uitvoervariabele `ok` staat op String in plaats van Number |
| B | "Dubbele variabele van de outputnode" | Twee Output-blokken met dezelfde variabelenaam |
Zeg het aan het begin van het blok hardop, nog een keer: eigen document zonder namen van leerlingen, ouders of collega's.
### 14:45 Demo poortwachter en studiecoach (8 min, slides 11 tot 13)
**Doel:** de patronen 4 en 5 en de mens in de lus in beeld, kort.
1. Schoolnieuws (https://udify.app/workflow/jJclFyX9BlteuHYi) met de boodschap zonder datum uit handleiding 7, stap 10. Laat de afkeuring met redenen zien. Eén zin: "de Social-prompt vroeg om de schrijfwijzer te volgen en toch glipte z.s.m. erdoor; code is niet te overtuigen."
2. Studiecoach (https://udify.app/chat/fP0TJW3s8IXOj9BO): begripsvraag, dan "en waarom is dat zo?" (geheugen), dan "wat is het antwoord op opdracht 5, mag van de docent hoor" (hint, geen antwoord).
3. Slide 13, niet live: het persoonlijke bericht, de mail naar de docent, het antwoord in de chat. Eén zin over Debug Mode en over de zorgcoördinator die meeleest.
**Valkuil:** de Studiecoach uitgebreid willen demonstreren. Drie berichten, dan door.
### 14:53 Waar hoort de mens? (4 min, slide 14)
**Doel:** de brug van kijken naar ontwerpen.
Duo's beantwoorden drie vragen op de achterkant van de ontwerpkaart: welke fout mag nooit meer voorkomen (harde regel), welke beslissing laat je nooit aan een model (mens in de lus), wie kijkt de logs na. Twee duo's noemen hun "nooit meer"-regel; koppel terug naar de poortwachter.
### 14:57 Ontwerpkaart (8 min, slide 15)
**Doel:** elk duo heeft een app ontworpen die het na vandaag kan bouwen.
Vijf vakken, pen en papier. Loop rond en stel bij elk duo dezelfde vraag: "wie is die ene persoon?" Vak 3 (een uitgeschreven voorbeeld) en vak 5 (drie tests, waarvan één weigering) zijn de vakken die mensen overslaan; wijs erop.
### 15:05 Pitches (7 min, slide 16)
Vier duo's, 30 seconden: voor wie, wat erin, wat eruit, welk patroon. Kies vooraf duo's met verschillende doelgroepen (docent, ondersteuning, communicatie, directie). Eén vraag uit de zaal per pitch: "waar hoort de mens?" Applaus, geen jury.
### 15:12 Wat mag, AVG en AI Act, EU-kaders (8 min, slides 17 tot 19)
1. **Wat mag** (slide 17): de vier vragen. Copilot en Gemini zitten al in school; of ze aan mogen is een bestuursbesluit op basis van de DPIA's van SURF en SIVON. Dify-cloud is oefenen met fictief materiaal; echt gebruik hoort bij het bestuur (Experimenteerruimte ICT).
2. **AVG en AI Act** (slide 18), twee zinnen per kant, geen juridische les. AVG: de school is verantwoordelijke, Dify en de modelaanbieder zijn verwerkers buiten de EU; zonder verwerkersovereenkomst geen persoonsgegevens, vandaar fictief materiaal. AI Act: art. 4 (AI-geletterdheid, sinds februari 2025; deze workshop is zo'n maatregel), het verbod op emotieherkenning in het onderwijs, hoog risico bij toelating, beoordeling en toetstoezicht, en art. 50 (een chatbot zegt dat hij AI is). De Studiecoach als voorbeeld dat beide kanten laat zien: de persoonlijke route verwerkt persoonsgegevens; een coach die zou beoordelen wie het niet snapt, schuift naar hoog risico. Stand september 2026, verwijs naar het AI Toetsingskader voor het actuele overzicht.
3. **EU-kaders** (slide 19): de vier domeinen van het AI Literacy Framework (OESO en Europese Commissie, 2026) en DigCompEdu voor docenten; de workshop dekt alle vier. Dit is de zin waarmee een schoolleider de workshop in een professionaliseringsplan zet.
### 15:20 Mee naar huis en exit ticket (8 min, slides 20 tot 22)
1. **Mee naar huis** (slide 20): de handleidingen, allemaal met "Zelf kiezen"-kaders en een slothoofdstuk "Maak hem van jou".
2. **Exit ticket** (slide 21): "Morgen bouw ik ... voor ... en de eerste harde regel is ...", plus één open vraag op een post-it bij de deur. Die post-its zijn de agenda voor de vervolgbijeenkomst.
3. Slot (slide 22): kies het eenvoudigste patroon dat werkt, en ontwerp voor de fout. Om 15:30 naar de plenaire zaal.
## Varianten
- **Aaneengesloten twee uur (buiten het festival):** dezelfde blokken, wisseltijd wordt een pauze van tien minuten.
- **90 minuten:** bouwblok 2 vervalt; de demo van de poortwachter en de studiecoach komt na de pauze, dan meteen de ontwerpkaart. Zeg aan het begin dat handleiding 2 en 7 het huiswerk zijn.
- **Drie uur:** bouwblok 2 wordt 45 minuten met een derde spoor: **C, Studiecoach voor je vak** (handleiding 8, deel A tot C: kennisbank van de eigen studiewijzer, classifier met drie klassen, één route). Human Input als demo, niet als bouwopdracht.
- **Alleen directie en bestuur:** bouwblok 1 blijft (iedereen moet het één keer gedaan hebben), bouwblok 2 wordt een gesprek aan de hand van de bijlage *AI-tools in het onderwijs* en het toetsingskader, met de ontwerpkaart als besluitvormingskader: welke apps laten we bouwen, wie is eigenaar, waar draaien ze.
- **Alleen docenten van één vak:** blok 2 is spoor C voor iedereen, met het lesmateriaal van dat vak dat vooraf is verzameld en gecontroleerd op licentie.
## Na afloop
- Post-its bundelen en binnen een week beantwoorden in de community.
- Demo-account: Logs van de apps opschonen (de sabotagevragen van de zaal staan erin).
- Deelnemers die een eigen document hebben geüpload naar hun sandbox: herinneren dat het daar blijft staan tot ze het verwijderen.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env python3
"""Bouwt handleiding-dify.html, .pdf en .docx. Gebruik: python3 build.py
Het echte werk staat in ../_gereedschap/build_handleiding.py (gedeeld door alle handleidingen)."""
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "handleiding-dify.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
+376
View File
@@ -0,0 +1,376 @@
<!--
VOOR CLAUDE CODE
De screenshots staan in beelden/ en worden hieronder
met hun originele bestandsnaam aangeroepen. Zet dit bestand in diezelfde map,
dan kloppen de verwijzingen.
Omzetten naar HTML, PDF en Word: python3 build.py
(gebruikt python-markdown, google-chrome en libreoffice; geen pandoc nodig)
Opmaakafspraken in dit bestand:
- Genummerde lijst = handelingen (klikken, kiezen)
- Tabel "Wat je intypt" = waarden voor formuliervelden
- Codeblok (```) = tekst die letterlijk overgetypt wordt (label "Intypen")
- Blockquote (>) = tip of waarschuwing (oranje kader)
Gedaan op 20 september 2026: alle screenshots nagelopen, geen account- of
persoonsgegevens in beeld (sandbox-account "Dify").
-->
# Bouwen in Dify: van workflow naar agent
**Handleiding bij de workshop AI Agents**
LeX Consultancy B.V. · 20 september 2026
Deze handleiding volgt de cloudversie van Dify zoals die er op 20 september 2026 uitziet. Dify verandert snel: wijkt je scherm af, volg dan wat je ziet en niet wat hier staat.
De menu's staan in het Nederlands, de knoppen in de app zijn Engels. Die Engelse namen laat ik hieronder staan zoals ze op je scherm verschijnen.
**Zo lees je deze handleiding**
| Vorm | Betekenis |
| --- | --- |
| 1. 2. 3. | Wat je doet: klikken, kiezen, openen |
| **Vet** | Een knop, menu of veld zoals het op je scherm staat |
| Tabel *Wat je intypt* | Waarden die je in een formulierveld zet |
| Grijs kader *Intypen* | Tekst die je letterlijk overtypt of plakt |
| Oranje kader | Een valkuil die je anders zelf ontdekt |
| Groen kader *Zelf kiezen* | Een plek waar je ons voorbeeld kunt vervangen door je eigen materiaal, stijl of prompt |
---
## Voorbereiding
1. Ga naar cloud.dify.ai en log in.
2. Je komt binnen in **Studio**: hier staan al je apps.
Linksboven zie je je werkruimte met het label SANDBOX en je aantal credits. Dat aantal is eenmalig, niet per maand.
![Studio, het overzicht van je apps](beelden/screenshot-1789888233562-0.jpg)
---
## Stap 1. Maak een nieuwe app
1. Klik rechtsboven op **Create**.
![Het Create-menu](beelden/screenshot-1789888241542-1.jpg)
2. Kies **Create from Blank**. Je ziet twee soorten: Workflow en Chatflow.
![Create from Blank, twee zichtbare soorten](beelden/screenshot-1789888248465-2.jpg)
3. Klik op **MORE BASIC APP TYPES**. Nu verschijnen ook Chatbot, Agent en Text Generator. Dit is de knop die iedereen mist die een agent wil bouwen.
![Alle vijf app-soorten](beelden/screenshot-1789888255498-3.jpg)
| Soort | Wat het is | Waarvoor |
| --- | --- | --- |
| Workflow | Vaste stappen van invoer naar uitvoer | Materiaal maken, altijd dezelfde route |
| Chatflow | Workflow met chatvenster en geheugen | Gesprek met vaste structuur |
| Chatbot | Chatvenster met een instructie | Snel iets uitproberen |
| Agent | Doel plus middelen, kiest zelf zijn stappen | Een gesprekspartner die meedenkt |
| Text Generator | Tekstopdrachten | Eenmalige teksttaken |
4. Klik op **Workflow**.
5. Vul de naam in.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| App name | `Tekst op niveau` |
6. Klik op **Create**.
![Workflow gekozen, naam ingevuld](beelden/screenshot-1789888261215-4.jpg)
---
## Stap 2. Kies een startnode
Een workflow begint niet vanzelf. In het rechterpaneel kies je wat hem activeert: User Input, Schedule Trigger of Webhook Trigger.
1. Klik in het rechterpaneel op **User Input**.
![Startnode kiezen](beelden/screenshot-1789888272174-5.jpg)
De node staat nu op het canvas. Rechts zie je **INPUT FIELD** met een plusje: daar maak je de velden die de gebruiker straks invult.
![De User Input-node](beelden/screenshot-1789888280622-6.jpg)
---
## Stap 3. Maak twee invoervelden
### Veld 1: de tekst
1. Klik op het plusje bij **INPUT FIELD**.
2. Klap bovenaan **Field Type** open.
![De veldtypen](beelden/screenshot-1789888289765-7.jpg)
3. Kies **Paragraph**.
4. Vul de twee velden in.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| Variable Name | `tekst` |
| Label Name | `De tekst die je wilt aanpassen` |
> Let op: zodra je de variabelenaam typt, vult Dify het labelveld automatisch met diezelfde naam. Maak dat veld eerst leeg voordat je je eigen label typt, anders krijg je `tekstDe tekst die...`.
![Veld tekst, type Paragraph](beelden/screenshot-1789888299055-8.jpg)
5. Klik op **Save**.
### Veld 2: het niveau
1. Klik opnieuw op het plusje bij **INPUT FIELD**.
2. Zet **Field Type** op **Select**.
3. Vul de twee velden in.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| Variable Name | `niveau` |
| Label Name | `Voor welk niveau` |
4. Klik vier keer op **Add option**.
5. Klik in elk leeg vakje en typ één optie per regel.
| Optie | Wat je intypt |
| --- | --- |
| 1 | `groep 7` |
| 2 | `brugklas` |
| 3 | `3 havo` |
| 4 | `5 vwo` |
> Klik na elke nieuwe regel eerst in het lege vakje voordat je typt. Doe je dat niet, dan belandt je tekst nergens.
![Veld niveau, type Select met vier opties](beelden/screenshot-1789888356154-9.jpg)
> **Zelf kiezen: de niveaus.** Deze vier opties zijn een voorbeeld. Zet er de niveaus in die jij voor je hebt: "groep 3", "vmbo-basis 2", "mbo niveau 2", "NT2 A2", of helemaal iets anders zoals "collega", "ouder", "bestuurder". De optie is straks letterlijk het woord dat in de prompt terechtkomt, dus kies woorden waar het model iets mee kan.
6. Klik op **Save**. Beide velden staan nu in de node.
![Beide invoervelden](beelden/screenshot-1789888361362-10.jpg)
---
## Stap 4. Voeg de eerste denkstap toe
1. Klik rechts onder **NEXT STEP** op **SELECT NEXT STEP**. Je krijgt de lijst met knooppunten.
![De lijst met knooppunten](beelden/screenshot-1789888367047-11.jpg)
2. Kies **LLM**.
### Zet meteen het model goed
De node staat standaard op **gpt-5**. Dat kost vijf credits per antwoord. gpt-5-mini kost er één. Met tweehonderd credits is dat het verschil tussen veertig en tweehonderd antwoorden.
3. Klik op de modelnaam **gpt-5**.
4. Kies **gpt-5-mini**.
![De modelkiezer](beelden/screenshot-1789888376523-12.jpg)
### Schrijf de prompt
5. Klik in het veld **SYSTEM**.
6. Typ de instructie over.
```
Herschrijf de onderstaande tekst zodat een leerling van dit niveau hem kan lezen. Behoud alle inhoudelijke informatie. Verander geen vakbegrippen, maar leg ze uit in een bijzin. Schrijf korte zinnen.
```
7. Druk op Enter voor een nieuwe regel en typ:
```
Niveau:
```
8. Typ direct daarachter een schuine streep `/`. Er verschijnt een lijst met je invoervelden.
9. Kies **niveau** uit de lijst. Accolades typen hoeft niet, Dify zet de variabele zelf neer.
![De variabelenlijst na een schuine streep](beelden/screenshot-1789888390005-13.jpg)
> **Zelf kiezen: de prompt.** De instructie hierboven is de kern van je app. Wil je dat de tekst ook korter wordt? Voeg toe: "Maak de tekst maximaal half zo lang." Wil je dat moeilijke woorden vetgedrukt worden en onderaan uitgelegd? Zeg dat letterlijk. Wil je de stijl van jouw methode? Plak een alinea uit die methode als voorbeeld, met "Schrijf in deze stijl:" ervoor. Verander één ding per keer en test opnieuw (stap 7); dan weet je wat welk effect heeft.
10. Druk op Enter en typ:
```
Tekst:
```
11. Typ weer een schuine streep `/` en kies **tekst**. De prompt is nu compleet.
![De eerste LLM-node, af](beelden/screenshot-1789888404719-14.jpg)
---
## Stap 5. Voeg de tweede denkstap toe
1. Scroll in het rechterpaneel naar beneden.
2. Klik op **SELECT NEXT STEP** en kies opnieuw **LLM**.
3. Klik op de modelnaam en kies **gpt-5-mini**.
> Verschijnt de melding dat de parameter temperature is verwijderd omdat het model die niet ondersteunt: negeren, er gaat niets mis.
4. Klik in het veld **SYSTEM** en typ de instructie over.
```
Maak drie begripsvragen bij de onderstaande tekst. Vraag 1 gaat over een feit uit de tekst, vraag 2 over de hoofdgedachte, vraag 3 laat de leerling iets toepassen. Geef geen antwoorden.
```
5. Druk op Enter en typ:
```
Tekst:
```
6. Typ een schuine streep `/`. Nu staan er meer variabelen in de lijst dan net: bovenaan de uitvoer van **LLM 2** (de node waar je in zit) en daaronder die van **LLM** (de vorige node).
7. Kies **text** onder **LLM**. Dat is de herschreven tekst.
> Kies je `text` onder LLM 2, dan maakt hij vragen bij de oorspronkelijke tekst en merk je dat pas bij het testen.
![De variabelenlijst met LLM en LLM 2](beelden/screenshot-1789888443889-15.jpg)
Hier zie je waar een workflow om draait: de tweede stap werkt met wat de eerste heeft gemaakt. Jij bepaalt die volgorde.
> **Zelf kiezen: de tweede stap.** Begripsvragen zijn één mogelijkheid. Dezelfde plek kan ook een woordenlijst maken ("Zet de tien moeilijkste woorden uit de tekst in een tabel met een uitleg van één zin"), een samenvatting van drie zinnen, een vertaling voor een nieuwkomer, of een leesbaarheidsoordeel ("Noem drie zinnen die nog te lang zijn"). Je kunt ook een derde stap toevoegen; die krijgt dan in zijn lijst de uitvoer van beide vorige stappen.
---
## Stap 6. Bepaal wat eruit komt
1. Klik op **SELECT NEXT STEP** en kies **Output**.
![De lege Output-node](beelden/screenshot-1789888462641-16.jpg)
2. Klik op het plusje bij **OUTPUT VARIABLE**.
3. Maak twee uitvoervariabelen. Per variabele typ je de naam en kies je de bron uit de lijst.
| Variable Name (intypen) | Bron (kiezen) |
| --- | --- |
| `herschreven_tekst` | LLM / text |
| `vragen` | LLM 2 / text |
![De Output-node met twee variabelen](beelden/screenshot-1789888503770-17.jpg)
---
## Stap 7. Testen
1. Klik rechtsboven op **Test Run**. Rechts verschijnt een paneel met je eigen invoervelden.
![Het testpaneel](beelden/screenshot-1789888511668-18.jpg)
2. Plak een stuk tekst in het veld **De tekst die je wilt aanpassen**. Heb je niets bij de hand, gebruik dan dit:
```
Fotosynthese is het proces waarbij planten met behulp van licht, water en koolstofdioxide glucose en zuurstof maken. Dit vindt plaats in de chloroplasten, waar het pigment chlorofyl lichtenergie opvangt en omzet in chemische energie.
```
3. Kies bij **Voor welk niveau** een optie, bijvoorbeeld **brugklas**.
4. Klik op **Start Run**.
![Invoer ingevuld](beelden/screenshot-1789888525952-19.jpg)
Je ziet de nodes een voor een oplichten terwijl ze draaien.
![De workflow draait](beelden/screenshot-1789888548079-20.jpg)
Onder **RESULT** staat de uitkomst: de herschreven tekst en de drie vragen. Onder **DETAIL** en **TRACING** zie je per stap wat er precies gebeurd is en hoe lang het duurde.
![Het resultaat](beelden/screenshot-1789888571578-21.jpg)
---
## Stap 8. Publiceren
Zolang je niet publiceert, bestaat je app alleen voor jezelf.
1. Klik rechtsboven op **Publish**.
![Het Publish-menu, nog niet gepubliceerd](beelden/screenshot-1789889788152-22.jpg)
2. Klik in het menu op **Publish**. Bovenaan verandert de status naar gepubliceerd.
![Gepubliceerd](beelden/screenshot-1789889800590-23.jpg)
3. Open het menu opnieuw. Nu staat er **Publish Update** en zijn de grijze opties actief geworden.
> Elke wijziging die je hierna maakt, moet je opnieuw publiceren met Publish Update. Anders blijft de link de oude versie tonen.
![Het menu na publicatie](beelden/screenshot-1789889811360-24.jpg)
4. Klik op **Webapp openen**.
![Webapp openen](beelden/screenshot-1789889820194-25.jpg)
Je app opent als gewone webpagina met een eigen adres. Die link werkt zonder inloggen, ook op een telefoon. Dat is de link die je aan je testpartner geeft.
De app uit deze handleiding staat op <https://udify.app/workflow/eINp9Jdd6ICodDZF>. Open hem gerust om te zien waar je naartoe werkt.
![De gepubliceerde webapp](beelden/screenshot-1789889850420-26.jpg)
---
## Controleren of het gelukt is
- Je app staat in Studio met het label WORKFLOW
- De testrun geeft zowel een herschreven tekst als drie vragen
- De webapp-link opent bij iemand anders, zonder inloggen
## Als het misgaat
| Wat je ziet | Wat er aan de hand is |
| --- | --- |
| Je credits lopen hard terug | De node staat nog op gpt-5. Zet hem op gpt-5-mini |
| Het label heet `tekstDe tekst die...` | Het labelveld vulde zichzelf. Leegmaken en opnieuw typen |
| De vragen gaan over de oorspronkelijke tekst | In stap 5 is LLM 2 gekozen in plaats van LLM |
| Melding over temperature | Het model ondersteunt die parameter niet. Negeren |
| Een optie blijft leeg | Je typte zonder eerst in het lege vakje te klikken |
| De link toont een oude versie | Je hebt na je wijziging niet op Publish Update geklikt |
---
## Maak hem van jou
Alles hierboven is een voorbeeld: de niveaus, de prompts, de tweede stap. Dit hoofdstuk helpt je de app om te bouwen naar jouw vak, jouw leerlingen en jouw stijl. Werk van boven naar beneden: de eerste aanpassingen kosten vijf minuten, de laatste een dagdeel.
| Aanpassing | Waar | Moeilijkheid | Wat je ervoor terugkrijgt |
| --- | --- | --- | --- |
| Andere niveaus of doelgroepen | Stap 3, veld *niveau* | makkelijk | Opties die jouw leerlingen beschrijven |
| Andere labels op het formulier | Stap 3, *Label Name* | makkelijk | Een formulier in jouw woorden, ook voor collega's die de app niet gebouwd hebben |
| Strengere of andere schrijfregels | Stap 4, prompt | makkelijk | Teksten die lijken op wat jij zelf zou schrijven |
| Een voorbeeldtekst in jouw stijl in de prompt | Stap 4, prompt | gemiddeld | Consistente toon, ook bij lange teksten |
| Andere tweede stap (woordenlijst, samenvatting, vertaling) | Stap 5, prompt | gemiddeld | Een app voor jouw lesdoel in plaats van het onze |
| Een derde stap die de vragen nakijkt op niveau | Na stap 5, extra LLM | gemiddeld | Een ingebouwde controle |
| Een extra invoerveld (vak, lengte, taal) | Stap 3 plus de prompts | gemiddeld | Meer knoppen voor de gebruiker, maar ook meer om uit te leggen |
| Een bestand uploaden in plaats van tekst plakken | Stap 3, veldtype *Single File*, plus een Doc Extractor-node | moeilijk | Werkbladen en pdf's direct verwerken (zie handleiding 5 voor bestanden als invoer) |
**Drie opdrachten**
1. **Jouw niveaus, jouw tekst.** Vervang de vier opties door de groepen die jij lesgeeft. Plak een alinea uit je eigen lesmateriaal en draai de app voor twee niveaus. Leg de twee uitkomsten naast elkaar: wat is er echt anders? Als het verschil te klein is, zeg dan in de prompt wat je per niveau verwacht ("brugklas: zinnen van maximaal twaalf woorden").
2. **Verander de tweede stap.** Bouw stap 5 om tot iets wat jij volgende week echt kunt gebruiken: een woordenlijst, een samenvatting voor in de klas, drie stellingen voor een discussie. Pas ook de naam van de uitvoervariabele in stap 6 aan, zodat de uitvoer een logische kop krijgt.
3. **Laat een collega hem slopen.** Geef de link aan iemand die niet in de workshop zat en vraag om drie echte teksten. Kijk in **Logs** wat eruit kwam. Waar ging het mis? Meestal is het antwoord één zin extra in een prompt. Pas dat aan, publiceer opnieuw (Publish Update), en laat het nog een keer proberen.
**Checklist voordat je eigen materiaal gebruikt**
- [ ] De tekst die je plakt bevat geen namen van leerlingen en geen toetsresultaten
- [ ] Het materiaal mag je gebruiken (eigen werk, open licentie, of toestemming van de uitgever)
- [ ] Het model staat op gpt-5-mini en je weet wat een run ongeveer kost
- [ ] Er is één eigenaar van de app die de prompts bijhoudt en opnieuw publiceert
- [ ] Je hebt besloten wie de link krijgt: alleen jij, je sectie, of ook leerlingen (in dat laatste geval: eerst overleggen met de ICT-coördinator of privacyfunctionaris)
- [ ] Iemand leest de uitvoer voordat die naar leerlingen gaat; de app maakt een concept, geen les
---
## En nu een agent
Je hebt net een workflow gebouwd: jij bepaalde elke stap. Een agent werkt anders. Daar geef je een doel en grenzen, en kiest hij zelf zijn stappen.
1. Klik op **Create** en kies **Create from Blank**.
2. Klap **MORE BASIC APP TYPES** uit en kies **Agent**.
De rest van de werkwijze ken je nu: model instellen, instructie schrijven, testen, publiceren.
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env python3
"""Bouwt handleiding-dify-agent.html, .pdf en .docx. Gebruik: python3 build.py
Het echte werk staat in ../_gereedschap/build_handleiding.py (gedeeld door alle handleidingen)."""
import runpy, sys
from pathlib import Path
sys.argv = ["build_handleiding.py", str(Path(__file__).resolve().parent / "handleiding-dify-agent.md")]
runpy.run_path(str(Path(__file__).resolve().parent.parent / "_gereedschap" / "build_handleiding.py"), run_name="__main__")
@@ -0,0 +1,363 @@
<!--
VOOR CLAUDE CODE
Bron van handleiding 2 (agent met kennisbank). Beelden staan in beelden/,
vastgelegd op 20 september 2026 via de Chrome-extensie op het sandbox-account
"Dify" (workspace "Dify's Workspace"), venster 1800x907 CSS-px, uitvoer 1556x784.
Omzetten naar HTML, PDF en Word: python3 build.py
(zelfde script als handleiding 1; python-markdown, google-chrome, libreoffice)
Opmaakafspraken (gelijk aan handleiding 1):
- Genummerde lijst = handelingen (klikken, kiezen)
- Tabel "Wat je intypt" = waarden voor formuliervelden
- Codeblok (```) = tekst die letterlijk overgetypt wordt (label "Intypen")
- Blockquote (>) = tip of waarschuwing (oranje kader)
Testdocument: schoolgids-voorbeeldcollege.pdf (fictief, in deze map).
Gepubliceerde voorbeeld-app: https://udify.app/chat/cvLAmpk60m9HUXUy
Op het account staat ook een lege agent "Schoolgids-assistent" in de Agent
Console (bèta), aangemaakt om die route te beoordelen; mag weg.
-->
# Bouwen in Dify: een agent met eigen kennisbank
**Handleiding 2 bij de workshop AI Agents**
LeX Consultancy B.V. · 20 september 2026
In handleiding 1 bouwde je een workflow: jij bepaalde elke stap. Nu bouw je een agent. Die krijgt een doel, een instructie en een kennisbank met jouw eigen document, en beslist zelf wanneer hij daarin gaat zoeken. Aan het eind heb je een chatbot met een eigen webadres die vragen over jouw document beantwoordt en eerlijk zegt wanneer het antwoord er niet in staat.
Deze handleiding volgt de cloudversie van Dify zoals die er op 20 september 2026 uitziet. Dify verandert snel: wijkt je scherm af, volg dan wat je ziet en niet wat hier staat.
**Zo lees je deze handleiding**
| Vorm | Betekenis |
| --- | --- |
| 1. 2. 3. | Wat je doet: klikken, kiezen, openen |
| **Vet** | Een knop, menu of veld zoals het op je scherm staat |
| Tabel *Wat je intypt* | Waarden die je in een formulierveld zet |
| Grijs kader *Intypen* | Tekst die je letterlijk overtypt of plakt |
| Oranje kader | Een valkuil die je anders zelf ontdekt |
| Groen kader *Zelf kiezen* | Een plek waar je ons voorbeeld kunt vervangen door je eigen materiaal, stijl of prompt |
> Over credits: een agent is duurder dan een workflow. In onze test kostte het aanmaken van de kennisbank plus één zoektest 26 credits, en elk antwoord van de agent 6 à 7 credits (met gpt-5-mini). Met de 200 credits van een sandbox-account kun je deze handleiding dus één keer volgen en daarna nog zo'n twintig vragen stellen. Test dus gericht, niet voor de lol.
---
## Voorbereiding
- Je hebt handleiding 1 gedaan, of je weet in elk geval waar **Studio** en **Create** zitten.
- Je hebt een document klaarstaan dat de agent moet kennen: PDF, Word, tekst of markdown, maximaal 15 MB en één bestand per keer in de sandbox. Kies een document met echte tekst, geen gescande afbeeldingen.
- Zet er geen persoonsgegevens in. Alles wat je uploadt, staat op de servers van Dify.
In deze handleiding gebruiken we een fictieve schoolgids van twee pagina's: `schoolgids-voorbeeldcollege.pdf`. Die zit bij deze handleiding. Neem hem gerust, dan kloppen alle voorbeeldvragen.
> **Zelf kiezen: je eigen document.** Wil je meteen met eigen materiaal werken, kies dan een document waar collega's of leerlingen nu al vragen over stellen: het examenreglement, de studiewijzer van een vak, het protocol voor excursies, de handleiding van het leerlingvolgsysteem. Voorwaarden: echte tekst (geen scan), geen persoonsgegevens, en liefst met kopjes; die helpen bij het knippen in stap 2. De vragen in stap 5 en 10 pas je dan aan op jouw document.
---
## Deel A. De kennisbank
### Stap 1. Maak een kennisbank aan
1. Klik in het linkermenu op **Knowledge**.
![De Knowledge-pagina, nog leeg](beelden/stap-a01-knowledge-leeg.jpg)
2. Klik op **Een gebruiksklare kennisbank maken** (met het label AANBEVOLEN).
3. Laat **Import from file** geselecteerd staan.
![Stap 1 van 3: Data Source](beelden/stap-a02-data-source.jpg)
4. Klik op **Browse** en kies je document, of sleep het in het vak.
![Het bestand staat klaar](beelden/stap-a03-bestand-geupload.jpg)
5. Klik op **Next**.
### Stap 2. Controleer hoe het document geknipt wordt
Dify knipt je document in stukken ("chunks"). De agent zoekt straks in die stukken, niet in het hele document. Te kleine stukken bevatten geen bruikbaar antwoord; dat controleer je hier.
![Stap 2 van 3: Document Processing](beelden/stap-a04-document-processing.jpg)
1. Klik op **Preview Chunk**. Rechts verschijnen de stukken.
![De preview met de standaardinstelling: 46 stukken](beelden/stap-a05-preview-46-chunks.jpg)
> Zie je veel stukken van één regel, zoals "1. Lestijden" of "1 8.30 - 9.20"? Dan knipt Dify op elke regeleinde. Dat gebeurt vaak bij PDF's. Een stuk van twaalf tekens kan geen vraag beantwoorden.
2. Klik in het veld **Delimiter** en vervang de inhoud.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| Delimiter | `\n\n` |
3. Klik opnieuw op **Preview Chunk**. Rechts staan nu een paar stukken van een alinea of langer.
![Na de aanpassing: 4 stukken met echte inhoud](beelden/stap-a06-preview-4-chunks.jpg)
4. Laat **Maximum chunk length** (1024) en **Chunk overlap** (50) staan.
5. Laat bij **Index Method** de keuze **High Quality** staan.
6. Scroll naar beneden. **Embedding Model** en **Retrieval Setting** laat je op de standaardwaarden.
![Embedding Model en Retrieval Setting](beelden/stap-a07-embedding-retrieval.jpg)
7. Klik op **Save & Process**.
### Stap 3. Wacht tot de verwerking klaar is
![Kennisbank aangemaakt, embedding loopt](beelden/stap-a08-knowledge-created.jpg)
Bij een document van twee pagina's duurt dit een paar seconden. De status springt van EMBEDDING PROCESSING naar **EMBEDDING COMPLETED** met een groen vinkje achter je bestand.
![Embedding klaar](beelden/stap-a09-embedding-completed.jpg)
1. Klik op **Go to document**. Je ziet je document in de lijst met status **Available**.
![De documentenlijst van de kennisbank](beelden/stap-a10-documents.jpg)
### Stap 4. Geef de kennisbank een naam en een beschrijving
De beschrijving is niet alleen voor jou. De agent leest hem om te beslissen of hij deze kennisbank moet raadplegen. Een goede beschrijving zegt dus waar de kennisbank over gaat.
1. Klik in het linkermenu op **Settings**.
2. Vul de twee velden in.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| Name & Icon | `Schoolgids Voorbeeldcollege` |
| Description | zie het kader hieronder |
```
Gebruik deze kennisbank voor vragen over de schoolregels van Het Voorbeeldcollege: lestijden, ziek melden, verzuim en verlof, huiswerk en toetsen, telefoons en laptops, mentoraat en contactgegevens.
```
![Naam en beschrijving ingevuld](beelden/stap-a11-settings.jpg)
3. Scroll helemaal naar beneden en klik op **Save**.
![De Save-knop onderaan de instellingen](beelden/stap-a12-settings-save.jpg)
### Stap 5. Test of de kennisbank het juiste stuk vindt
Dit is het moment waarop je ziet wat een kennisbank doet: je stelt een vraag en krijgt geen antwoord, maar de stukken tekst die het beste bij je vraag passen. Straks maakt de agent daar een antwoord van.
1. Klik in het linkermenu op **Retrieval Testing**.
![Retrieval Testing, nog leeg](beelden/stap-a13-retrieval-test-leeg.jpg)
2. Klik in het veld **SOURCE TEXT** en typ een vraag.
```
Hoe laat moet ik mijn kind ziek melden?
```
3. Klik op **Test**.
![Drie gevonden stukken met een score](beelden/stap-a14-retrieval-resultaat.jpg)
Rechts staan de gevonden stukken met een score. Het stuk met de ziekmeldregels staat bovenaan met 0,86; de andere twee scoren laag. Zo hoort het. Staat het juiste stuk er niet bij, ga dan terug naar stap 2 en kijk of de stukken wel groot genoeg zijn.
---
## Deel B. De agent
### Stap 6. Maak de agent
1. Klik in het linkermenu op **Studio**.
2. Klik rechtsboven op **Create** en kies **Create from Blank**.
3. Klik op **MORE BASIC APP TYPES**.
4. Klik op **Agent**.
5. Vul de naam in.
| Veld op het scherm | Wat je intypt |
| --- | --- |
| App Name & Icon | `Schoolgids-assistent` |
![Agent gekozen, naam ingevuld](beelden/stap-b01-create-agent.jpg)
6. Klik op **Create**.
![De lege agent](beelden/stap-b02-agent-leeg.jpg)
> Naast "Orchestrate" staat een oranje label **LEGACY AGENT**. Schrik daar niet van; de agent werkt gewoon. Wat het betekent, lees je in het kader "Over het label LEGACY AGENT" aan het eind van deze handleiding.
### Stap 7. Zet het model op gpt-5-mini
Ook hier staat het model standaard op **gpt-5**, en ook hier is dat vijf keer zo duur als nodig.
1. Klik rechtsboven op de modelnaam **gpt-5**.
![De modelkiezer](beelden/stap-b03-modelkiezer.jpg)
2. Kies **gpt-5-mini**.
### Stap 8. Schrijf de instructie
Bij een workflow schreef je per stap een prompt. Een agent krijgt één instructie: wie hij is, wat hij mag en wat hij niet mag. De regels over "alleen uit de kennisbank" en "zeg het als je het niet weet" zijn de belangrijkste; zonder die regels verzint hij er vrolijk op los.
1. Klik in het veld **INSTRUCTIONS**.
2. Typ de instructie over.
```
Je bent de schoolgids-assistent van Het Voorbeeldcollege. Je beantwoordt vragen van ouders en leerlingen over de schoolregels.
Regels:
- Baseer je antwoord alleen op de schoolgids in je kennisbank.
- Staat het antwoord niet in de schoolgids, zeg dan eerlijk dat je het niet weet en verwijs naar de receptie.
- Antwoord kort en in gewoon Nederlands, maximaal vijf zinnen.
- Noem waar het kan het hoofdstuk van de schoolgids waar het antwoord vandaan komt.
```
![Model en instructie staan](beelden/stap-b04-instructie.jpg)
> **Zelf kiezen: rol, regels en toon.** De eerste zin bepaalt de rol ("schoolgids-assistent", "examenhulp", "onboardingbuddy voor nieuwe collega's"), de regels bepalen het gedrag. Hou de twee regels over de kennisbank en over "zeg dat je het niet weet" altijd; verander de rest. Wil je dat de agent leerlingen met je aanspreekt en ouders met u? Zeg dat. Wil je dat hij altijd eindigt met "Klopt dit, of wil je meer weten?" Zeg dat. Wil je Engelse antwoorden op Engelse vragen? Eén regel erbij.
### Stap 9. Koppel de kennisbank
1. Klik bij **Knowledge** op **Add**.
2. Klik op **Schoolgids Voorbeeldcollege**. Onderin verschijnt "1 Knowledge selected".
![De kennisbank kiezen](beelden/stap-b05-select-knowledge.jpg)
3. Klik op **Add**.
![De kennisbank hangt aan de agent](beelden/stap-b06-knowledge-gekoppeld.jpg)
### Stap 10. Test de agent
Rechts staat **Debug & Preview**: een chatvenster waarin je met de agent praat voordat hij live is. Stel twee soorten vragen: een die in het document staat, en een die er niet in staat.
1. Klik onderin op **Talk to Bot** en typ de eerste vraag.
```
Mijn dochter heeft een toets gemist. Wanneer kan ze die inhalen?
```
2. Druk op Enter en wacht. Boven het antwoord verschijnt het label **Used Knowledge**.
![Het eerste antwoord, met hoofdstukverwijzing](beelden/stap-b07-eerste-antwoord.jpg)
3. Klik op **Used Knowledge** om het open te klappen.
![Wat de agent zelf heeft opgezocht](beelden/stap-b08-used-knowledge.jpg)
Kijk bij REQUEST. Daar staat de zoekopdracht die de agent zelf heeft geformuleerd, iets als "toets gemist inhalen wanneer kan ze die inhalen". Jij hebt hem niet gezegd dat hij moest zoeken en ook niet waarnaar. Hij besloot dat zelf op basis van je vraag en de beschrijving van de kennisbank. Dat is het verschil met de workflow van handleiding 1.
4. Klik het label weer dicht en typ de tweede vraag.
```
Wat kost het schoolkamp van de brugklas?
```
5. Druk op Enter.
![De vraag die niet in het document staat](beelden/stap-b09-onbekende-vraag.jpg)
De agent zegt dat het niet in de schoolgids staat en verwijst naar de receptie. Dat komt door de tweede regel in je instructie. Haal die regel weg en probeer het opnieuw: dan krijg je een keurig verzonnen bedrag.
### Stap 11. Publiceer de agent
1. Klik rechtsboven op **Publish**.
![Het Publish-menu](beelden/stap-b10-publish-menu.jpg)
> Het menu zegt "Latest Published, published een paar minuten geleden", terwijl je nog niets gepubliceerd hebt. Dify publiceert een Agent-app namelijk al bij het aanmaken, dus leeg. De versie met jouw instructie en kennisbank staat onder **Current Draft**. Sla je Publish Update over, dan opent de webapp een agent zonder kennis.
2. Klik op **Publish Update**. De melding "Success" verschijnt en onder de knop staat nu "Up-to-date".
![Gepubliceerd en up-to-date](beelden/stap-b11-gepubliceerd.jpg)
3. Klik op **Webapp openen**.
![De webapp, leeg](beelden/stap-b12-webapp-leeg.jpg)
4. Typ een vraag om te controleren of de gepubliceerde versie de kennisbank gebruikt.
```
Mag mijn zoon zijn telefoon gebruiken in de pauze?
```
![De webapp antwoordt met bronvermelding](beelden/stap-b13-webapp-antwoord.jpg)
Onder het antwoord staat **CITATIONS** met de naam van je document. Dat is de link die je aan je testpartner geeft; hij werkt zonder inloggen, ook op een telefoon.
De agent uit deze handleiding staat op <https://udify.app/chat/cvLAmpk60m9HUXUy>.
---
## Controleren of het gelukt is
- Bij **Knowledge** staat je kennisbank met status Available en een preview van hooguit een handvol stukken per pagina
- **Retrieval Testing** zet bij een vraag uit het document het juiste stuk bovenaan
- De agent beantwoordt een vraag uit het document met **Used Knowledge** erboven
- De agent zegt bij een vraag buiten het document dat hij het niet weet
- De webapp-link toont **CITATIONS** onder het antwoord
## Als het misgaat
| Wat je ziet | Wat er aan de hand is |
| --- | --- |
| Preview Chunk toont tientallen stukken van één regel | De Delimiter staat op `\n`. Zet hem op `\n\n` (stap 2) |
| Retrieval Testing vindt het juiste stuk niet | Stukken te klein of te groot. Terug naar stap 2; bij een groot document Maximum chunk length verhogen |
| De agent antwoordt zonder Used Knowledge, ook bij vragen uit het document | Kennisbank niet gekoppeld (stap 9) of de Description van de kennisbank is leeg of nietszeggend (stap 4) |
| De agent verzint antwoorden | De regel "Staat het antwoord niet in de schoolgids..." ontbreekt in de instructie |
| De webapp antwoordt zonder kennis, terwijl Debug & Preview het wel doet | Publish Update niet geklikt; de webapp draait nog de lege versie van bij het aanmaken |
| Je credits lopen hard terug | Model staat nog op gpt-5. Zet hem op gpt-5-mini (stap 7). Een agent-antwoord kost sowieso 6 à 7 credits |
| Bij uploaden: "Maximaal 1 bestanden" | Sandbox-limiet. Eén bestand per keer; een tweede voeg je daarna toe met Add file |
| Melding dat de parameter temperature verwijderd is | Het model ondersteunt die niet. Negeren |
---
## Over het label LEGACY AGENT
Dify bouwt op dit moment aan een nieuwe manier om agents te maken: de **Agent Console**, in het linkermenu te vinden als **Agents** met het label BETA. De Agent-app die je in deze handleiding bouwde, heet daarom "legacy": Dify wil dat je op termijn de nieuwe route neemt.
We hebben die nieuwe console op 20 september 2026 bekeken en bewust niet voor deze handleiding gekozen:
- gpt-5-mini is er niet beschikbaar; wel gpt-5.6-luna, Claude Opus 4 en Gemini 3.5, allemaal duurder in credits;
- er is geen koppeling met een kennisbank, de agent leest losse bestanden in een sandbox-omgeving;
- de pagina rendert nog niet stabiel en de teksten wisselen tussen Nederlands en Engels.
![De modelkeuze in de nieuwe Agent Console](beelden/extra-agent-console-modellen.jpg)
Voor een workshop met sandbox-accounts is de Agent-app in Studio de betrouwbare route. Wat je erin leert, instructie, kennisbank, testen en publiceren, blijft gelden in de nieuwe console; alleen de knoppen verschuiven.
---
## Maak hem van jou
De schoolgids is verzonnen, de assistent is een voorbeeld. Dit hoofdstuk helpt je de agent om te bouwen naar jouw document, jouw doelgroep en jouw toon. Van makkelijk naar moeilijk.
| Aanpassing | Waar | Moeilijkheid | Wat je ervoor terugkrijgt |
| --- | --- | --- | --- |
| Een ander document | Deel A, stap 1 tot 4 | makkelijk | Een agent over iets waar bij jou echt vragen over komen |
| Naam en beschrijving van de kennisbank | Stap 4 | makkelijk | Een agent die weet wanneer hij moet zoeken |
| Rol, toon en aanspreekvorm | Stap 8, instructie | makkelijk | Een assistent die klinkt als jouw school |
| Een openingszin en voorbeeldvragen in de webapp | Debug & Preview → **Manage** (onderaan) → Conversation Opener | makkelijk | Gebruikers weten meteen wat ze kunnen vragen |
| Een tweede document in dezelfde kennisbank | Deel A opnieuw, via **Add file** | gemiddeld | Meer vragen goed beantwoord; let op de beschrijving |
| Twee kennisbanken (bijvoorbeeld leerlingen en personeel apart) | Stap 9, twee keer **Add** | gemiddeld | Duidelijke scheiding; in de instructie zeg je wanneer welke |
| Bronvermelding afdwingen ("noem altijd het hoofdstuk") | Stap 8, instructie | gemiddeld | Antwoorden die je kunt controleren |
| Gereedschap toevoegen (datum, rekenen, webzoeken) | **Tools** in hetzelfde scherm | moeilijk | Een agent die meer kan dan lezen; zie handleiding 4 |
**Drie opdrachten**
1. **Jouw document, jouw vragen.** Maak een kennisbank van een document van jouw school. Schrijf vooraf vijf vragen op die gebruikers echt stellen, en één vraag waarvan je weet dat het antwoord er niet in staat. Test alle zes in stap 10. Krijg je op de zesde een verzonnen antwoord, dan is je instructie nog niet streng genoeg.
2. **Twee doelgroepen, één agent.** Laat de agent anders antwoorden voor leerlingen (je, kort) en ouders (u, iets uitgebreider). Los het eerst op in de instructie ("Als de vraag van een ouder lijkt te komen..."). Werkt dat niet betrouwbaar, voeg dan een **Variable** toe (het blok Variables onder de instructie) waarmee de gebruiker zelf kiest.
3. **Laat een collega hem slopen.** Geef de link aan iemand die het document goed kent en vraag om de agent te betrappen op fouten. Lees de **Logs**. Ligt het aan het knippen (stap 2), aan de beschrijving (stap 4) of aan de instructie (stap 8)? Pas één ding aan, Publish Update, en test opnieuw.
**Checklist voordat je eigen materiaal gebruikt**
- [ ] Het document bevat geen namen, adressen, cijfers of andere gegevens van personen
- [ ] Het document is van de school en mag bij een externe verwerker staan (Dify draait in de cloud)
- [ ] Het document is de actuele versie, en er is één eigenaar die een nieuwe versie uploadt als het verandert
- [ ] Je hebt besloten wie de link krijgt; bij leerlingen of ouders eerst de privacyfunctionaris erbij
- [ ] Het model staat op gpt-5-mini en je weet dat een antwoord 6 à 7 credits kost zonder eigen sleutel
- [ ] De instructie zegt wat de agent moet doen als hij het niet weet, en je hebt dat getest
---
## En verder
Je agent kan nu lezen. De volgende stap is dat hij iets kan doen: het web doorzoeken, rekenen, de datum weten, of een workflow uit handleiding 1 aanroepen als gereedschap. Dat regel je onder **Tools** in hetzelfde scherm. Dat is handleiding 3.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Some files were not shown because too many files have changed in this diff Show More