DSL-exports van de apps, installatie-instructie in README

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido van Dijk
2026-09-21 09:24:26 +02:00
parent b519acc0f6
commit 2feaede14e
8 changed files with 2303 additions and 0 deletions
+256
View File
@@ -0,0 +1,256 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: Tekst op niveau - voorbeeld
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
kind: app
version: 0.7.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 50
image_file_batch_limit: 10
image_file_size_limit: 10
knowledge_file_size_limit: 15
single_chunk_attachment_limit: 10
skill_file_size_limit: 50
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 1789888267707--1789888371048-target
source: '1789888267707'
sourceHandle: source
target: '1789888371048'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1789888371048--1789888421836-target
source: '1789888371048'
sourceHandle: source
target: '1789888421836'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1789888421836--1789888459304-target
source: '1789888421836'
sourceHandle: source
target: '1789888459304'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: User Input
type: start
variables:
- default: ''
hint: ''
label: De tekst die je wilt aanpassen
options: []
placeholder: ''
required: true
type: paragraph
variable: tekst
- hint: ''
label: Voor welk niveau
options:
- groep 7
- brugklas
- 3 havo
- 5 vwo
placeholder: ''
required: true
type: select
variable: niveau
height: 134
id: '1789888267707'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: false
variable_selector: []
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 067a0e93-fc5f-4238-94ee-5bc4a742e673
role: system
text: '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.
Niveau: {{#1789888267707.niveau#}}
Tekst: {{#1789888267707.tekst#}}'
selected: false
title: LLM
type: llm
vision:
enabled: false
height: 87
id: '1789888371048'
position:
x: 382
y: 282
positionAbsolute:
x: 382
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: false
variable_selector: []
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: ecf64b48-3410-408c-b487-c9339e079d83
role: system
text: '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.
Tekst: {{#1789888371048.text#}}'
selected: true
title: LLM 2
type: llm
vision:
enabled: false
height: 87
id: '1789888421836'
position:
x: 684
y: 282
positionAbsolute:
x: 684
y: 282
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
outputs:
- value_selector:
- '1789888371048'
- text
value_type: string
variable: herschreven_tekst
- value_selector:
- '1789888421836'
- text
value_type: string
variable: vragen
selected: false
title: Output
type: end
height: 114
id: '1789888459304'
position:
x: 986
y: 282
positionAbsolute:
x: 986
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
viewport:
x: -981.8515625
y: -217.875
zoom: 2
rag_pipeline_variables: []
@@ -0,0 +1,123 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: agent-chat
name: Schoolgids-assistent
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
kind: app
model_config:
agent_mode:
enabled: true
max_iteration: 10
prompt: null
strategy: function_call
tools: []
annotation_reply:
enabled: false
chat_prompt_config:
prompt:
- role: system
text: ''
completion_prompt_config:
conversation_histories_role:
assistant_prefix: ''
user_prefix: ''
prompt:
text: ''
dataset_configs:
datasets:
datasets:
- dataset:
enabled: true
id: 53e10f53-027b-4885-8117-a57b7b18dee5
reranking_enable: true
reranking_mode: reranking_model
reranking_model:
reranking_model_name: qwen3-rerank
reranking_provider_name: langgenius/tongyi/tongyi
retrieval_model: multiple
top_k: 4
dataset_query_variable: ''
external_data_tools: []
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
- .MP4
- .MOV
- .MPEG
- .WEBM
allowed_file_types: []
allowed_file_upload_methods:
- remote_url
- local_file
enabled: false
image:
detail: high
enabled: false
number_limits: 3
transfer_methods:
- remote_url
- local_file
number_limits: 3
model:
completion_params:
stop: []
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
more_like_this:
enabled: false
opening_statement: ''
pre_prompt: '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.
Balie-stand: als een medewerker begint met "Balie:" en daarna een vraag van een
ouder plakt, dan schrijf je het antwoord dat de medewerker naar die ouder kan
sturen. Volg dan de schrijfwijzer in je kennisbank: spreek de ouder aan met u,
taalniveau B1, geen afkortingen, geen woorden uit de lijst te vermijden woorden,
maximaal zes zinnen, en sluit af met een contactmogelijkheid. Weet je het antwoord
niet uit de schoolgids, schrijf dan een kort bericht waarin je zegt dat je het
navraagt en zet [INVULLEN] waar de medewerker het echte antwoord moet aanvullen.'
prompt_type: simple
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
user_input_form: []
version: 0.7.0
@@ -0,0 +1,121 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: agent-chat
name: Ouderbrief-assistent
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
kind: app
model_config:
agent_mode:
enabled: true
max_iteration: 10
prompt: null
strategy: function_call
tools: []
annotation_reply:
enabled: false
chat_prompt_config:
prompt:
- role: system
text: ''
completion_prompt_config:
conversation_histories_role:
assistant_prefix: ''
user_prefix: ''
prompt:
text: ''
dataset_configs:
datasets:
datasets:
- dataset:
enabled: true
id: 53e10f53-027b-4885-8117-a57b7b18dee5
reranking_enable: true
reranking_mode: reranking_model
reranking_model:
reranking_model_name: qwen3-rerank
reranking_provider_name: langgenius/tongyi/tongyi
retrieval_model: multiple
top_k: 4
dataset_query_variable: ''
external_data_tools: []
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
- .MP4
- .MOV
- .MPEG
- .WEBM
allowed_file_types: []
allowed_file_upload_methods:
- remote_url
- local_file
enabled: false
image:
detail: high
enabled: false
number_limits: 3
transfer_methods:
- remote_url
- local_file
number_limits: 3
model:
completion_params:
stop: []
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
more_like_this:
enabled: false
opening_statement: ''
pre_prompt: 'Je bent de ouderbrief-assistent van Het Voorbeeldcollege. Docenten,
mentoren en teamleiders plakken een conceptbrief of een paar losse zinnen, en
jij maakt er een brief van die ouders in één keer begrijpen.
Werkwijze:
1. Raadpleeg altijd eerst de schrijfwijzer in je kennisbank. Pas de regels toe
over taalniveau B1, u en je, te vermijden woorden, de opbouw van een ouderbrief
en de lengte.
2. Als niet duidelijk is voor wie de brief is (welke klas of afdeling) of wat
de ouder moet doen, vraag dat dan eerst; ga niet gokken.
3. Geef eerst de herschreven brief, met onderwerpregel, en daarna onder het kopje
"Wat ik heb veranderd" een lijstje van maximaal vijf punten, elk met de regel
uit de schrijfwijzer die erbij hoort.
4. Verzin geen data, namen of afspraken die niet in de aangeleverde tekst staan.
Ontbreekt iets wat een ouder moet weten, zet dan [INVULLEN] op die plek.
5. Wees kort. Geen inleiding, geen compliment, geen afsluiting van jouw kant.'
prompt_type: simple
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
user_input_form: []
version: 0.7.0
+642
View File
@@ -0,0 +1,642 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: Schoolnieuws
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/tongyi:0.2.22@9cea96ffc7977f536c02999c80ff1283b1819aab9b6fa2fdf789d0c6c7d03715
version: null
kind: app
version: 0.7.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 50
image_file_batch_limit: 10
image_file_size_limit: 10
knowledge_file_size_limit: 15
single_chunk_attachment_limit: 10
skill_file_size_limit: 50
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: knowledge-retrieval
id: 1789912805545--1789913220684-target
selected: false
source: '1789912805545'
sourceHandle: source
target: '1789913220684'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: knowledge-retrieval
targetType: llm
id: 1789913220684--1789913283624-target
selected: false
source: '1789913220684'
sourceHandle: source
target: '1789913283624'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1789913283624--1789913447671-target
selected: false
source: '1789913283624'
sourceHandle: source
target: '1789913447671'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1789913447671--1789914224310-target
source: '1789913447671'
sourceHandle: source
target: '1789914224310'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: llm
id: 1789914224310--1789921225442-target
source: '1789914224310'
sourceHandle: source
target: '1789921225442'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 1789921225442--1789921317767-target
source: '1789921225442'
sourceHandle: source
target: '1789921317767'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: if-else
id: 1789921317767--1789921457891-target
source: '1789921317767'
sourceHandle: source
target: '1789921457891'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: if-else
targetType: end
id: 1789921457891-true-1789921490100-target
source: '1789921457891'
sourceHandle: 'true'
target: '1789921490100'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: if-else
targetType: end
id: 1789921457891-false-1789921594492-target
source: '1789921457891'
sourceHandle: 'false'
target: '1789921594492'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: User Input
type: start
variables:
- default: ''
hint: ''
label: Wat is er gebeurd of gaat er gebeuren? (wie, wat, waar, wanneer)
options: []
placeholder: ''
required: true
type: paragraph
variable: kernboodschap
- default: ''
hint: ''
label: 'Voor welke klas of afdeling? (of: hele school)'
options: []
placeholder: ''
required: true
type: text-input
variable: afdeling
- hint: ''
label: Welke toon past bij dit bericht?
options:
- informatief
- feestelijk
- dringend
placeholder: ''
required: true
type: select
variable: toon
height: 160
id: '1789912805545'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
dataset_ids:
- IV2tjRVYYkvBu0I6hVYVdNJjRHrmp51bTmvGIX9NBOn/1djPKkYpUIg0wBgi7B9m
multiple_retrieval_config:
reranking_enable: true
reranking_mode: reranking_model
reranking_model:
model: qwen3-rerank
provider: langgenius/tongyi/tongyi
top_k: 4
query_attachment_selector: []
query_variable_selector:
- '1789912805545'
- kernboodschap
retrieval_mode: multiple
selected: false
title: Knowledge Retrieval
type: knowledge-retrieval
height: 89
id: '1789913220684'
position:
x: 382
y: 282
positionAbsolute:
x: 382
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789913220684'
- result
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 1a49e20d-2818-4aba-b105-370c308a6f25
role: system
text: 'Begin je antwoord met de regel WEBSITE en daarna een lege regel.
Je schrijft voor Het Voorbeeldcollege, een school voor voortgezet onderwijs.
Schrijf een nieuwsbericht voor de website van maximaal 200 woorden. De
kop is een actieve zin van maximaal acht woorden, zonder uitroepteken.
De eerste alinea beantwoordt wie, wat, waar en wanneer. Sluit af met een
vervolgstap of contactmogelijkheid. Houd je strikt aan de schrijfwijzer
hieronder: taalniveau B1, u voor ouders, te vermijden woorden, namen en
foto''s van leerlingen. Pas de toon aan die is gekozen. Verzin geen feiten.
Ontbreekt iets, schrijf dan [INVULLEN].
Schrijfwijzer: {{#context#}}
Afdeling: {{#1789912805545.afdeling#}}
Toon: {{#1789912805545.toon#}}
Kernboodschap: {{#1789912805545.kernboodschap#}}'
selected: false
title: Website
type: llm
vision:
enabled: false
height: 87
id: '1789913283624'
position:
x: 684
y: 282
positionAbsolute:
x: 684
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789913220684'
- result
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 6c41b62b-abf0-44df-9daa-bdcecce7a7eb
role: system
text: 'Begin je antwoord met de regel OUDERAPP en daarna een lege regel.
Je schrijft voor Het Voorbeeldcollege, een school voor voortgezet onderwijs.
Schrijf een bericht voor de ouderapp van maximaal 80 woorden: ouders lezen
dit op hun telefoon. Eén boodschap, één datum, één actie; geen inleiding
en geen kop. Spreek ouders aan met u. Houd je strikt aan de schrijfwijzer
hieronder. Pas de toon aan die is gekozen. Verzin geen feiten. Ontbreekt
iets, schrijf dan [INVULLEN].
Schrijfwijzer: {{#context#}}
Afdeling: {{#1789912805545.afdeling#}}
Toon: {{#1789912805545.toon#}}
Kernboodschap: {{#1789912805545.kernboodschap#}}'
selected: false
title: Ouderapp
type: llm
vision:
enabled: false
height: 87
id: '1789913447671'
position:
x: 986
y: 282
positionAbsolute:
x: 986
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789913220684'
- result
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 9cabb98b-c62a-4ab2-b7b7-1f1f43556a13
role: system
text: 'Begin je antwoord met de regel SOCIAL en daarna een lege regel.
Je schrijft voor Het Voorbeeldcollege, een school voor voortgezet onderwijs.
Schrijf een bericht voor de sociale media van de school (Instagram en
LinkedIn) van maximaal 60 woorden. Warm en concreet, geen jubeltaal. Sluit
af met maximaal drie hashtags, waarvan altijd #Voorbeeldcollege. Geen
namen van leerlingen en geen verwijzing naar herkenbare foto''s van leerlingen.
Houd je aan de schrijfwijzer hieronder. Pas de toon aan die is gekozen.
Verzin geen feiten. Ontbreekt iets, schrijf dan [INVULLEN].
Schrijfwijzer: {{#context#}}
Afdeling: {{#1789912805545.afdeling#}}
Toon: {{#1789912805545.toon#}}
Kernboodschap: {{#1789912805545.kernboodschap#}}'
selected: false
title: Social
type: llm
vision:
enabled: false
height: 87
id: '1789914224310'
position:
x: 1288
y: 282
positionAbsolute:
x: 1288
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789913220684'
- result
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 7eac55b9-216b-467a-bb85-252c3f21cc98
role: system
text: 'Je bent de controleur van Het Voorbeeldcollege. Hieronder staat een
conceptbericht voor de ouderapp. Beoordeel het op deze punten uit de schrijfwijzer:
maximaal 80 woorden; ouders worden aangesproken met u; één boodschap,
één datum en één actie; geen afkortingen en geen woorden uit de lijst
te vermijden woorden; geen namen van leerlingen; taalniveau B1 (korte
zinnen, gewone woorden).
Werk in twee stappen. Stap 1: noem kort wat niet klopt (of schrijf: niets).
Stap 2: geef de verbeterde versie. Verzin geen feiten; wat niet in het
concept staat, blijft [INVULLEN]. Haal geen feiten, data of tijden weg
die in het concept staan; een uiterste datum om aan te melden hoort bij
de actie en blijft staan. Verander cijfers niet in woorden.
Geef als antwoord ALLEEN de verbeterde tekst, zonder stap 1, zonder kop
en zonder uitleg. Is het concept al goed, geef het dan ongewijzigd terug.
Schrijfwijzer: {{#context#}}
Conceptbericht: {{#1789913447671.text#}}'
selected: false
title: Controleur
type: llm
vision:
enabled: false
height: 87
id: '1789921225442'
position:
x: 1590
y: 282
positionAbsolute:
x: 1590
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
code: "def main(website: str, ouderapp: str, social: str) -> dict:\n redenen\
\ = []\n verboden = [\"middels\", \"omtrent\", \"z.s.m.\", \"d.m.v.\"\
, \" a.s.\", \"gelieve\", \"ouder(s)/verzorger(s)\"]\n teksten = ((\"\
website\", website, 230), (\"ouderapp\", ouderapp, 90), (\"social\", social,\
\ 70))\n for naam, tekst, maximum in teksten:\n aantal = len(tekst.split())\n\
\ if aantal > maximum:\n redenen.append(f\"{naam}: {aantal}\
\ woorden, maximaal {maximum}\")\n if \"[INVULLEN]\" in tekst:\n\
\ redenen.append(f\"{naam}: bevat [INVULLEN], er ontbreekt informatie\"\
)\n for woord in verboden:\n if woord in tekst.lower():\n\
\ redenen.append(f\"{naam}: bevat het te vermijden woord\
\ '{woord.strip()}'\")\n if \"#voorbeeldcollege\" not in social.lower():\n\
\ redenen.append(\"social: #Voorbeeldcollege ontbreekt\")\n return\
\ {\n \"ok\": 0 if redenen else 1,\n \"redenen\": \"\\n\"\
.join(redenen) if redenen else \"Alle regels in orde.\",\n }\n"
code_language: python3
outputs:
ok:
children: null
type: number
redenen:
children: null
type: string
selected: false
title: Poortwachter
type: code
variables:
- value_selector:
- '1789913283624'
- text
value_type: string
variable: website
- value_selector:
- '1789921225442'
- text
value_type: string
variable: ouderapp
- value_selector:
- '1789914224310'
- text
value_type: string
variable: social
height: 51
id: '1789921317767'
position:
x: 1892
y: 282
positionAbsolute:
x: 1892
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: '='
id: 82d4d0c5-8725-45db-abd5-ec4977e37d2f
value: '1'
varType: number
variable_selector:
- '1789921317767'
- ok
logical_operator: and
selected: false
title: IF/ELSE
type: if-else
height: 123
id: '1789921457891'
position:
x: 2194
y: 282
positionAbsolute:
x: 2194
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
outputs:
- value_selector:
- '1789913283624'
- text
value_type: string
variable: website
- value_selector:
- '1789921225442'
- text
value_type: string
variable: ouderapp
- value_selector:
- '1789914224310'
- text
value_type: string
variable: social
selected: false
title: Goedgekeurd
type: end
height: 140
id: '1789921490100'
position:
x: 2496
y: 282
positionAbsolute:
x: 2496
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
outputs:
- value_selector:
- '1789921317767'
- redenen
value_type: string
variable: afgekeurd_omdat
- value_selector:
- '1789913283624'
- text
value_type: string
variable: concept_website
- value_selector:
- '1789921225442'
- text
value_type: string
variable: concept_ouderapp
- value_selector:
- '1789914224310'
- text
value_type: string
variable: concept_social
selected: false
title: Naar de communicatiemedewerker
type: end
height: 166
id: '1789921594492'
position:
x: 2496
y: 461
positionAbsolute:
x: 2496
y: 461
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
viewport:
x: -1050.7133416209424
y: 53.85916780978505
zoom: 0.558163294467307
rag_pipeline_variables: []
@@ -0,0 +1,386 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: workflow
name: Transcriptietool
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
kind: app
version: 0.7.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 50
image_file_batch_limit: 10
image_file_size_limit: 10
knowledge_file_size_limit: 50
single_chunk_attachment_limit: 10
skill_file_size_limit: 50
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1789905909545--1789907829506-target
source: '1789905909545'
sourceHandle: source
target: '1789907829506'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: tool
targetType: llm
id: 1789907829506--1789907910221-target
source: '1789907829506'
sourceHandle: source
target: '1789907910221'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1789907910221--1789908001102-target
source: '1789907910221'
sourceHandle: source
target: '1789908001102'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: User Input
type: start
variables:
- allowed_file_extensions: []
allowed_file_types:
- audio
allowed_file_upload_methods:
- local_file
default: ''
hide: false
hint: ''
label: Opname van het overleg (mp3, m4a of wav)
options: []
placeholder: ''
required: true
type: file
variable: opname
height: 108
id: '1789905909545'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: The audio file to be converted.
ja_JP: The audio file to be converted.
pt_BR: The audio file to be converted.
zh_Hans: 要转换的音频文件。
input_schema: null
label:
en_US: Audio File
ja_JP: Audio File
pt_BR: Audio File
zh_Hans: 音频文件
llm_description: The audio file to be converted.
max: null
min: null
multiple: false
name: audio_file
options: []
placeholder: null
precision: null
required: true
scope: null
template: null
type: file
- auto_generate: null
default: null
form: form
human_description:
en_US: All available ASR models. You can config model in the Model Provider
of Settings.
ja_JP: All available ASR models. You can config model in the Model Provider
of Settings.
pt_BR: All available ASR models. You can config model in the Model Provider
of Settings.
zh_Hans: 所有可用的 ASR 模型。你可以在设置中的模型供应商里配置。
input_schema: null
label:
en_US: Model
ja_JP: Model
pt_BR: Model
zh_Hans: Model
llm_description: null
max: null
min: null
multiple: false
name: model
options:
- icon: null
label:
en_US: gpt-4o-mini-transcribe-2025-12-15(langgenius/openai/openai)
ja_JP: gpt-4o-mini-transcribe-2025-12-15(langgenius/openai/openai)
pt_BR: gpt-4o-mini-transcribe-2025-12-15(langgenius/openai/openai)
zh_Hans: gpt-4o-mini-transcribe-2025-12-15(langgenius/openai/openai)
value: langgenius/openai/openai#gpt-4o-mini-transcribe-2025-12-15
- icon: null
label:
en_US: gpt-4o-mini-transcribe(langgenius/openai/openai)
ja_JP: gpt-4o-mini-transcribe(langgenius/openai/openai)
pt_BR: gpt-4o-mini-transcribe(langgenius/openai/openai)
zh_Hans: gpt-4o-mini-transcribe(langgenius/openai/openai)
value: langgenius/openai/openai#gpt-4o-mini-transcribe
- icon: null
label:
en_US: gpt-4o-transcribe-diarize(langgenius/openai/openai)
ja_JP: gpt-4o-transcribe-diarize(langgenius/openai/openai)
pt_BR: gpt-4o-transcribe-diarize(langgenius/openai/openai)
zh_Hans: gpt-4o-transcribe-diarize(langgenius/openai/openai)
value: langgenius/openai/openai#gpt-4o-transcribe-diarize
- icon: null
label:
en_US: gpt-4o-transcribe(langgenius/openai/openai)
ja_JP: gpt-4o-transcribe(langgenius/openai/openai)
pt_BR: gpt-4o-transcribe(langgenius/openai/openai)
zh_Hans: gpt-4o-transcribe(langgenius/openai/openai)
value: langgenius/openai/openai#gpt-4o-transcribe
- icon: null
label:
en_US: whisper-1(langgenius/openai/openai)
ja_JP: whisper-1(langgenius/openai/openai)
pt_BR: whisper-1(langgenius/openai/openai)
zh_Hans: whisper-1(langgenius/openai/openai)
value: langgenius/openai/openai#whisper-1
placeholder: null
precision: null
required: true
scope: null
template: null
type: select
params:
audio_file: ''
model: ''
plugin_id: null
plugin_unique_identifier: ''
provider_icon: https://cloud.dify.ai/console/api/workspaces/current/tool-provider/builtin/audio/icon
provider_id: audio
provider_name: audio
provider_show_name: Audio
provider_type: builtin
selected: false
title: Speech To Text
tool_configurations:
model:
type: constant
value: langgenius/openai/openai#gpt-4o-transcribe-diarize
tool_description: Convert audio file to text.
tool_label: Speech To Text
tool_name: asr
tool_node_version: '2'
tool_parameters:
audio_file:
type: variable
value:
- '1789905909545'
- opname
type: tool
height: 87
id: '1789907829506'
position:
x: 382
y: 282
positionAbsolute:
x: 382
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: false
variable_selector: []
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 0f390951-257b-4ed0-9cc8-4db2ff8f9c51
role: system
text: 'Begin je antwoord met de regel # VERSLAG en daarna een lege regel.
Je maakt een verslag van een overleg op een school, op basis van het transcript
hieronder. Het transcript komt van automatische spraakherkenning en kan
fouten bevatten in namen en getallen; schrijf dan op wat het meest waarschijnlijk
is en zet een vraagteken tussen haakjes achter wat je niet zeker weet.
Schrijf in het Nederlands, zakelijk en kort. Gebruik precies deze indeling
met deze kopjes:
## Overleg
Een regel: welk overleg, datum, aanwezigen (als dat uit het transcript
blijkt).
## Samenvatting
Maximaal vijf zinnen over wat er is besproken.
## Besluiten
Genummerde lijst. Alleen wat echt is besloten, geen voornemens.
## Actiepunten
Tabel met kolommen: Wat, Wie, Wanneer. Staat er geen datum, schrijf dan
"niet genoemd".
## Doorgeschoven
Punten die bewust naar een volgend overleg zijn verplaatst, met de reden.
Laat zijpaden en informele opmerkingen weg. Verzin niets wat niet in het
transcript staat.
Transcript:
{{#1789907829506.text#}}'
selected: true
title: Verslag
type: llm
vision:
enabled: false
height: 87
id: '1789907910221'
position:
x: 684
y: 282
positionAbsolute:
x: 684
y: 282
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
outputs:
- value_selector:
- '1789907910221'
- text
value_type: string
variable: verslag
- value_selector:
- '1789907829506'
- text
value_type: string
variable: transcript
selected: false
title: Output
type: end
height: 114
id: '1789908001102'
position:
x: 986
y: 282
positionAbsolute:
x: 986
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
viewport:
x: -187.14285714285688
y: -54.355400696864024
zoom: 1.0452961672473866
rag_pipeline_variables: []
@@ -0,0 +1,746 @@
app:
description: ''
icon: 🤖
icon_background: '#FFEAD5'
icon_type: emoji
mode: advanced-chat
name: Studiecoach biologie
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb
version: null
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/tongyi:0.2.22@9cea96ffc7977f536c02999c80ff1283b1819aab9b6fa2fdf789d0c6c7d03715
version: null
kind: app
version: 0.7.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
attachment_image_file_size_limit: 2
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
file_upload_limit: 50
image_file_batch_limit: 10
image_file_size_limit: 10
knowledge_file_size_limit: 50
single_chunk_attachment_limit: 10
skill_file_size_limit: 50
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: Hoi! Ik ben de studiecoach biologie voor thema 4, Ecologie.
Ik leg begrippen uit, help je op weg bij opdrachten (zonder het antwoord te
verklappen) en weet alles van de planning en de toets. Wat wil je weten?
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions:
- Wat is het verschil tussen een populatie en een levensgemeenschap?
- Wanneer is de toets en wat moet ik kennen?
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: question-classifier
id: 1789923857633--1789923937488-target
source: '1789923857633'
sourceHandle: source
target: '1789923937488'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: question-classifier
targetType: knowledge-retrieval
id: 1789923937488-1-1789924472272-target
source: '1789923937488'
sourceHandle: '1'
target: '1789924472272'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: knowledge-retrieval
targetType: llm
id: 1789924472272--1789924628356-target
source: '1789924472272'
sourceHandle: source
target: '1789924628356'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: answer
id: 1789924628356--1789924833591-target
source: '1789924628356'
sourceHandle: source
target: '1789924833591'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: question-classifier
targetType: llm
id: 1789923937488-2-1789924909192-target
source: '1789923937488'
sourceHandle: '2'
target: '1789924909192'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: answer
id: 1789924909192--1789925010730-target
source: '1789924909192'
sourceHandle: source
target: '1789925010730'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: question-classifier
targetType: knowledge-retrieval
id: 1789923937488-1789924020089-1789925051203-target
source: '1789923937488'
sourceHandle: '1789924020089'
target: '1789925051203'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: knowledge-retrieval
targetType: llm
id: 1789925051203--1789925089041-target
source: '1789925051203'
sourceHandle: source
target: '1789925089041'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: answer
id: 1789925089041--1789925225843-target
source: '1789925089041'
sourceHandle: source
target: '1789925225843'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: question-classifier
targetType: human-input
id: 1789923937488-1789924050627-1789925274256-target
source: '1789923937488'
sourceHandle: '1789924050627'
target: '1789925274256'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: human-input
targetType: answer
id: 1789925274256-verstuur-1789925491921-target
source: '1789925274256'
sourceHandle: verstuur
target: '1789925491921'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: human-input
targetType: answer
id: 1789925274256-__timeout-1789925527376-target
source: '1789925274256'
sourceHandle: __timeout
target: '1789925527376'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: question-classifier
targetType: answer
id: 1789923937488-1789924050627-1789925581141-target
source: '1789923937488'
sourceHandle: '1789924050627'
target: '1789925581141'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: User Input
type: start
variables: []
height: 72
id: '1789923857633'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
classes:
- id: '1'
label: CLASS 1
name: 'Begripsvraag: de leerling wil iets uit de lesstof begrijpen of uitgelegd
krijgen, bijvoorbeeld wat een begrip betekent, hoe iets werkt, waarom
iets zo is, of een voorbeeld.'
- id: '2'
label: CLASS 2
name: 'Huiswerkvraag: de leerling vraagt het antwoord op een opdracht, oefening
of toetsvraag, of wil dat het huiswerk gemaakt of nagekeken wordt.'
- id: '1789924020089'
label: CLASS 3
name: 'Planningsvraag: de leerling vraagt naar de toets, de datum, wat er
geleerd moet worden, het huiswerk voor een bepaalde les, de steunles,
het practicum of andere afspraken uit de studiewijzer.'
- id: '1789924050627'
label: CLASS 4
name: 'Persoonlijk of zorgelijk: de leerling schrijft over zichzelf, bijvoorbeeld
dat het niet lukt, stress, faalangst, problemen thuis of in de klas, ziekte,
gepest worden, of wil met de docent of mentor praten. Ook alles wat niet
over biologie gaat.'
model:
completion_params:
temperature: 0.7
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
query_variable_selector:
- '1789923857633'
- sys.query
selected: true
title: Question Classifier
type: question-classifier
vision:
enabled: false
height: 261
id: '1789923937488'
position:
x: 382
y: 282
positionAbsolute:
x: 382
y: 282
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
dataset_ids:
- Uqn0Z4GGwZhu/HhmwEuyZw98elYRlHr+Qlx64oIA3fK4DjLQWqrTbgrsSTkyMncc
multiple_retrieval_config:
reranking_enable: true
reranking_mode: reranking_model
reranking_model:
model: qwen3-rerank
provider: langgenius/tongyi/tongyi
top_k: 4
query_attachment_selector: []
query_variable_selector:
- '1789923857633'
- sys.query
retrieval_mode: multiple
selected: false
title: Knowledge Retrieval
type: knowledge-retrieval
height: 89
id: '1789924472272'
position:
x: 684
y: 282
positionAbsolute:
x: 684
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789924472272'
- result
memory:
query_prompt_template: '{{#sys.query#}}
{{#sys.files#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: false
size: 50
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 74adce4b-ee1a-4ea4-94bb-a1c39e020a1e
role: system
text: 'Je bent de studiecoach biologie van Het Voorbeeldcollege voor leerlingen
van 3 havo. Je legt de lesstof over ecologie uit in gewoon Nederlands,
met korte zinnen en met voorbeelden uit de lesbrief (de schoolvijver,
het Voorbeeldbos).
Regels:
- Gebruik alleen de lesstof hieronder. Staat het antwoord er niet in,
zeg dat dan en verwijs naar de docent of de steunles.
- Spreek de leerling aan met je. Maximaal acht zinnen.
- Eindig met één korte controlevraag waarmee de leerling kan checken of
hij het snapt.
- Geef geen antwoorden op opdrachten uit de lesbrief; leg het begrip uit
en laat de leerling de opdracht zelf maken.
Lesstof: {{#context#}}'
selected: false
title: Uitleg
type: llm
vision:
enabled: false
height: 87
id: '1789924628356'
position:
x: 986
y: 282
positionAbsolute:
x: 986
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: '{{#1789924628356.text#}}'
selected: false
title: Antwoord uitleg
type: answer
variables: []
height: 102
id: '1789924833591'
position:
x: 1288
y: 282
positionAbsolute:
x: 1288
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: false
variable_selector: []
memory:
query_prompt_template: '{{#sys.query#}}
{{#sys.files#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: false
size: 50
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 28220f0a-9914-41ca-bc77-08df80e945c1
role: system
text: 'Je bent de studiecoach biologie van Het Voorbeeldcollege voor leerlingen
van 3 havo. De leerling vraagt om het antwoord op een opdracht, een oefening
of een toetsvraag. Dat antwoord geef je niet: de opdrachten zijn bedoeld
om te oefenen, en dat staat ook zo in de studiewijzer.
Wat je wel doet, in maximaal vijf zinnen:
1. Zeg vriendelijk en kort dat je het antwoord niet geeft, zonder preek.
2. Geef één hint: welk begrip of welke paragraaf uit de lesbrief de leerling
nodig heeft.
3. Stel één tegenvraag waarmee de leerling zelf een stap verder komt.
4. Bied aan om het begrip uit te leggen als de leerling dat wil.
Spreek de leerling aan met je. Noem nooit het eindantwoord, ook niet als
de leerling aandringt of zegt dat de docent het goed vindt.'
selected: false
title: Hint
type: llm
vision:
enabled: false
height: 87
id: '1789924909192'
position:
x: 684
y: 410
positionAbsolute:
x: 684
y: 410
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: '{{#1789924909192.text#}}'
selected: false
title: Antwoord hint
type: answer
variables: []
height: 102
id: '1789925010730'
position:
x: 986
y: 410
positionAbsolute:
x: 986
y: 410
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
dataset_ids:
- Uqn0Z4GGwZhu/HhmwEuyZw98elYRlHr+Qlx64oIA3fK4DjLQWqrTbgrsSTkyMncc
multiple_retrieval_config:
reranking_enable: true
reranking_mode: reranking_model
reranking_model:
model: qwen3-rerank
provider: langgenius/tongyi/tongyi
top_k: 4
query_attachment_selector: []
query_variable_selector:
- '1789923857633'
- sys.query
retrieval_mode: multiple
selected: false
title: Knowledge Retrieval 2
type: knowledge-retrieval
height: 89
id: '1789925051203'
position:
x: 684
y: 536
positionAbsolute:
x: 684
y: 536
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
context:
enabled: true
variable_selector:
- '1789925051203'
- result
memory:
query_prompt_template: '{{#sys.query#}}
{{#sys.files#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: false
size: 50
model:
completion_params: {}
mode: chat
name: gpt-5-mini
provider: langgenius/openai/openai
prompt_template:
- id: 963e0524-9595-4bc3-bef8-a616da873d31
role: system
text: 'Je bent de studiecoach biologie van Het Voorbeeldcollege voor leerlingen
van 3 havo. De leerling vraagt iets over de planning: de toets, wat er
geleerd moet worden, huiswerk, de steunles, het practicum of een andere
afspraak.
Regels:
- Antwoord alleen op basis van de studiewijzer hieronder. Noem data, lesuren
en lokalen precies zoals ze daar staan.
- Staat het er niet in, zeg dat dan en verwijs naar de docent (biologie@voorbeeldcollege.nl)
of de steunles op dinsdag het 8e uur in B12.
- Spreek de leerling aan met je. Kort en concreet, maximaal vijf zinnen.
Gebruik een opsomming als het om meerdere dingen gaat.
Studiewijzer: {{#context#}}'
selected: false
title: Planning
type: llm
vision:
enabled: false
height: 87
id: '1789925089041'
position:
x: 986
y: 536
positionAbsolute:
x: 986
y: 536
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: '{{#1789925089041.text#}}'
selected: false
title: Antwoord planning
type: answer
variables: []
height: 102
id: '1789925225843'
position:
x: 1288
y: 536
positionAbsolute:
x: 1288
y: 536
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
delivery_methods:
- config:
body: 'Een leerling van 3 havo stelde de Studiecoach een persoonlijke
vraag die de coach niet zelf beantwoordt. Lees het gesprek en schrijf
een kort antwoord; dat krijgt de leerling in de chat te zien. Reageer
via deze link: {{#url#}}'
debug_mode: true
recipients:
items:
- email: biologie@voorbeeldcollege.nl
type: external
whole_workspace: false
subject: 'Studiecoach biologie: een leerling heeft je nodig'
enabled: true
id: 9f54978b-77e0-4cc7-a8cf-42158ddbeac4
type: email
form_content: "Bericht van de leerling: {{#sys.query#}}\n\nJouw antwoord aan\
\ de leerling (dit komt letterlijk in de chat): \n{{#$output.antwoord_docent#}}\n"
inputs:
- default:
selector: []
type: constant
value: ''
output_variable_name: antwoord_docent
type: paragraph
selected: false
timeout: 3
timeout_unit: day
title: Docent
type: human-input
user_actions:
- button_style: default
id: verstuur
title: Verstuur aan de leerling
height: 163
id: '1789925274256'
position:
x: 684
y: 664
positionAbsolute:
x: 684
y: 664
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: '
Bericht van je docent:
{{#1789925274256.antwoord_docent#}}'
selected: false
title: Antwoord docent
type: answer
variables: []
height: 118
id: '1789925491921'
position:
x: 986
y: 664
positionAbsolute:
x: 986
y: 664
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: 'Je docent heeft nog niet kunnen reageren. Je bericht is niet verloren:
spreek je docent of mentor morgen even aan, of mail naar biologie@voorbeeldcollege.nl.
Gaat het echt niet goed met je? Praat dan vandaag nog met iemand thuis of
op school, of bel of chat met De Kindertelefoon (0800-0432).'
selected: false
title: Geen reactie
type: answer
variables: []
height: 227
id: '1789925527376'
position:
x: 986
y: 802
positionAbsolute:
x: 986
y: 802
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
- data:
answer: Dank je dat je dit vertelt. Dit is iets voor een mens, niet voor mij.
Ik heb je bericht doorgestuurd naar je docent biologie; zodra die reageert,
zie je het antwoord hier in de chat. Wil je nu meteen met iemand praten?
Ga naar je mentor, of bel of chat met De Kindertelefoon (0800-0432, gratis
en anoniem).
selected: false
title: Doorgestuurd
type: answer
variables: []
height: 227
id: '1789925581141'
position:
x: 684
y: 866
positionAbsolute:
x: 684
y: 866
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 0
viewport:
x: 84.2113567509017
y: 16.36118740102927
zoom: 0.7697721474443565
rag_pipeline_variables: []
+4
View File
@@ -3,6 +3,10 @@
Dify verandert snel. Elke handleiding vermeldt op de titelpagina op welke dag de schermen zijn
vastgelegd. Hier staat per uitgave wat er veranderde.
## 2026-09-21, DSL-bestanden
- Elke Studio-app staat als `.dify.yml` in de map van zijn handleiding, te importeren via Studio, Create, Import DSL file. Installatie-instructie in de README.
## 2026-09-20, eerste uitgave
- Handleidingen 04 (Agent Console: Toetsweekplanner) en 06 (Agent Console: Lesmateriaal-check met eigen Edurep-zoektool).
+25
View File
@@ -60,6 +60,31 @@ De apps uit de handleidingen staan live om uit te proberen:
- Lesmateriaal-check (06): https://udify.app/agent/lkWKedkSW2d3nqBV
- Studiecoach biologie (08): https://udify.app/chat/fP0TJW3s8IXOj9BO
## Apps installeren in je eigen Dify
Elke Studio-app staat ook als bestand in de map van zijn handleiding: `<naam>.dify.yml`. Dat is de
DSL-export van Dify. Zo zet je hem in je eigen werkruimte (online of zelf gehost):
1. Download het `.dify.yml`-bestand uit de map.
2. Ga in Dify naar **Studio**, klik **Create** en kies **Import DSL file**.
3. Sleep het bestand in het venster en klik **Create**.
4. Kies bij elke LLM-stap je eigen model (de export verwijst naar gpt-5-mini via OpenAI) en koppel
bij **Knowledge** je eigen kennisbank; die reist niet mee. Maak hem eerst aan met het
voorbeelddocument uit dezelfde map (handleiding 02, stap 1 tot 5).
5. **Publish**.
De bestanden bevatten geen sleutels. De Agent Console-apps van 04 en 06 kennen (nog) geen export;
die bouw je met de handleiding na.
| Bestand | Handleiding |
| --- | --- |
| 01-workflow/tekst-op-niveau.dify.yml | 01 |
| 02-agent-kennisbank/schoolgids-assistent.dify.yml | 02 (inclusief de Balie-stand uit 03) |
| 03-schoolcommunicatie/ouderbrief-assistent.dify.yml | 03 |
| 03-schoolcommunicatie/schoolnieuws.dify.yml | 03 en 07 (versie 2, met Controleur en Poortwachter) |
| 05-transcriptietool/transcriptietool.dify.yml | 05 |
| 08-chatflow-studiecoach/studiecoach-biologie.dify.yml | 08 |
## Zelf bouwen of bewerken
Elke map heeft dezelfde opbouw: