08: English screenshots, English Study coach with open Wikipedia resource, DSL export
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@@ -2,12 +2,12 @@
|
|||||||
FOR THE EDITOR
|
FOR THE EDITOR
|
||||||
|
|
||||||
Guide 8: Chatflow, the Study coach for Biology Year 9. Screenshots in screenshots/, captured on
|
Guide 8: Chatflow, the Study coach for Biology Year 9. Screenshots in screenshots/, captured on
|
||||||
20 September 2026 (Dify cloud, Dutch build of the same app).
|
21 September 2026 (Dify cloud, English interface).
|
||||||
|
|
||||||
Convert to HTML, PDF and Word: python3 build.py
|
Convert to HTML, PDF and Word: python3 build.py
|
||||||
Sample material: lesson-booklet-ecology.pdf and study-planner-biology-y9-ecology.pdf (fictional,
|
Sample material: lesson-booklet-ecology.pdf and study-planner-biology-y9-ecology.pdf (fictional,
|
||||||
generated by _tools/make_samples.py); the Dutch build also used an open module from the Dutch
|
generated by _tools/make_samples.py) plus food-web-wikipedia.pdf, the Wikipedia article "Food web"
|
||||||
Stercollectie (CC BY-SA 4.0) as a third document.
|
(CC BY-SA 4.0) as the open third document.
|
||||||
|
|
||||||
Formatting conventions (see also README.md):
|
Formatting conventions (see also README.md):
|
||||||
- Numbered list = actions (click, choose)
|
- Numbered list = actions (click, choose)
|
||||||
@@ -16,7 +16,7 @@ Formatting conventions (see also README.md):
|
|||||||
- Blockquote (>) = pitfall or tip (orange box)
|
- Blockquote (>) = pitfall or tip (orange box)
|
||||||
- Blockquote starting with **Your choice** = a choice for the participant (green box)
|
- Blockquote starting with **Your choice** = a choice for the participant (green box)
|
||||||
|
|
||||||
Published example app (Dutch): https://udify.app/chat/fP0TJW3s8IXOj9BO
|
Published example app: https://udify.app/chat/mgvtZPbDVAIp5gbh
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# A study coach for your subject: Chatflow with memory, routes and a human in the loop
|
# A study coach for your subject: Chatflow with memory, routes and a human in the loop
|
||||||
@@ -43,7 +43,7 @@ The four routes:
|
|||||||
| Planning question | Knowledge base (study planner) → concrete answer | "When is the test and what do I need to know?" |
|
| Planning question | Knowledge base (study planner) → concrete answer | "When is the test and what do I need to know?" |
|
||||||
| Personal or worrying | The teacher gets an email, the student gets the teacher's reply | "I don't get any of it and I don't dare ask" |
|
| Personal or worrying | The teacher gets an email, the student gets the teacher's reply | "I don't get any of it and I don't dare ask" |
|
||||||
|
|
||||||
This guide follows the cloud version of Dify of 20 September 2026, on a Professional account. On a sandbox account everything works the same; you just upload the documents one at a time. The screenshots show the Dutch build of this app (Dutch prompts, Dutch conversations); the screens and clicks are the same.
|
This guide follows the cloud version of Dify of 20 September 2026, on a Professional account. On a sandbox account everything works the same; you just upload the documents one at a time.
|
||||||
|
|
||||||
**How to read this guide**
|
**How to read this guide**
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ Two documents come with this guide, plus a place for a third:
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `lesson-booklet-ecology.pdf` | Five sections of content, twelve tasks, a glossary (5 pp.) | Written for this guide, fictional, free to use |
|
| `lesson-booklet-ecology.pdf` | Five sections of content, twelve tasks, a glossary (5 pp.) | Written for this guide, fictional, free to use |
|
||||||
| `study-planner-biology-y9-ecology.pdf` | Learning objectives, schedule per week, test date, support session, AI rules (2 pp.) | Written for this guide, fictional |
|
| `study-planner-biology-y9-ecology.pdf` | Learning objectives, schedule per week, test date, support session, AI rules (2 pp.) | Written for this guide, fictional |
|
||||||
| An open resource of your choice | For example a chapter on ecosystems from OpenStax Biology 2e (CC BY 4.0) or a CK-12 lesson on food webs | Open educational resources; the Dutch build used a module from the Dutch Stercollectie, CC BY-SA 4.0 |
|
| `food-web-wikipedia.pdf` | The Wikipedia article "Food web" as a PDF (24 pp.), as an example of an open resource | Wikipedia, CC BY-SA 4.0; replace it with a resource from your own subject, for example a CK-12 lesson or an OpenStax chapter (check the licence: OpenStax is CC BY-NC-SA) |
|
||||||
|
|
||||||
The third document is real open learning material. A CC BY licence means: you may use it, put it in a knowledge base and adapt it, as long as you credit the source; CC BY-SA adds that you share what you make of it under the same licence. The study planner mentions the open resource as extra practice material, so the coach can refer to it.
|
The third document is real open learning material. A CC BY licence means: you may use it, put it in a knowledge base and adapt it, as long as you credit the source; CC BY-SA adds that you share what you make of it under the same licence. The study planner mentions the open resource as extra practice material, so the coach can refer to it.
|
||||||
|
|
||||||
@@ -103,14 +103,14 @@ The third document is real open learning material. A CC BY licence means: you ma
|
|||||||
1. **Knowledge** → **Create** (or **Create a ready-to-use knowledge base**).
|
1. **Knowledge** → **Create** (or **Create a ready-to-use knowledge base**).
|
||||||
2. Click **Browse** and choose the booklet and the study planner. On a Professional account you can choose several files at once; in the sandbox one at a time (then **Add file**).
|
2. Click **Browse** and choose the booklet and the study planner. On a Professional account you can choose several files at once; in the sandbox one at a time (then **Add file**).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. **Next**.
|
3. **Next**.
|
||||||
4. Set **Delimiter** to `\n\n` and click **Preview Chunk**. The booklet falls into about fourteen pieces of roughly a thousand characters: each piece is a paragraph with real content.
|
4. Set **Delimiter** to `\n\n` and click **Preview Chunk**. The booklet falls into thirteen pieces of roughly a thousand characters: each piece is a paragraph with real content.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. Scroll down, leave the rest, and click **Save & Process**.
|
5. Scroll down, leave the rest, and click **Save & Process**.
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ Via the three dots behind a document you can also rename, download or delete it;
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ Via the three dots behind a document you can also rename, download or delete it;
|
|||||||
|
|
||||||
2. **Create**. Dify already puts down a default flow: User Input → LLM → Answer.
|
2. **Create**. Dify already puts down a default flow: User Input → LLM → Answer.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Step 5. Clear the default flow
|
### Step 5. Clear the default flow
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ Those two blocks do not fit our plan; we build everything ourselves.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Step 6. The Question Classifier
|
### Step 6. The Question Classifier
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ Personal or worrying: the student writes about themselves, for example that it i
|
|||||||
|
|
||||||
4. Scroll to **NEXT STEP**: every class now has its own exit.
|
4. Scroll to **NEXT STEP**: every class now has its own exit.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> The last class ends with "Also anything that is not about biology". That is deliberate: anything that fits nowhere ends up with a person instead of with a model that invents an answer anyway. Always put your safety net in the class that goes to a person.
|
> The last class ends with "Also anything that is not about biology". That is deliberate: anything that fits nowhere ends up with a person instead of with a model that invents an answer anyway. Always put your safety net in the class that goes to a person.
|
||||||
|
|
||||||
@@ -233,13 +233,13 @@ Personal or worrying: the student writes about themselves, for example that it i
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Step 8. The LLM block Explanation
|
### Step 8. The LLM block Explanation
|
||||||
|
|
||||||
1. **Select next step** → **LLM**. Model **gpt-5-mini**.
|
1. **Select next step** → **LLM**. Model **gpt-5-mini**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. **CONTEXT** → **Knowledge Retrieval / result**.
|
2. **CONTEXT** → **Knowledge Retrieval / result**.
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ In a Chatflow the exit is not called Output but **Answer**: that is what the stu
|
|||||||
|
|
||||||
1. **Select next step** → **Answer**.
|
1. **Select next step** → **Answer**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. Click in the field, type a forward slash and choose **EXPLANATION / text**.
|
2. Click in the field, type a forward slash and choose **EXPLANATION / text**.
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ In a Chatflow the exit is not called Output but **Answer**: that is what the stu
|
|||||||
|
|
||||||
3. Rename the block to `Answer explanation`.
|
3. Rename the block to `Answer explanation`.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -361,7 +361,7 @@ Study planner: {Context}
|
|||||||
|
|
||||||
This is what the canvas looks like now:
|
This is what the canvas looks like now:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> Why the same knowledge base twice? Because each block has its own query and its own prompt. Route 1 searches the material and explains, route 3 searches the same knowledge base but the prompt only looks at the study planner. On a Professional account you can also make two knowledge bases (material and planning separately); that is neater, but in the sandbox it costs you a knowledge base you may need.
|
> Why the same knowledge base twice? Because each block has its own query and its own prompt. Route 1 searches the material and explains, route 3 searches the same knowledge base but the prompt only looks at the study planner. On a Professional account you can also make two knowledge bases (material and planning separately); that is neater, but in the sandbox it costs you a knowledge base you may need.
|
||||||
|
|
||||||
@@ -385,7 +385,7 @@ This is the part that makes a study coach responsible. A student who writes "I d
|
|||||||
|
|
||||||
3. Click **Not configured** behind Email and fill in the email message.
|
3. Click **Not configured** behind Email and fill in the email message.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
| Field on screen | What you type |
|
| Field on screen | What you type |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
@@ -398,7 +398,7 @@ This is the part that makes a study coach responsible. A student who writes "I d
|
|||||||
A Year 9 student asked the Study coach a personal question that the coach does not answer itself. Read the conversation and write a short reply; the student will see it in the chat. Respond through this link:
|
A Year 9 student asked the Study coach a personal question that the coach does not answer itself. Read the conversation and write a short reply; the student will see it in the chat. Respond through this link:
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. **Save**. Then switch on the toggle behind **Email**.
|
4. **Save**. Then switch on the toggle behind **Email**.
|
||||||
|
|
||||||
@@ -418,7 +418,7 @@ A Year 9 student asked the Study coach a personal question that the coach does n
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
5. **USER ACTIONS** → **+**. This becomes the button under the form.
|
5. **USER ACTIONS** → **+**. This becomes the button under the form.
|
||||||
|
|
||||||
@@ -433,9 +433,7 @@ A Year 9 student asked the Study coach a personal question that the coach does n
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
7. Rename the block to `Teacher`. Leave **TIMEOUT** at 3 days.
|
7. Rename the block to `Teacher`. Leave **TIMEOUT** at 3 days. On the canvas the block now has two exits: **SEND** and **TIMEOUT**.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Step 15. Three messages to the student
|
### Step 15. Three messages to the student
|
||||||
|
|
||||||
@@ -453,7 +451,7 @@ Your teacher has not been able to respond yet. Your message is not lost: talk to
|
|||||||
|
|
||||||
Rename to `No reply`.
|
Rename to `No reply`.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Click the classifier, scroll to **NEXT STEP**, and under **CLASS 4** click **ADD PARALLEL NODE** → **Answer**:
|
3. Click the classifier, scroll to **NEXT STEP**, and under **CLASS 4** click **ADD PARALLEL NODE** → **Answer**:
|
||||||
|
|
||||||
@@ -463,7 +461,7 @@ Thank you for telling me this. This is something for a person, not for me. I hav
|
|||||||
|
|
||||||
Rename to `Passed on`. A parallel block runs at the same time as Teacher: the student sees this message immediately, while the workflow waits for the teacher.
|
Rename to `Passed on`. A parallel block runs at the same time as Teacher: the student sees this message immediately, while the workflow waits for the teacher.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> **Your choice: who gets the email, and what it says.** In real use the recipient is the form tutor or the teacher of that class, not a department address. Agree with the pastoral lead what the message to the student should contain: which helpline, which person at school, and whether you refer the student to a person straight away (yes). The helpline in the text is a placeholder; replace it with the one that applies in your country and school.
|
> **Your choice: who gets the email, and what it says.** In real use the recipient is the form tutor or the teacher of that class, not a department address. Agree with the pastoral lead what the message to the student should contain: which helpline, which person at school, and whether you refer the student to a person straight away (yes). The helpline in the text is a placeholder; replace it with the one that applies in your country and school.
|
||||||
|
|
||||||
@@ -479,7 +477,7 @@ Click **Preview** at the top right. Test all four routes; the canvas colours alo
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Then type: `and why is such a chain never longer than 4 or 5?` The answer is about food chains without you repeating the word: that is Memory.
|
Then type: `and why is such a chain never longer than 4 or 5?` The answer is about food chains without you repeating the word: that is Memory.
|
||||||
|
|
||||||
@@ -493,13 +491,15 @@ Then type: `and why is such a chain never longer than 4 or 5?` The answer is abo
|
|||||||
|
|
||||||
**Route 4**, type: `I really don't get any of it and I don't dare ask in class, everyone laughs at me anyway`
|
**Route 4**, type: `I really don't get any of it and I don't dare ask in class, everyone laughs at me anyway`
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
In Preview you see the teacher's form in the chat itself, with the remark "Debug preview only, user will not see this in web app". In real use it is in the email. Fill it in as if you were the teacher and click **Send to the student**.
|
In Preview you see the teacher's form in the chat itself, with the remark "Debug preview only, user will not see this in web app". In real use it is in the email. Fill it in as if you were the teacher and click **Send to the student**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
> In Preview the parallel message "Passed on" is not shown as a separate bubble; the form takes its place. In the web app the student does see it first.
|
||||||
|
|
||||||
### Step 17. Opening line and example questions
|
### Step 17. Opening line and example questions
|
||||||
|
|
||||||
@@ -524,13 +524,13 @@ In Preview you see the teacher's form in the chat itself, with the remark "Debug
|
|||||||
|
|
||||||
2. **Access point** → the link under **Webapp**.
|
2. **Access point** → the link under **Webapp**.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Our Dutch version: https://udify.app/chat/fP0TJW3s8IXOj9BO
|
The app in this guide is live at <https://udify.app/chat/mgvtZPbDVAIp5gbh>.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 50 KiB |
@@ -0,0 +1,732 @@
|
|||||||
|
app:
|
||||||
|
description: ''
|
||||||
|
icon: 🤖
|
||||||
|
icon_background: '#FFEAD5'
|
||||||
|
icon_type: emoji
|
||||||
|
mode: advanced-chat
|
||||||
|
name: Study coach biology
|
||||||
|
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: Hi! I am the biology study coach for unit 4, Ecology. I explain
|
||||||
|
concepts, help you on your way with tasks (without giving the answer away) and
|
||||||
|
know everything about the planning and the test. What do you want to know?
|
||||||
|
retriever_resource:
|
||||||
|
enabled: true
|
||||||
|
sensitive_word_avoidance:
|
||||||
|
enabled: false
|
||||||
|
speech_to_text:
|
||||||
|
enabled: false
|
||||||
|
suggested_questions:
|
||||||
|
- What is the difference between a population and a community?
|
||||||
|
- When is the test and what do I need to know?
|
||||||
|
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: 1789976034527--1789976131570-target
|
||||||
|
source: '1789976034527'
|
||||||
|
sourceHandle: source
|
||||||
|
target: '1789976131570'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: question-classifier
|
||||||
|
targetType: knowledge-retrieval
|
||||||
|
id: 1789976131570-1-1789976257737-target
|
||||||
|
source: '1789976131570'
|
||||||
|
sourceHandle: '1'
|
||||||
|
target: '1789976257737'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: knowledge-retrieval
|
||||||
|
targetType: llm
|
||||||
|
id: 1789976257737--1789976296992-target
|
||||||
|
source: '1789976257737'
|
||||||
|
sourceHandle: source
|
||||||
|
target: '1789976296992'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: llm
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976296992--1789976570650-target
|
||||||
|
source: '1789976296992'
|
||||||
|
sourceHandle: ''
|
||||||
|
target: '1789976570650'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: question-classifier
|
||||||
|
targetType: llm
|
||||||
|
id: 1789976131570-2-1789976630144-target
|
||||||
|
source: '1789976131570'
|
||||||
|
sourceHandle: '2'
|
||||||
|
target: '1789976630144'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: llm
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976630144--1789976748348-target
|
||||||
|
source: '1789976630144'
|
||||||
|
sourceHandle: ''
|
||||||
|
target: '1789976748348'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: question-classifier
|
||||||
|
targetType: knowledge-retrieval
|
||||||
|
id: 1789976131570-1789976192448-1789976785205-target
|
||||||
|
source: '1789976131570'
|
||||||
|
sourceHandle: '1789976192448'
|
||||||
|
target: '1789976785205'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: knowledge-retrieval
|
||||||
|
targetType: llm
|
||||||
|
id: 1789976785205--1789976818766-target
|
||||||
|
source: '1789976785205'
|
||||||
|
sourceHandle: ''
|
||||||
|
target: '1789976818766'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: llm
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976818766--1789976920515-target
|
||||||
|
source: '1789976818766'
|
||||||
|
sourceHandle: ''
|
||||||
|
target: '1789976920515'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: question-classifier
|
||||||
|
targetType: human-input
|
||||||
|
id: 1789976131570-1789976215884-1789976987317-target
|
||||||
|
source: '1789976131570'
|
||||||
|
sourceHandle: '1789976215884'
|
||||||
|
target: '1789976987317'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: human-input
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976987317-send-1789977278966-target
|
||||||
|
source: '1789976987317'
|
||||||
|
sourceHandle: send
|
||||||
|
target: '1789977278966'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: human-input
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976987317-__timeout-1789977358965-target
|
||||||
|
source: '1789976987317'
|
||||||
|
sourceHandle: __timeout
|
||||||
|
target: '1789977358965'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
isInIteration: false
|
||||||
|
isInLoop: false
|
||||||
|
sourceType: question-classifier
|
||||||
|
targetType: answer
|
||||||
|
id: 1789976131570-1789976215884-1789977416908-target
|
||||||
|
source: '1789976131570'
|
||||||
|
sourceHandle: '1789976215884'
|
||||||
|
target: '1789977416908'
|
||||||
|
targetHandle: target
|
||||||
|
type: custom
|
||||||
|
zIndex: 0
|
||||||
|
nodes:
|
||||||
|
- data:
|
||||||
|
selected: false
|
||||||
|
title: User Input
|
||||||
|
type: start
|
||||||
|
variables: []
|
||||||
|
height: 72
|
||||||
|
id: '1789976034527'
|
||||||
|
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: 'Concept question: the student wants to understand or have explained
|
||||||
|
something from the material, for example what a term means, how something
|
||||||
|
works, why something is the way it is, or an example.'
|
||||||
|
- id: '2'
|
||||||
|
label: CLASS 2
|
||||||
|
name: 'Homework question: the student asks for the answer to a task, exercise
|
||||||
|
or test question, or wants the homework done or marked.'
|
||||||
|
- id: '1789976192448'
|
||||||
|
label: CLASS 3
|
||||||
|
name: 'Planning question: the student asks about the test, the date, what
|
||||||
|
has to be learned, the homework for a certain lesson, the support session,
|
||||||
|
the practical or other agreements from the study planner.'
|
||||||
|
- id: '1789976215884'
|
||||||
|
label: CLASS 4
|
||||||
|
name: 'Personal or worrying: the student writes about themselves, for example
|
||||||
|
that it is not working, stress, test anxiety, problems at home or in class,
|
||||||
|
illness, being bullied, or wants to talk to the teacher or form tutor.
|
||||||
|
Also anything that is not about biology.'
|
||||||
|
model:
|
||||||
|
completion_params:
|
||||||
|
temperature: 0.7
|
||||||
|
mode: chat
|
||||||
|
name: gpt-5-mini
|
||||||
|
provider: langgenius/openai/openai
|
||||||
|
query_variable_selector:
|
||||||
|
- '1789976034527'
|
||||||
|
- sys.query
|
||||||
|
selected: false
|
||||||
|
title: Question Classifier
|
||||||
|
type: question-classifier
|
||||||
|
vision:
|
||||||
|
enabled: false
|
||||||
|
height: 261
|
||||||
|
id: '1789976131570'
|
||||||
|
position:
|
||||||
|
x: 382
|
||||||
|
y: 282
|
||||||
|
positionAbsolute:
|
||||||
|
x: 382
|
||||||
|
y: 282
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
dataset_ids:
|
||||||
|
- iR7puwQ1QC+JFERX6iXcfQ3BhLA5YXvmotJBNX0NgR91mSRBte7feu/wJZF+aPne
|
||||||
|
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:
|
||||||
|
- '1789976034527'
|
||||||
|
- sys.query
|
||||||
|
retrieval_mode: multiple
|
||||||
|
selected: false
|
||||||
|
title: Knowledge Retrieval
|
||||||
|
type: knowledge-retrieval
|
||||||
|
height: 89
|
||||||
|
id: '1789976257737'
|
||||||
|
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:
|
||||||
|
- '1789976257737'
|
||||||
|
- 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: 27f0753d-94b6-4f1f-b871-66386e9600b8
|
||||||
|
role: system
|
||||||
|
text: 'You are the biology study coach of Example College for Year 9 students.
|
||||||
|
You explain the material on ecology in plain English, in short sentences
|
||||||
|
and with examples from the booklet (the school pond, Example Wood).
|
||||||
|
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- Use only the material below. If the answer is not in it, say so and
|
||||||
|
refer to the teacher or the support session.
|
||||||
|
|
||||||
|
- Address the student informally. At most eight sentences.
|
||||||
|
|
||||||
|
- End with one short check question with which the student can check whether
|
||||||
|
they understand.
|
||||||
|
|
||||||
|
- Do not give answers to tasks from the booklet; explain the concept and
|
||||||
|
let the student do the task themselves.
|
||||||
|
|
||||||
|
|
||||||
|
Material: {{#context#}}'
|
||||||
|
selected: false
|
||||||
|
title: Explanation
|
||||||
|
type: llm
|
||||||
|
vision:
|
||||||
|
enabled: false
|
||||||
|
height: 87
|
||||||
|
id: '1789976296992'
|
||||||
|
position:
|
||||||
|
x: 986
|
||||||
|
y: 282
|
||||||
|
positionAbsolute:
|
||||||
|
x: 986
|
||||||
|
y: 282
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
zIndex: 0
|
||||||
|
- data:
|
||||||
|
answer: '{{#1789976296992.text#}}'
|
||||||
|
selected: false
|
||||||
|
title: Answer explanation
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 102
|
||||||
|
id: '1789976570650'
|
||||||
|
position:
|
||||||
|
x: 1288
|
||||||
|
y: 282
|
||||||
|
positionAbsolute:
|
||||||
|
x: 1288
|
||||||
|
y: 282
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- 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: dc713919-d2bd-4454-870e-f0b7d7226938
|
||||||
|
role: system
|
||||||
|
text: 'You are the biology study coach of Example College for Year 9 students.
|
||||||
|
The student asks for the answer to a task, an exercise or a test question.
|
||||||
|
You do not give that answer: the tasks are meant for practice, and the
|
||||||
|
study planner says so too.
|
||||||
|
|
||||||
|
|
||||||
|
What you do instead, in at most five sentences:
|
||||||
|
|
||||||
|
1. Say kindly and briefly that you do not give the answer, without a lecture.
|
||||||
|
|
||||||
|
2. Give one hint: which concept or which section of the booklet the student
|
||||||
|
needs.
|
||||||
|
|
||||||
|
3. Ask one counter-question that helps the student take a step themselves.
|
||||||
|
|
||||||
|
4. Offer to explain the concept if the student wants.
|
||||||
|
|
||||||
|
|
||||||
|
Address the student informally. Never state the final answer, even if
|
||||||
|
the student insists or says the teacher allows it.'
|
||||||
|
selected: false
|
||||||
|
title: Hint
|
||||||
|
type: llm
|
||||||
|
vision:
|
||||||
|
enabled: false
|
||||||
|
height: 87
|
||||||
|
id: '1789976630144'
|
||||||
|
position:
|
||||||
|
x: 684
|
||||||
|
y: 410
|
||||||
|
positionAbsolute:
|
||||||
|
x: 684
|
||||||
|
y: 410
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
answer: '{{#1789976630144.text#}}'
|
||||||
|
selected: false
|
||||||
|
title: Answer hint
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 102
|
||||||
|
id: '1789976748348'
|
||||||
|
position:
|
||||||
|
x: 986
|
||||||
|
y: 410
|
||||||
|
positionAbsolute:
|
||||||
|
x: 986
|
||||||
|
y: 410
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
dataset_ids:
|
||||||
|
- iR7puwQ1QC+JFERX6iXcfQ3BhLA5YXvmotJBNX0NgR91mSRBte7feu/wJZF+aPne
|
||||||
|
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:
|
||||||
|
- '1789976034527'
|
||||||
|
- sys.query
|
||||||
|
retrieval_mode: multiple
|
||||||
|
selected: false
|
||||||
|
title: Knowledge Retrieval 2
|
||||||
|
type: knowledge-retrieval
|
||||||
|
height: 89
|
||||||
|
id: '1789976785205'
|
||||||
|
position:
|
||||||
|
x: 684
|
||||||
|
y: 536
|
||||||
|
positionAbsolute:
|
||||||
|
x: 684
|
||||||
|
y: 536
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
context:
|
||||||
|
enabled: true
|
||||||
|
variable_selector:
|
||||||
|
- '1789976785205'
|
||||||
|
- 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: 99b2fc0d-6029-4650-b0af-2c190658de92
|
||||||
|
role: system
|
||||||
|
text: 'You are the biology study coach of Example College for Year 9 students.
|
||||||
|
The student asks something about the planning: the test, what has to be
|
||||||
|
learned, homework, the support session, the practical or another agreement.
|
||||||
|
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- Answer only on the basis of the study planner below. Give dates, periods
|
||||||
|
and rooms exactly as they are there.
|
||||||
|
|
||||||
|
- If it is not in there, say so and refer to the teacher (biology@examplecollege.example)
|
||||||
|
or the support session on Tuesday, period 8, in B12.
|
||||||
|
|
||||||
|
- Address the student informally. Short and concrete, at most five sentences.
|
||||||
|
Use a list if it is about several things.
|
||||||
|
|
||||||
|
|
||||||
|
Study planner: {{#context#}}'
|
||||||
|
selected: false
|
||||||
|
title: Planning
|
||||||
|
type: llm
|
||||||
|
vision:
|
||||||
|
enabled: false
|
||||||
|
height: 87
|
||||||
|
id: '1789976818766'
|
||||||
|
position:
|
||||||
|
x: 986
|
||||||
|
y: 536
|
||||||
|
positionAbsolute:
|
||||||
|
x: 986
|
||||||
|
y: 536
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
answer: '{{#1789976818766.text#}}'
|
||||||
|
selected: false
|
||||||
|
title: Answer planning
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 102
|
||||||
|
id: '1789976920515'
|
||||||
|
position:
|
||||||
|
x: 1288
|
||||||
|
y: 536
|
||||||
|
positionAbsolute:
|
||||||
|
x: 1288
|
||||||
|
y: 536
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
delivery_methods:
|
||||||
|
- config:
|
||||||
|
body: 'A Year 9 student asked the Study coach a personal question that
|
||||||
|
the coach does not answer itself. Read the conversation and write a
|
||||||
|
short reply; the student will see it in the chat. Respond through this
|
||||||
|
link: {{#url#}}'
|
||||||
|
debug_mode: true
|
||||||
|
recipients:
|
||||||
|
items:
|
||||||
|
- email: biology@examplecollege.example
|
||||||
|
type: external
|
||||||
|
whole_workspace: false
|
||||||
|
subject: 'Study coach biology: a student needs you'
|
||||||
|
enabled: true
|
||||||
|
id: b56decda-c20d-4487-aa24-b60e7ac8b14e
|
||||||
|
type: email
|
||||||
|
form_content: "Message from the student: {{#sys.query#}}\n\nYour reply to\
|
||||||
|
\ the student (this goes literally into the chat): \n{{#$output.teacher_reply#}}\n"
|
||||||
|
inputs:
|
||||||
|
- default:
|
||||||
|
selector: []
|
||||||
|
type: constant
|
||||||
|
value: ''
|
||||||
|
output_variable_name: teacher_reply
|
||||||
|
type: paragraph
|
||||||
|
selected: false
|
||||||
|
timeout: 3
|
||||||
|
timeout_unit: day
|
||||||
|
title: Teacher
|
||||||
|
type: human-input
|
||||||
|
user_actions:
|
||||||
|
- button_style: default
|
||||||
|
id: send
|
||||||
|
title: Send to the student
|
||||||
|
height: 163
|
||||||
|
id: '1789976987317'
|
||||||
|
position:
|
||||||
|
x: 291.16227347611186
|
||||||
|
y: 631.1540362438219
|
||||||
|
positionAbsolute:
|
||||||
|
x: 291.16227347611186
|
||||||
|
y: 631.1540362438219
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
answer: 'Message from your teacher:
|
||||||
|
|
||||||
|
|
||||||
|
{{#1789976987317.teacher_reply#}}'
|
||||||
|
selected: false
|
||||||
|
title: Teacher reply
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 118
|
||||||
|
id: '1789977278966'
|
||||||
|
position:
|
||||||
|
x: 690.3863261943986
|
||||||
|
y: 631.1540362438219
|
||||||
|
positionAbsolute:
|
||||||
|
x: 690.3863261943986
|
||||||
|
y: 631.1540362438219
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
answer: 'Your teacher has not been able to respond yet. Your message is not
|
||||||
|
lost: talk to your teacher or form tutor tomorrow, or email biology@examplecollege.example.
|
||||||
|
Are things really not going well? Then talk to someone at home or at school
|
||||||
|
today, or contact a helpline for young people (in the UK: Childline, 0800
|
||||||
|
1111, free and confidential).'
|
||||||
|
selected: false
|
||||||
|
title: No reply
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 243
|
||||||
|
id: '1789977358965'
|
||||||
|
position:
|
||||||
|
x: 690.3863261943986
|
||||||
|
y: 788.1540362438219
|
||||||
|
positionAbsolute:
|
||||||
|
x: 690.3863261943986
|
||||||
|
y: 788.1540362438219
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
- data:
|
||||||
|
answer: 'Thank you for telling me this. This is something for a person, not
|
||||||
|
for me. I have passed your message to your biology teacher; as soon as they
|
||||||
|
respond, you will see the reply here in the chat. Do you want to talk to
|
||||||
|
someone right now? Go to your form tutor, or contact a helpline for young
|
||||||
|
people (in the UK: Childline, 0800 1111, free and confidential).'
|
||||||
|
selected: false
|
||||||
|
title: Passed on
|
||||||
|
type: answer
|
||||||
|
variables: []
|
||||||
|
height: 243
|
||||||
|
id: '1789977416908'
|
||||||
|
position:
|
||||||
|
x: 291.16227347611186
|
||||||
|
y: 833.1540362438219
|
||||||
|
positionAbsolute:
|
||||||
|
x: 291.16227347611186
|
||||||
|
y: 833.1540362438219
|
||||||
|
selected: false
|
||||||
|
sourcePosition: right
|
||||||
|
targetPosition: left
|
||||||
|
type: custom
|
||||||
|
width: 242
|
||||||
|
viewport:
|
||||||
|
x: -107.64106583072095
|
||||||
|
y: -102.74660397074177
|
||||||
|
zoom: 0.6342737722048066
|
||||||
|
rag_pipeline_variables: []
|
||||||
@@ -5,7 +5,7 @@ This is what changed per release.
|
|||||||
|
|
||||||
## 2026-09-20, English screenshots
|
## 2026-09-20, English screenshots
|
||||||
|
|
||||||
- Guides 01, 02, 03 and 07 rebuilt with the English Dify interface and English apps (Text at level, School guide assistant, Parent letter assistant, School news with checks; links in the README). The other guides follow.
|
- 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.
|
||||||
- Every Studio app as a `.dify.yml` file in its guide's folder, to import via Studio, Create, Import DSL file. Instructions in the README.
|
- Every Studio app as a `.dify.yml` file in its guide's folder, to import via Studio, Create, Import DSL file. Instructions in the README.
|
||||||
- New appendix 00-self-hosting: running Dify Community Edition yourself with Docker (Windows, Mac, Linux).
|
- New appendix 00-self-hosting: running Dify Community Edition yourself with Docker (Windows, Mac, Linux).
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ The apps are live to try out:
|
|||||||
- Test week planner (04; Dutch build): https://udify.app/agent/rKoqw8rbmp0IF86Q
|
- Test week planner (04; Dutch build): https://udify.app/agent/rKoqw8rbmp0IF86Q
|
||||||
- Transcription tool (05; Dutch build): https://udify.app/workflow/7N5dNg8fD9qXHA80
|
- Transcription tool (05; Dutch build): https://udify.app/workflow/7N5dNg8fD9qXHA80
|
||||||
- Materials check (06; Dutch build): https://udify.app/agent/lkWKedkSW2d3nqBV
|
- Materials check (06; Dutch build): https://udify.app/agent/lkWKedkSW2d3nqBV
|
||||||
- Study coach biology (08; Dutch build): https://udify.app/chat/fP0TJW3s8IXOj9BO
|
- Study coach biology (08): https://udify.app/chat/mgvtZPbDVAIp5gbh
|
||||||
|
|
||||||
## Installing the apps in your own Dify
|
## Installing the apps in your own Dify
|
||||||
|
|
||||||
@@ -86,6 +86,7 @@ those with the guide.
|
|||||||
| 03-school-communication/parent-letter-assistant.dify.yml | 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) |
|
| 03-school-communication/school-news.dify.yml | 03 and 07 (version 2, with Checker and Gatekeeper) |
|
||||||
| 05-transcription-tool/transcription-tool.dify.yml | 05 |
|
| 05-transcription-tool/transcription-tool.dify.yml | 05 |
|
||||||
|
| 08-chatflow-study-coach/study-coach-biology.dify.yml | 08 |
|
||||||
|
|
||||||
## Building or editing yourself
|
## Building or editing yourself
|
||||||
|
|
||||||
|
|||||||