feat: uitlegvideo bij elke handleiding (schermafbeeldingen, Nederlandse stem, ondertitels)
- video-script.md, video-*.mp4 en .srt in de acht mappen - README-sectie Video's en CHANGELOG Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,548 @@
|
||||
1
|
||||
00:00:00,000 --> 00:00:05,984
|
||||
Welkom bij de zevende handleiding van de reeks AI Agents met Dify voor school.
|
||||
|
||||
2
|
||||
00:00:06,034 --> 00:00:09,078
|
||||
In handleiding 3 bouwde je Schoolnieuws:
|
||||
|
||||
3
|
||||
00:00:09,128 --> 00:00:14,957
|
||||
één kernboodschap wordt een bericht voor website, ouderapp en sociale media.
|
||||
|
||||
4
|
||||
00:00:15,007 --> 00:00:20,062
|
||||
De teksten waren goed, maar ze gingen ongecontroleerd naar buiten.
|
||||
|
||||
5
|
||||
00:00:20,112 --> 00:00:23,079
|
||||
Deze handleiding voegt twee dingen toe.
|
||||
|
||||
6
|
||||
00:00:23,129 --> 00:00:30,351
|
||||
Een Controleur, een taalmodel dat het ouderappbericht nog eens naleest tegen de schrijfwijzer.
|
||||
|
||||
7
|
||||
00:00:30,401 --> 00:00:31,898
|
||||
En een Poortwachter:
|
||||
|
||||
8
|
||||
00:00:31,948 --> 00:00:40,330
|
||||
een stukje code dat harde regels controleert, woordaantal, verboden woorden, hashtag, ontbrekende informatie.
|
||||
|
||||
9
|
||||
00:00:40,380 --> 00:00:42,573
|
||||
Klopt alles, dan naar buiten.
|
||||
|
||||
10
|
||||
00:00:42,623 --> 00:00:46,800
|
||||
Anders naar de communicatiemedewerker, mét de redenen.
|
||||
|
||||
11
|
||||
00:00:47,600 --> 00:00:50,762
|
||||
Je hoeft niet te kunnen programmeren.
|
||||
|
||||
12
|
||||
00:00:50,812 --> 00:00:54,408
|
||||
De code plak je; wat hij doet, leg ik uit.
|
||||
|
||||
13
|
||||
00:00:54,458 --> 00:00:59,183
|
||||
Dit zijn patroon 4 en 5 uit de bijlage Ontwerppatronen:
|
||||
|
||||
14
|
||||
00:00:59,233 --> 00:01:01,664
|
||||
zelfkritiek en poortwachter.
|
||||
|
||||
15
|
||||
00:01:02,464 --> 00:01:06,055
|
||||
Zo ziet Schoolnieuws eruit voordat je begint:
|
||||
|
||||
16
|
||||
00:01:06,105 --> 00:01:10,960
|
||||
User Input, Knowledge Retrieval, drie LLM-blokken en Output.
|
||||
|
||||
17
|
||||
00:01:11,760 --> 00:01:15,205
|
||||
En zo ziet de staart eruit als je klaar bent:
|
||||
|
||||
18
|
||||
00:01:15,255 --> 00:01:20,564
|
||||
na Social komen Controleur, Poortwachter, IF ELSE, en twee uitgangen:
|
||||
|
||||
19
|
||||
00:01:20,614 --> 00:01:24,264
|
||||
Goedgekeurd, en Naar de communicatiemedewerker.
|
||||
|
||||
20
|
||||
00:01:25,064 --> 00:01:28,884
|
||||
De nieuwe blokken komen tussen Social en Output.
|
||||
|
||||
21
|
||||
00:01:28,934 --> 00:01:34,366
|
||||
Open Schoolnieuws, klik op het blok Social en scroll naar Next Step.
|
||||
|
||||
22
|
||||
00:01:34,416 --> 00:01:38,962
|
||||
Klik op de drie puntjes achter Output en kies Disconnect.
|
||||
|
||||
23
|
||||
00:01:39,012 --> 00:01:39,929
|
||||
Niet Delete:
|
||||
|
||||
24
|
||||
00:01:39,979 --> 00:01:43,688
|
||||
het blok mag blijven, alleen de lijn gaat weg.
|
||||
|
||||
25
|
||||
00:01:44,488 --> 00:01:48,370
|
||||
Klik bij Next Step op Select next step en kies LLM.
|
||||
|
||||
26
|
||||
00:01:48,420 --> 00:01:54,153
|
||||
Model gpt-5-mini, Context Knowledge Retrieval result, dus de schrijfwijzer.
|
||||
|
||||
27
|
||||
00:01:54,203 --> 00:01:55,309
|
||||
Plak de prompt:
|
||||
|
||||
28
|
||||
00:01:55,359 --> 00:02:05,178
|
||||
je bent de controleur van Het Voorbeeldcollege, beoordeel dit conceptbericht voor de ouderapp op de punten uit de schrijfwijzer:
|
||||
|
||||
29
|
||||
00:02:05,228 --> 00:02:14,816
|
||||
maximaal 80 woorden, u-vorm, één boodschap, één datum, één actie, geen afkortingen, geen namen van leerlingen, taalniveau B1.
|
||||
|
||||
30
|
||||
00:02:14,866 --> 00:02:16,435
|
||||
Werk in twee stappen:
|
||||
|
||||
31
|
||||
00:02:16,485 --> 00:02:20,830
|
||||
noem eerst wat niet klopt, geef dan de verbeterde versie.
|
||||
|
||||
32
|
||||
00:02:20,880 --> 00:02:24,685
|
||||
Maar geef als antwoord alleen de verbeterde tekst.
|
||||
|
||||
33
|
||||
00:02:24,735 --> 00:02:28,078
|
||||
Dat is geen tegenstrijdigheid maar een truc:
|
||||
|
||||
34
|
||||
00:02:28,128 --> 00:02:35,325
|
||||
het model beoordeelt eerst, en dat verbetert het resultaat, maar je krijgt schone tekst terug.
|
||||
|
||||
35
|
||||
00:02:35,375 --> 00:02:42,160
|
||||
Onderaan koppel je de schrijfwijzer als Context en het conceptbericht als Ouderapp text.
|
||||
|
||||
36
|
||||
00:02:42,960 --> 00:02:45,370
|
||||
Hernoem het blok naar Controleur.
|
||||
|
||||
37
|
||||
00:02:45,420 --> 00:02:48,651
|
||||
Kijk nog even naar twee zinnen in de prompt:
|
||||
|
||||
38
|
||||
00:02:48,701 --> 00:02:56,031
|
||||
haal geen feiten, data of tijden weg die in het concept staan, en verander cijfers niet in woorden.
|
||||
|
||||
39
|
||||
00:02:56,081 --> 00:02:57,970
|
||||
Die staan er om een reden.
|
||||
|
||||
40
|
||||
00:02:58,020 --> 00:03:04,083
|
||||
In onze eerste test deed de Controleur precies wat we vroegen, en dat was te veel:
|
||||
|
||||
41
|
||||
00:03:04,133 --> 00:03:09,525
|
||||
één datum las hij als haal de aanmelddatum weg, en klas 2 werd klas twee.
|
||||
|
||||
42
|
||||
00:03:09,575 --> 00:03:15,912
|
||||
Zelfkritiek verbetert de vorm; wat er inhoudelijk mag veranderen, moet jij begrenzen.
|
||||
|
||||
43
|
||||
00:03:16,712 --> 00:03:17,268
|
||||
Deel B.
|
||||
|
||||
44
|
||||
00:03:17,318 --> 00:03:18,567
|
||||
Bij Controleur:
|
||||
|
||||
45
|
||||
00:03:18,617 --> 00:03:21,772
|
||||
Select next step, en onder Transform:
|
||||
|
||||
46
|
||||
00:03:21,822 --> 00:03:22,205
|
||||
Code.
|
||||
|
||||
47
|
||||
00:03:22,255 --> 00:03:28,268
|
||||
Klik in de editor, selecteer alles en plak de code uit de handleiding.
|
||||
|
||||
48
|
||||
00:03:28,318 --> 00:03:31,126
|
||||
Wat de code doet, in gewone taal.
|
||||
|
||||
49
|
||||
00:03:31,176 --> 00:03:33,984
|
||||
Er is een lijst verboden woorden:
|
||||
|
||||
50
|
||||
00:03:34,034 --> 00:03:41,260
|
||||
middels, omtrent, z.s.m., gelieve; de lijst uit de schrijfwijzer, hier hard gemaakt.
|
||||
|
||||
51
|
||||
00:03:41,310 --> 00:03:45,417
|
||||
Er zijn drie teksten met hun maximum in woorden.
|
||||
|
||||
52
|
||||
00:03:45,467 --> 00:03:46,803
|
||||
Voor elke tekst:
|
||||
|
||||
53
|
||||
00:03:46,853 --> 00:03:49,661
|
||||
is hij te lang, noteer een reden.
|
||||
|
||||
54
|
||||
00:03:49,711 --> 00:03:57,629
|
||||
Staat er INVULLEN in, noteer een reden, want een bericht met een gat gaat nooit naar buiten.
|
||||
|
||||
55
|
||||
00:03:57,679 --> 00:04:01,873
|
||||
Staat er een verboden woord in, noteer een reden.
|
||||
|
||||
56
|
||||
00:04:01,923 --> 00:04:06,204
|
||||
En het socialbericht moet de schoolhashtag hebben.
|
||||
|
||||
57
|
||||
00:04:06,254 --> 00:04:08,975
|
||||
De code geeft twee dingen terug:
|
||||
|
||||
58
|
||||
00:04:09,025 --> 00:04:15,298
|
||||
ok, 1 is goed en 0 is fout, en redenen, de lijst, of Alle regels in orde.
|
||||
|
||||
59
|
||||
00:04:15,348 --> 00:04:17,203
|
||||
Let op de inspringing:
|
||||
|
||||
60
|
||||
00:04:17,253 --> 00:04:21,967
|
||||
in Python telt elke spatie aan het begin van een regel.
|
||||
|
||||
61
|
||||
00:04:22,017 --> 00:04:23,526
|
||||
Plakken gaat goed.
|
||||
|
||||
62
|
||||
00:04:23,576 --> 00:04:27,560
|
||||
Overtypen gaat bijna altijd mis; doe dat niet.
|
||||
|
||||
63
|
||||
00:04:28,360 --> 00:04:35,643
|
||||
Hernoem bij Input Variables arg1 naar website en arg2 naar ouderapp, en voeg een derde toe:
|
||||
|
||||
64
|
||||
00:04:35,693 --> 00:04:36,207
|
||||
social.
|
||||
|
||||
65
|
||||
00:04:36,257 --> 00:04:42,250
|
||||
De namen moeten precies gelijk zijn aan die in de eerste regel van de code.
|
||||
|
||||
66
|
||||
00:04:42,300 --> 00:04:43,056
|
||||
Koppel ze:
|
||||
|
||||
67
|
||||
00:04:43,106 --> 00:04:51,808
|
||||
website aan Website text, ouderapp aan Controleur text, dus de verbeterde versie, en social aan Social text.
|
||||
|
||||
68
|
||||
00:04:52,608 --> 00:04:54,252
|
||||
Bij Output Variables:
|
||||
|
||||
69
|
||||
00:04:54,302 --> 00:04:58,205
|
||||
hernoem result naar ok en zet het type op Number.
|
||||
|
||||
70
|
||||
00:04:58,255 --> 00:05:00,625
|
||||
Voeg redenen toe, type String.
|
||||
|
||||
71
|
||||
00:05:00,675 --> 00:05:03,448
|
||||
Hernoem het blok naar Poortwachter.
|
||||
|
||||
72
|
||||
00:05:03,498 --> 00:05:10,789
|
||||
De uitvoernamen moeten letterlijk overeenkomen met de namen in de return-regel van de code.
|
||||
|
||||
73
|
||||
00:05:10,839 --> 00:05:15,549
|
||||
Eén letter anders en de workflow stopt met een foutmelding.
|
||||
|
||||
74
|
||||
00:05:15,599 --> 00:05:21,841
|
||||
Alles wat je met zekerheid kunt controleren, hoort hier en niet in een prompt.
|
||||
|
||||
75
|
||||
00:05:21,891 --> 00:05:24,422
|
||||
Vraag je communicatiemedewerker:
|
||||
|
||||
76
|
||||
00:05:24,472 --> 00:05:27,327
|
||||
welke fout mag nooit meer voorkomen?
|
||||
|
||||
77
|
||||
00:05:27,377 --> 00:05:29,232
|
||||
Dat is je eerste regel.
|
||||
|
||||
78
|
||||
00:05:30,032 --> 00:05:30,649
|
||||
Deel C.
|
||||
|
||||
79
|
||||
00:05:30,699 --> 00:05:32,268
|
||||
Bij Poortwachter:
|
||||
|
||||
80
|
||||
00:05:32,318 --> 00:05:35,126
|
||||
Select next step, onder Logic:
|
||||
|
||||
81
|
||||
00:05:35,176 --> 00:05:35,888
|
||||
IF ELSE.
|
||||
|
||||
82
|
||||
00:05:35,938 --> 00:05:45,560
|
||||
Klik bij IF op Add Condition, kies Poortwachter ok, laat de vergelijking op is-gelijk staan en typ 1.
|
||||
|
||||
83
|
||||
00:05:46,360 --> 00:05:47,204
|
||||
Onder IF:
|
||||
|
||||
84
|
||||
00:05:47,254 --> 00:05:49,686
|
||||
Select next step, Output.
|
||||
|
||||
85
|
||||
00:05:49,736 --> 00:05:51,970
|
||||
Drie uitvoervariabelen:
|
||||
|
||||
86
|
||||
00:05:52,020 --> 00:05:56,638
|
||||
website, ouderapp vanuit Controleur, en social.
|
||||
|
||||
87
|
||||
00:05:56,688 --> 00:06:00,064
|
||||
Hernoem het blok naar Goedgekeurd.
|
||||
|
||||
88
|
||||
00:06:00,864 --> 00:06:04,455
|
||||
Klik op IF ELSE; onder ELSE kies je ook Output.
|
||||
|
||||
89
|
||||
00:06:04,505 --> 00:06:11,195
|
||||
Vier variabelen, met de redenen bovenaan zodat de medewerker meteen ziet wat er mis is:
|
||||
|
||||
90
|
||||
00:06:11,245 --> 00:06:19,098
|
||||
afgekeurd omdat, uit Poortwachter redenen, en dan concept website, concept ouderapp en concept social.
|
||||
|
||||
91
|
||||
00:06:19,148 --> 00:06:22,507
|
||||
Hernoem naar Naar de communicatiemedewerker.
|
||||
|
||||
92
|
||||
00:06:22,557 --> 00:06:23,049
|
||||
Let op:
|
||||
|
||||
93
|
||||
00:06:23,099 --> 00:06:27,852
|
||||
twee Output-blokken mogen geen gelijknamige variabelen hebben.
|
||||
|
||||
94
|
||||
00:06:27,902 --> 00:06:36,607
|
||||
Noem je ze in beide website, dan zet Dify een oranje Dubbele variabele in de checklist en kun je niet publiceren.
|
||||
|
||||
95
|
||||
00:06:36,657 --> 00:06:40,608
|
||||
Vandaar concept onderstreepje in de tweede uitgang.
|
||||
|
||||
96
|
||||
00:06:41,408 --> 00:06:45,829
|
||||
Klik rechtsboven op het checklist-icoon naast Test Run.
|
||||
|
||||
97
|
||||
00:06:45,879 --> 00:06:54,772
|
||||
De oude Output is nergens meer aan verbonden; klik erop in de checklist, hij staat verstopt achter Controleur.
|
||||
|
||||
98
|
||||
00:06:54,822 --> 00:06:56,479
|
||||
Drie puntjes, Delete.
|
||||
|
||||
99
|
||||
00:06:56,529 --> 00:06:59,456
|
||||
Controleer dat de checklist leeg is.
|
||||
|
||||
100
|
||||
00:07:00,256 --> 00:07:03,170
|
||||
De nieuwe staart van de workflow:
|
||||
|
||||
101
|
||||
00:07:03,220 --> 00:07:08,968
|
||||
Social, Controleur, Poortwachter, IF ELSE, en de twee uitgangen.
|
||||
|
||||
102
|
||||
00:07:09,768 --> 00:07:13,468
|
||||
Een poortwachter test je altijd twee kanten op.
|
||||
|
||||
103
|
||||
00:07:13,518 --> 00:07:16,819
|
||||
Alleen de goede kant testen bewijst niets.
|
||||
|
||||
104
|
||||
00:07:16,869 --> 00:07:21,047
|
||||
Test Run met de complete boodschap uit handleiding 3:
|
||||
|
||||
105
|
||||
00:07:21,097 --> 00:07:24,957
|
||||
ouderavond op 8 oktober, aanmelden tot 5 oktober.
|
||||
|
||||
106
|
||||
00:07:25,007 --> 00:07:30,432
|
||||
Na ongeveer een minuut kleurt het pad via IF naar Goedgekeurd groen.
|
||||
|
||||
107
|
||||
00:07:31,232 --> 00:07:34,469
|
||||
Klik op Tracing en klap Poortwachter open.
|
||||
|
||||
108
|
||||
00:07:34,519 --> 00:07:37,599
|
||||
Onder Output staat wat de code teruggaf:
|
||||
|
||||
109
|
||||
00:07:37,649 --> 00:07:39,634
|
||||
ok 1, Alle regels in orde.
|
||||
|
||||
110
|
||||
00:07:39,684 --> 00:07:41,277
|
||||
Tracing is je vriend.
|
||||
|
||||
111
|
||||
00:07:41,327 --> 00:07:49,886
|
||||
Bij elke vraag waarom kwam dit eruit, open je hier het blok en zie je precies wat erin ging en wat eruit kwam.
|
||||
|
||||
112
|
||||
00:07:49,936 --> 00:07:56,744
|
||||
Dat is ook het scherm waarop we zagen dat de Controleur de aanmelddatum had weggehaald.
|
||||
|
||||
113
|
||||
00:07:57,544 --> 00:08:03,867
|
||||
Test Run opnieuw, nu met een boodschap zonder datum, zonder tijd en met een afkorting:
|
||||
|
||||
114
|
||||
00:08:03,917 --> 00:08:10,018
|
||||
binnenkort is er weer een ouderavond voor de brugklassen, ouders moeten zich z.s.m.
|
||||
|
||||
115
|
||||
00:08:10,068 --> 00:08:10,759
|
||||
aanmelden.
|
||||
|
||||
116
|
||||
00:08:10,809 --> 00:08:17,725
|
||||
Nu loopt het pad via ELSE naar Naar de communicatiemedewerker, en bovenaan staan vier redenen.
|
||||
|
||||
117
|
||||
00:08:17,775 --> 00:08:20,615
|
||||
Alle drie de teksten bevatten INVULLEN:
|
||||
|
||||
118
|
||||
00:08:20,665 --> 00:08:25,728
|
||||
de modellen wisten de datum niet en hebben hem netjes niet verzonnen.
|
||||
|
||||
119
|
||||
00:08:25,778 --> 00:08:28,396
|
||||
En in het socialbericht staat z.s.m.
|
||||
|
||||
120
|
||||
00:08:28,446 --> 00:08:30,175
|
||||
Dat laatste is leerzaam.
|
||||
|
||||
121
|
||||
00:08:30,225 --> 00:08:38,919
|
||||
De prompt van Social vroeg om de schrijfwijzer te volgen, en toch glipte de afkorting uit de kernboodschap erdoorheen.
|
||||
|
||||
122
|
||||
00:08:38,969 --> 00:08:42,304
|
||||
Een prompt vraagt; de poortwachter dwingt af.
|
||||
|
||||
123
|
||||
00:08:43,104 --> 00:08:45,012
|
||||
Publish, Publish Update.
|
||||
|
||||
124
|
||||
00:08:45,062 --> 00:08:52,842
|
||||
Dify maakt versie 2 van de app, en via het klokje rechtsboven kun je altijd terug naar versie 1.
|
||||
|
||||
125
|
||||
00:08:52,892 --> 00:08:55,533
|
||||
Open de webapp en herhaal test 2:
|
||||
|
||||
126
|
||||
00:08:55,583 --> 00:09:01,977
|
||||
de collega ziet de redenen bovenaan en daaronder de concepten om aan te vullen.
|
||||
|
||||
127
|
||||
00:09:02,027 --> 00:09:04,392
|
||||
De link is dezelfde gebleven.
|
||||
|
||||
128
|
||||
00:09:05,192 --> 00:09:06,700
|
||||
De controlelijst:
|
||||
|
||||
129
|
||||
00:09:06,750 --> 00:09:09,083
|
||||
staat de hele staart erin?
|
||||
|
||||
130
|
||||
00:09:09,133 --> 00:09:11,008
|
||||
Is de checklist leeg?
|
||||
|
||||
131
|
||||
00:09:11,058 --> 00:09:16,324
|
||||
Gaat test 1 naar Goedgekeurd en test 2 naar de medewerker?
|
||||
|
||||
132
|
||||
00:09:16,374 --> 00:09:19,808
|
||||
Laat de Controleur de feiten met rust?
|
||||
|
||||
133
|
||||
00:09:19,858 --> 00:09:22,424
|
||||
En is versie 2 gepubliceerd?
|
||||
|
||||
134
|
||||
00:09:23,224 --> 00:09:31,160
|
||||
De handleiding, de code en de beelden staan in de repository; de app staat live op udify punt app.
|
||||
|
||||
135
|
||||
00:09:31,210 --> 00:09:34,827
|
||||
In de laatste video bouwen we de Studiecoach:
|
||||
|
||||
136
|
||||
00:09:34,877 --> 00:09:40,042
|
||||
een Chatflow met vier routes, geheugen, en een docent in de lus.
|
||||
|
||||
137
|
||||
00:09:40,092 --> 00:09:40,744
|
||||
Tot dan.
|
||||
|
||||
Reference in New Issue
Block a user