Guide 04 rebuilt in English: Test week planner, English screenshots, DSL export

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido van Dijk
2026-09-21 11:01:09 +02:00
parent 34837152c2
commit 9479eebd4f
68 changed files with 311 additions and 49 deletions
+1 -1
View File
@@ -343,7 +343,7 @@ We looked at that new console on 20 September 2026 and deliberately did not choo
- there is no link to a knowledge base; the agent reads loose files in a sandbox environment;
- the page does not render stably yet and the texts switch between languages.
![The model choice in the new Agent Console](screenshots/extra-agent-console-modellen.jpg)
![The model choice in the new Agent Console](screenshots/extra-agent-console-models.jpg)
For a workshop with sandbox accounts the Agent app in Studio is the reliable route. What you learn in it, instruction, knowledge base, testing and publishing, still applies in the new console; only the buttons move. Guides 4 and 6 show the Agent Console in action.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

+49 -45
View File
@@ -2,7 +2,7 @@
FOR THE EDITOR
Guide 4: Agent Console (beta), the Test week planner. Screenshots in screenshots/, captured on
20 September 2026 (Dify cloud, Dutch build of the same agent).
20 and 21 September 2026 (Dify cloud, English interface).
Convert to HTML, PDF and Word: python3 build.py
(python-markdown, google-chrome and libreoffice; layout and logo in _tools/build_guide.py)
@@ -15,19 +15,20 @@ Formatting conventions (see also README.md):
- Blockquote starting with **Your choice** = a choice for the participant (green box)
Sample file: exam-timetable-example.csv (fictional timetable, 12 to 16 October 2026, in this folder).
Published example app (Dutch): https://udify.app/agent/rKoqw8rbmp0IF86Q
Published example app: https://udify.app/agent/x0yjuGoRIVdZaVZe
DSL export: test-week-planner.dify.yml (the CSV is not included in an agent export; upload it again after importing).
-->
# Building in the Agent Console: the Test week planner
**Guide 4 for the AI Agents workshop**
LeX Consultancy B.V. · 20 September 2026
LeX Consultancy B.V. · 21 September 2026
You build an agent that makes a personal study plan for the test week together with a student. The agent reads the exam timetable, asks when the student can study and how hard the subjects are, and then delivers a plan in the chat plus two files: an Excel overview and a calendar file for the phone.
This is a different kind of building from guides 1, 3 and 5. There you put the steps in a workflow yourself, one after another. In the **Agent Console** you only give an instruction, files and tools; the agent decides for itself how to tackle the question, writes a small program if needed and creates files in its own Linux sandbox. That is the "ReAct" pattern from the Design patterns appendix: look, choose, act, look again.
This guide follows the cloud version of Dify as it looked on 20 September 2026. The Agent Console is **beta**: screens, buttons and behaviour change faster than in the rest of Dify. If your screen differs, follow what you see, not what is written here. The screenshots show the Dutch build of this agent (Dutch prompt, Dutch conversation); the screens and clicks are the same.
This guide follows the cloud version of Dify as it looked on 21 September 2026. The Agent Console is **beta**: screens, buttons and behaviour change faster than in the rest of Dify. If your screen differs, follow what you see, not what is written here.
**How to read this guide**
@@ -93,7 +94,7 @@ In short: what you build here is a working prototype to learn how an agent works
1. Click **Agents** in the left-hand menu.
![The Agents overview, still empty](screenshots/01-agents-overzicht.jpg)
![The Agents overview](screenshots/01-agents-overview.jpg)
2. Click **Create** at the top right and choose **Create from Blank**.
@@ -101,7 +102,7 @@ In short: what you build here is a working prototype to learn how an agent works
3. The **Create agent** window appears.
![The Create agent window](screenshots/03-agent-aanmaken-leeg.jpg)
![The Create agent window](screenshots/03-create-agent-empty.jpg)
4. Fill in the fields.
@@ -111,13 +112,13 @@ In short: what you build here is a working prototype to learn how an agent works
| Role | `Study planner for lower secondary students` |
| Description | `Makes a personal study plan for the test week together with the student: spreads the material over the available moments and delivers the plan as Excel and as a calendar file.` |
![The fields filled in](screenshots/04-agent-aanmaken-ingevuld.jpg)
![The fields filled in](screenshots/04-create-agent-filled.jpg)
5. Click **Create**.
You arrive on the **Configure** screen. On the left is the agent's form (model, prompt, skills, files, tools), on the right a chat window with two tabs: **BUILD** and **PREVIEW**.
![The Configure screen of a new agent](screenshots/05-configureren-nieuw.jpg)
![The Configure screen of a new agent](screenshots/05-configure-new.jpg)
> On the right it says "Build your agent via chat": you can tell the agent in plain language what it should do and Dify fills in the form on the left. That works, but it costs credits for every message and you know less well what is in your instruction. In this guide you fill in the form yourself; that is more precise and free. The build chat is handy later when you want something adjusted ("make the tone friendlier").
@@ -129,15 +130,15 @@ At the top it says **gpt-5** with an orange label **Incompatible**: that model c
1. Click the model field. A list of models opens.
![The model menu with the OpenAI models](screenshots/06-modelmenu.jpg)
![The model menu with the OpenAI models](screenshots/06-model-menu.jpg)
2. Type `gpt-5.4` in the search field.
![Searching for gpt-5.4](screenshots/07-model-zoeken.jpg)
![Searching for gpt-5.4](screenshots/07-model-search.jpg)
3. Click **gpt-5.4** (without suffix). The Incompatible label disappears.
![The model is set to gpt-5.4](screenshots/08-model-gekozen.jpg)
![The model is set to gpt-5.4](screenshots/08-model-chosen.jpg)
> Via **Show incompatible models** at the bottom of the list you see which models do not work. You can choose such a model, but the agent will not run. If you type `mini` in the search field, you only get Gemini models: the gpt-5-mini from the other guides is not available here.
@@ -176,7 +177,7 @@ What you deliver:
You give no grades, judgements or predictions about how the tests will go. You keep nothing about the student after the conversation.
```
![The instruction is in the PROMPT field](screenshots/09-prompt-ingevuld.jpg)
![The instruction is in the PROMPT field](screenshots/09-prompt-filled.jpg)
The instruction has four parts, and that order is no accident: **who you are**, **what you need** (and in which order you ask for it), **the rules** the plan must meet, and **what you deliver**. The last paragraph is the boundaries. An agent without rules also makes a plan, but a random one.
@@ -192,19 +193,19 @@ The form saves itself; at the bottom you see "Saved ... ago".
1. Scroll down in the left-hand panel. You see three sections: **SKILLS**, **FILES** and **TOOLS**, each with an **Add** button.
![Skills, files and tools, still empty](screenshots/10-skills-bestanden-tools.jpg)
![Skills, files and tools, still empty](screenshots/10-skills-files-tools.jpg)
2. Under **FILES** click **Add**. The **Upload file** window appears.
![The Upload file window](screenshots/11-bestand-uploaden.jpg)
![The Upload file window](screenshots/11-upload-file.jpg)
3. Click **browse** and choose `exam-timetable-example.csv`, or drag the file into the box.
![The file is ready](screenshots/12-bestand-gekozen.jpg)
![The file is ready](screenshots/12-file-chosen.jpg)
4. Click **Upload**. The file is now under FILES and "File uploaded" appears at the top right.
![The timetable is among the files](screenshots/13-bestand-geupload.jpg)
![The timetable is among the files](screenshots/13-file-uploaded.jpg)
Files in this section are ready for the agent in its sandbox. It reads them itself when it needs them; in the instruction you only need to refer to them, as in point 1 of "What you need".
@@ -226,13 +227,11 @@ The agent needs to know what day it is today to plan "from today until the last
3. Click **Add all** and close the list with Escape. CurrentTime is now under TOOLS.
![CurrentTime has been added](screenshots/16-tool-toegevoegd.jpg)
![CurrentTime has been added](screenshots/16-tool-added.jpg)
> More tools is not better. Every tool you add is one the agent can also use, and every tool costs a bit of the model's attention. Add only what the task needs. For the planner that is one tool.
Also have a look at **SKILLS**: click **Add** there and you see one option, **Upload package**, a zip file with a SKILL.md inside. Skills are reusable work instructions you can put into several agents. This planner does not need them; close the menu with Escape.
![Skills: only Upload package](screenshots/17-skills-upload-package.jpg)
Also have a look at **SKILLS**: click **Add** there and a small popover appears with one option, **Upload skill.zip**, a zip file with a SKILL.md inside. Skills are reusable work instructions you can put into several agents. This planner does not need them; close the popover by clicking next to it.
---
@@ -240,7 +239,7 @@ Also have a look at **SKILLS**: click **Add** there and you see one option, **Up
1. Click **PREVIEW** at the top right of the chat window. The window empties and shows "Run the agent as a finished chat, exactly as people will experience it after publishing".
![The PREVIEW tab](screenshots/18-voorbeeld-leeg.jpg)
![The PREVIEW tab](screenshots/18-preview-empty.jpg)
2. Type the first message and press Enter.
@@ -248,9 +247,9 @@ Also have a look at **SKILLS**: click **Add** there and you see one option, **Up
| --- | --- |
| 1 | `Hi, I want a study plan for the test week.` |
The agent reads the timetable from the file, summarises it and asks its first question. Above the answer it says "Thinking · 8 s": that is how long the agent worked before answering.
The agent reads the timetable from the file, summarises it and asks its first question. Above the answer it says "Thinking · 9.06s": that is how long the agent worked before answering.
![The first answer: timetable summarised, first question](screenshots/19-test-eerste-antwoord.jpg)
![The first answer: timetable summarised, first question](screenshots/19-test-first-answer.jpg)
3. Answer the question about study moments.
@@ -260,7 +259,7 @@ The agent reads the timetable from the file, summarises it and asks its first qu
The agent repeats the moments per day and asks the third question: how hard each subject is.
![The second answer: study moments repeated, question about the subjects](screenshots/20-test-vakken-vraag.jpg)
![The second answer: study moments repeated, question about the subjects](screenshots/20-test-subjects-question.jpg)
4. Answer the question about the subjects.
@@ -268,21 +267,21 @@ The agent repeats the moments per day and asks the third question: how hard each
| --- | --- |
| 3 | `English easy, maths hard, French easy, history average, biology average, German hard.` |
Now the agent gets to work, and that takes half a minute. You see the plan per day appear, then "Files:" with only study-plan.xlsx at first, and at the bottom the **Stop responding** button while it is busy.
Now the agent gets to work, and that takes about a minute. Under "Thinking" lines such as **Ran commands** and **shell_wait** appear one by one: the agent is working in its sandbox. At the bottom is the **Stop responding** button while it is busy.
![The plan appears, the agent is still busy](screenshots/21-test-plan-bezig.jpg)
![The agent is busy in its sandbox](screenshots/21-test-plan-busy.jpg)
5. Wait until the Stop responding button is gone. Below the plan there are now two blue links, **study-plan.xlsx** and **study-plan.ics**, and the closing question "Do you want to move anything?".
5. Wait until the Stop responding button is gone. The answer starts with two blue links, **study-plan.xlsx** and **study-plan.ics**, then the plan per day, and it ends with the closing question "Would you like to move anything?".
![The plan is done, with two files](screenshots/22-test-plan-klaar.jpg)
![The plan is done, with two files](screenshots/22-test-plan-done.jpg)
6. Click **Thinking · 31 s** above the answer. Two lines **Commands executed** unfold: those are the moments the agent did something in its sandbox.
6. Click **Thinking · 55.45s** above the answer. Lines **Ran commands** and **shell_wait** unfold: those are the moments the agent did something in its sandbox.
![Thinking expanded](screenshots/23-nadenken-uitgeklapt.jpg)
![Thinking expanded](screenshots/23-thinking-expanded.jpg)
7. Click the first **Commands executed**. You see the command the agent wrote itself: a Python program (`make_plan.py`) containing the timetable, the study moments and the rules, which produces the Excel file and the calendar file.
7. Click the first **Ran commands**. Under REQUEST you see the command the agent wrote itself: a Python program (`make_plan.py`) containing the timetable, the study moments and the rules, which produces the Excel file and the calendar file.
![The command the agent executed: a Python script](screenshots/24-opdracht-script.jpg)
![The command the agent executed: a Python script](screenshots/24-command-script.jpg)
This is the difference from a workflow. You never said "write a program". The agent worked out for itself that making an Excel file is easiest with a small program, wrote it, ran it, and gave you the files back. If it goes wrong, it tries again. That is also why it costs more and takes longer.
@@ -292,27 +291,31 @@ This is the difference from a workflow. You never said "write a program". The ag
| --- | --- |
| 4 | `On Tuesday, Wednesday and Thursday I have nothing from 16:00 to 16:40. Can you put maths and German there once more?` |
The agent does not just do it: it points out that Tuesday is the evening before history, Wednesday the evening before biology, and that according to the rules only revision of that subject belongs there. It proposes an alternative and asks what you want.
What happens next differs from run to run, and that is the lesson. In an earlier run the agent talked back: Tuesday is the evening before history, Wednesday the evening before biology, and according to the rules only revision belongs there. In the run shown here it first checked what you meant (which dates, one extra block each) and, after "Yes, exactly", simply did it: it replaced the revision blocks on Tuesday and Wednesday with maths and German and regenerated both files.
![The agent sticks to the planning rule](screenshots/25-test-verschuiven.jpg)
![The agent checks what you mean](screenshots/25-test-move-question.jpg)
> **Your choice: how strict.** The agent talks back here because of the rule "The evening before a test: revision only". If you want the student to always have the last word, add: "If the student wants something other than the rules, explain once why the rule exists and then do what the student asks."
![The plan is adjusted and the files are regenerated](screenshots/26-test-move-done.jpg)
Both are defensible, and the same prompt gave both. An agent interprets its rules; it does not execute them like a program. If a rule must always hold, say so in so many words.
> **Your choice: how strict.** The rule "The evening before a test: revision only" is in the prompt, but the student's request won here. If the rule must hold, add: "These rules are not negotiable. If the student asks for something else, explain why the rule exists and offer an alternative within the rules." If you want the student to always have the last word, add the opposite: "If the student wants something other than the rules, explain once why the rule exists and then do what the student asks."
---
## Step 7. Publish
1. Click **Publish update** at the bottom of the left-hand panel. The button turns grey with a tick **Published**, and "Action succeeded" appears at the top right.
1. Click **Publish update** at the bottom of the left-hand panel. The button turns grey with a tick **Published**, and the status line says "Up to date · Published a few seconds ago".
![The agent is published](screenshots/26-gepubliceerd.jpg)
![The agent is published](screenshots/27-published.jpg)
2. Click **Access point** in the left-hand menu. You see the **Webapp** with the **Access URL** and the **Backend service API**.
2. Click **Access Point** in the left-hand menu. You see the **Web App** with the **Access URL** and the **Backend Service API**.
![The Access point screen](screenshots/27-toegangspunt.jpg)
![The Access Point screen](screenshots/28-access-point.jpg)
3. Click **Open** behind the URL. The webapp opens in a new tab: an empty chat window with the agent's name.
![The webapp, as a student sees it](screenshots/28-webapp-leeg.jpg)
![The webapp, as a student sees it](screenshots/29-webapp-empty.jpg)
4. Type a message to check that the published version works.
@@ -320,7 +323,7 @@ The agent does not just do it: it points out that Tuesday is the evening before
| --- | --- |
| 1 | `Hi, can you help me plan?` |
![The conversation in the webapp](screenshots/29-webapp-gesprek.jpg)
![The conversation in the webapp](screenshots/30-webapp-conversation.jpg)
> If you change the instruction later, the webapp only changes after you click **Publish update** again. Until then it says "Unpublished changes" at the bottom.
@@ -330,11 +333,11 @@ The agent does not just do it: it points out that Tuesday is the evening before
1. Click **Logs** in the left-hand menu. Every conversation through the webapp is listed here, with the first sentence as title, the number of messages and the time.
![Logs with the conversation from the webapp](screenshots/30-logs.jpg)
![Logs with the conversation from the webapp](screenshots/31-logs.jpg)
2. Click **Monitoring** for the counters: number of messages, active users, average length of a conversation and the speed of the model.
![Monitoring of the agent](screenshots/31-monitoring.jpg)
![Monitoring of the agent](screenshots/32-monitoring.jpg)
> Conversations from the PREVIEW tab are not in Logs; only conversations through the webapp or the API. If you want to see a test conversation again, do the test in the webapp.
@@ -358,8 +361,9 @@ The agent does not just do it: it points out that Tuesday is the evening before
| Label **Incompatible** next to the model | This model cannot drive the Agent Console. Choose gpt-5.4 or higher, or a Gemini model (step 2) |
| The agent asks all questions at once | The sentence "Ask these questions one at a time" is missing from the instruction |
| The agent asks for the timetable while the file is there | The file name in the instruction does not match the uploaded file, or the file is not there yet (step 4) |
| The plan puts blocks at moments you did not give, or leaves study moments unused | The model interprets the rules; always check the plan against the rules (see also Make it yours). In our test 40 minutes stayed unused on Tuesday, Wednesday and Thursday because the rule "evening before the test: revision only" clashes with "hard subjects get twice as much time" |
| The plan puts blocks at moments you did not give, or leaves study moments unused | The model interprets the rules; always check the plan against the rules (see also Make it yours). In our test the agent used 16:00 to 17:30 of the 16:00 to 18:00 you gave, so 30 minutes stayed unused each day |
| Only study-plan.xlsx appears, no .ics | The agent is still busy; wait until Stop responding is gone. If the file does not come, ask "Also make the ics file" |
| The agent does what the student asks against a rule | Normal: the rules are text the model interprets, not code. Make the rule explicit ("not negotiable") or accept it, see the green box at step 6 |
| An empty answer bubble that stays | Beta behaviour: the agent stopped without text. Click the "retry" arrow under the message, or start a new conversation |
| The conversation in PREVIEW is not in Logs | Normal; only webapp and API conversations are logged (step 8) |
| The credits drop fast | Every conversation costs tens of thousands of tokens. Set OpenAI to Usage priority: API key, or test less often |
@@ -408,4 +412,4 @@ The timetable is invented and the planning rules are an example. This chapter he
**Beta.** The Agent Console can change from one week to the next: other buttons, other models that are or are not compatible, other behaviour with files. Keep the prompt outside Dify as well (it is in this guide), so you can recreate the agent in five minutes.
**From prototype to your school environment.** Via the three dots on the agent's card (**Export DSL**) you save the agent as a file and import it into another Dify account via **Create** → **Import DSL file**. The model has to be reconnected there; files and tools come along.
**From prototype to your school environment.** Via the three dots next to the agent's name (**Export DSL**) you save the agent as a file and import it into another Dify account via **Create** → **Import DSL file**. The model has to be reconnected there and the file under FILES has to be uploaded again (an agent export lists it but does not contain it); the prompt and the tools come along. The export of this agent is in the folder of this guide as `test-week-planner.dify.yml`.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 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.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

+249
View File
@@ -0,0 +1,249 @@
agent:
package_ref: agent_1
agent_packages:
agent_1:
metadata:
description: 'Makes a personal study plan for the test week together with the
student: spreads the material over the available moments and delivers the
plan as Excel and as a calendar file.'
icon: 🧸
icon_background: '#F5F3FF'
icon_type: emoji
name: Test week planner
role: Study planner for lower secondary students
omitted_assets:
- hash: 1fe4b6c220e49b58a9fac63231711de8deca37fcd1a1b57dd333bf960c9c7129
kind: file
mime_type: text/csv
name: exam-timetable-example.csv
size: 590
schema_version: 1
soul:
app_features:
file_upload:
allowed_file_extensions:
- JPG
- JPEG
- PNG
- GIF
- WEBP
- SVG
allowed_file_types:
- document
- image
- audio
- video
allowed_file_upload_methods:
- local_file
- remote_url
enabled: true
image:
enabled: true
number_limits: 3
opening_statement: null
retriever_resource: null
sensitive_word_avoidance: null
speech_to_text: null
suggested_questions: null
suggested_questions_after_answer: null
text_to_speech: null
app_variables: []
config_files:
- file_id: ''
file_kind: upload_file
hash: 1fe4b6c220e49b58a9fac63231711de8deca37fcd1a1b57dd333bf960c9c7129
is_missing: true
mime_type: text/csv
name: exam-timetable-example.csv
size: 590
config_note: ''
config_skills: []
env:
secret_refs: []
variables: []
human:
contacts: []
tools: []
knowledge:
sets: []
memory:
artifacts: []
budget: null
scope: null
misc_legacy:
file_upload:
allowed_file_extensions:
- JPG
- JPEG
- PNG
- GIF
- WEBP
- SVG
allowed_file_types:
- document
- image
- audio
- video
allowed_file_upload_methods:
- local_file
- remote_url
enabled: true
image:
enabled: true
number_limits: 3
opening_statement: null
retriever_resource: null
sensitive_word_avoidance: null
speech_to_text: null
suggested_questions: null
suggested_questions_after_answer: null
text_to_speech: null
model:
credential_ref: null
model: gpt-5.4
model_provider: langgenius/openai/openai
model_settings:
frequency_penalty: null
max_tokens: null
presence_penalty: null
response_format: null
stop: null
temperature: null
top_p: null
plugin_id: langgenius/openai
prompt:
system_prompt: 'You are the Test week planner for students in lower secondary
school. You help a student make a personal study plan for the test week.
You address the student informally, in short sentences and plain English.
What you need from the student:
1. The exam timetable. If it is already in your files (exam-timetable-example.csv),
use that and summarise it briefly; otherwise ask for it.
2. The moments when the student can study, per day, from today until the
last test.
3. Per subject how hard the student finds it: easy, average or hard.
Ask these questions one at a time, not all at once. Only start planning
when you have all three.
Planning rules:
- Hard subjects get about twice as much time as easy subjects.
- Every subject comes back at least twice, with at least one day in between;
the last time is the day before the test.
- A study block lasts 25 to 45 minutes, followed by a 10-minute break. Never
more than three blocks in a row.
- The evening before a test: revision only, no new material.
- Plan nothing at moments the student has not given.
What you deliver:
- An overview in the chat: per day the blocks with subject, time and exactly
what is studied (which chapters or sections).
- Two files you create in the sandbox: study-plan.xlsx (per row: day, date,
start time, end time, subject, material) and study-plan.ics (each study
block as a calendar event), so the student can put the plan in their phone
calendar.
- End with the question whether the student wants to move anything.
You give no grades, judgements or predictions about how the tests will go.
You keep nothing about the student after the conversation.'
sandbox:
config:
cpu: null
env: []
image: null
working_dir: null
provider: null
schema_version: 1
tools:
cli_tools: []
dify_tools:
- credential_ref: null
credential_type: unauthorized
description: null
enabled: true
name: null
plugin_id: null
provider: time
provider_id: time
provider_type: builtin
runtime_parameters: {}
tool_name: current_time
- credential_ref: null
credential_type: unauthorized
description: null
enabled: true
name: null
plugin_id: null
provider: time
provider_id: time
provider_type: builtin
runtime_parameters: {}
tool_name: localtime_to_timestamp
- credential_ref: null
credential_type: unauthorized
description: null
enabled: true
name: null
plugin_id: null
provider: time
provider_id: time
provider_type: builtin
runtime_parameters: {}
tool_name: timestamp_to_localtime
- credential_ref: null
credential_type: unauthorized
description: null
enabled: true
name: null
plugin_id: null
provider: time
provider_id: time
provider_type: builtin
runtime_parameters: {}
tool_name: timezone_conversion
- credential_ref: null
credential_type: unauthorized
description: null
enabled: true
name: null
plugin_id: null
provider: time
provider_id: time
provider_type: builtin
runtime_parameters: {}
tool_name: weekday
workspace_skills: []
app:
description: 'Makes a personal study plan for the test week together with the student:
spreads the material over the available moments and delivers the plan as Excel
and as a calendar file.'
icon: 🧸
icon_background: '#F5F3FF'
icon_type: emoji
mode: agent
name: Test week planner
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
+6
View File
@@ -3,6 +3,12 @@
Dify changes fast. Every guide states on its title page on which day the screens were captured.
This is what changed per release.
## 2026-09-21, guide 04 in English
- Guide 04 rebuilt in the Agent Console with the English interface and the English agent Test week planner (link in the README). The test now shows the agent checking the student's request instead of refusing it; the text explains why the same prompt can do both.
- Export of the agent as `04-agent-console/test-week-planner.dify.yml`, with import instructions in the README (the CSV must be uploaded again).
- The Agent Console model screenshot in guide 02 replaced with the English one.
## 2026-09-20, English screenshots
- Guides 01, 02, 03, 07 and 08 rebuilt with the English Dify interface and English apps (Text at level, School guide assistant, Parent letter assistant, School news with checks, Study coach biology; links in the README). The other guides follow.
+6 -3
View File
@@ -58,7 +58,7 @@ The apps are live to try out:
- School guide assistant (02, with the Reception mode from 03): https://udify.app/chat/6Y6WnP0m5Z3jSHRs
- Parent letter assistant (03): https://udify.app/chat/oB2H2mLaoKR6d4IC
- School news (03 and 07): https://udify.app/workflow/E2CHtVPKe3PLg7GF
- Test week planner (04; Dutch build): https://udify.app/agent/rKoqw8rbmp0IF86Q
- Test week planner (04): https://udify.app/agent/x0yjuGoRIVdZaVZe
- Transcription tool (05; Dutch build): https://udify.app/workflow/7N5dNg8fD9qXHA80
- Materials check (06; Dutch build): https://udify.app/agent/lkWKedkSW2d3nqBV
- Study coach biology (08): https://udify.app/chat/mgvtZPbDVAIp5gbh
@@ -76,8 +76,10 @@ export. This is how you put it in your own workspace (online or self-hosted):
first with the sample document from the same folder (guide 02, steps 1 to 5).
5. **Publish**.
The files contain no keys. The Agent Console apps of 04 and 06 have no export (yet); you build
those with the guide.
The files contain no keys. An Agent Console app (04) is imported the same way, but from the
**Agents** page (**Create**, **Import DSL file**). Its export lists the uploaded file but does
not contain it: after importing, upload the CSV from the guide's folder again under **FILES**.
The Materials check (06) has no export yet; you build it with the guide.
| File | Guide |
| --- | --- |
@@ -85,6 +87,7 @@ those with the guide.
| 02-agent-knowledge-base/school-guide-assistant.dify.yml | 02 (including the Reception mode from 03) |
| 03-school-communication/parent-letter-assistant.dify.yml | 03 |
| 03-school-communication/school-news.dify.yml | 03 and 07 (version 2, with Checker and Gatekeeper) |
| 04-agent-console/test-week-planner.dify.yml | 04 (Agent Console; upload exam-timetable-example.csv again) |
| 05-transcription-tool/transcription-tool.dify.yml | 05 |
| 08-chatflow-study-coach/study-coach-biology.dify.yml | 08 |