5daf506729
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
634 lines
17 KiB
YAML
634 lines
17 KiB
YAML
app:
|
|
description: ''
|
|
icon: 🤖
|
|
icon_background: '#FFEAD5'
|
|
icon_type: emoji
|
|
mode: workflow
|
|
name: School news
|
|
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: ''
|
|
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: 1789970877464--1789971129095-target
|
|
source: '1789970877464'
|
|
sourceHandle: source
|
|
target: '1789971129095'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: knowledge-retrieval
|
|
targetType: llm
|
|
id: 1789971129095--1789971168021-target
|
|
source: '1789971129095'
|
|
sourceHandle: source
|
|
target: '1789971168021'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: llm
|
|
targetType: llm
|
|
id: 1789971168021--1789971306805-target
|
|
source: '1789971168021'
|
|
sourceHandle: source
|
|
target: '1789971306805'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: llm
|
|
targetType: llm
|
|
id: 1789971306805--1789971527769-target
|
|
source: '1789971306805'
|
|
sourceHandle: source
|
|
target: '1789971527769'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: llm
|
|
targetType: llm
|
|
id: 1789971527769--1789974076229-target
|
|
source: '1789971527769'
|
|
sourceHandle: ''
|
|
target: '1789974076229'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: llm
|
|
targetType: code
|
|
id: 1789974076229--1789974245797-target
|
|
source: '1789974076229'
|
|
sourceHandle: ''
|
|
target: '1789974245797'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: code
|
|
targetType: if-else
|
|
id: 1789974245797--1789974430545-target
|
|
source: '1789974245797'
|
|
sourceHandle: ''
|
|
target: '1789974430545'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: if-else
|
|
targetType: end
|
|
id: 1789974430545-true-1789974474578-target
|
|
source: '1789974430545'
|
|
sourceHandle: 'true'
|
|
target: '1789974474578'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
- data:
|
|
isInIteration: false
|
|
isInLoop: false
|
|
sourceType: if-else
|
|
targetType: end
|
|
id: 1789974430545-false-1789974564321-target
|
|
source: '1789974430545'
|
|
sourceHandle: 'false'
|
|
target: '1789974564321'
|
|
targetHandle: target
|
|
type: custom
|
|
zIndex: 0
|
|
nodes:
|
|
- data:
|
|
selected: false
|
|
title: User Input
|
|
type: start
|
|
variables:
|
|
- default: ''
|
|
hint: ''
|
|
label: What has happened or is going to happen? (who, what, where, when)
|
|
options: []
|
|
placeholder: ''
|
|
required: true
|
|
type: paragraph
|
|
variable: core_message
|
|
- default: ''
|
|
hint: ''
|
|
label: 'For which class or year group? (or: whole school)'
|
|
options: []
|
|
placeholder: ''
|
|
required: true
|
|
type: text-input
|
|
variable: year_group
|
|
- hint: ''
|
|
label: Which tone fits this message?
|
|
options:
|
|
- informative
|
|
- celebratory
|
|
- urgent
|
|
placeholder: ''
|
|
required: true
|
|
type: select
|
|
variable: tone
|
|
height: 160
|
|
id: '1789970877464'
|
|
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:
|
|
- oTycHUKIxz5h9TqTOxYZojCNnbtTICvzVXxyCqucL8j6opdim+1j1Pa/ejwe91Qg
|
|
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:
|
|
- '1789970877464'
|
|
- core_message
|
|
retrieval_mode: multiple
|
|
selected: false
|
|
title: Knowledge Retrieval
|
|
type: knowledge-retrieval
|
|
height: 89
|
|
id: '1789971129095'
|
|
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:
|
|
- '1789971129095'
|
|
- result
|
|
model:
|
|
completion_params: {}
|
|
mode: chat
|
|
name: gpt-5-mini
|
|
provider: langgenius/openai/openai
|
|
prompt_template:
|
|
- id: 8cfee75c-0407-46b1-bcec-b19c6bb59459
|
|
role: system
|
|
text: 'Start your answer with the line WEBSITE followed by an empty line.
|
|
|
|
|
|
You write for Example College, a secondary school. Write a news item for
|
|
the website of at most 200 words. The headline is an active sentence of
|
|
at most eight words, without an exclamation mark. The first paragraph
|
|
answers who, what, where and when. End with a next step or a way to get
|
|
in touch. Stick strictly to the style guide below: reading level B1, formal
|
|
address for parents, words to avoid, names and photos of students. Adapt
|
|
to the chosen tone. Invent no facts. If something is missing, write [FILL
|
|
IN].
|
|
|
|
|
|
Style guide: {{#context#}}
|
|
|
|
|
|
Year group: {{#1789970877464.year_group#}}
|
|
|
|
Tone: {{#1789970877464.tone#}}
|
|
|
|
Core message: {{#1789970877464.core_message#}}'
|
|
selected: false
|
|
title: Website
|
|
type: llm
|
|
vision:
|
|
enabled: false
|
|
height: 87
|
|
id: '1789971168021'
|
|
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:
|
|
- '1789971129095'
|
|
- result
|
|
model:
|
|
completion_params: {}
|
|
mode: chat
|
|
name: gpt-5-mini
|
|
provider: langgenius/openai/openai
|
|
prompt_template:
|
|
- id: 6d05c2e0-dfe6-4cd7-8cb8-f527927ed86e
|
|
role: system
|
|
text: 'Start your answer with the line PARENT APP followed by an empty line.
|
|
|
|
|
|
You write for Example College, a secondary school. Write a message for
|
|
the parent app of at most 80 words: parents read this on their phone.
|
|
One message, one date, one action; no introduction and no headline. Address
|
|
parents formally. Stick strictly to the style guide below. Adapt to the
|
|
chosen tone. Invent no facts. If something is missing, write [FILL IN].
|
|
|
|
|
|
Style guide: {{#context#}}
|
|
|
|
|
|
Year group: {{#1789970877464.year_group#}}
|
|
|
|
Tone: {{#1789970877464.tone#}}
|
|
|
|
Core message: {{#1789970877464.core_message#}}'
|
|
selected: false
|
|
title: Parent app
|
|
type: llm
|
|
vision:
|
|
enabled: false
|
|
height: 87
|
|
id: '1789971306805'
|
|
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:
|
|
- '1789971129095'
|
|
- result
|
|
model:
|
|
completion_params: {}
|
|
mode: chat
|
|
name: gpt-5-mini
|
|
provider: langgenius/openai/openai
|
|
prompt_template:
|
|
- id: e86f1562-baba-4d04-b3f8-f47f4348b803
|
|
role: system
|
|
text: 'Start your answer with the line SOCIAL followed by an empty line.
|
|
|
|
|
|
You write for Example College, a secondary school. Write a post for the
|
|
school''s social media (Instagram and LinkedIn) of at most 60 words. Warm
|
|
and concrete, no hype. End with at most three hashtags, always including
|
|
#ExampleCollege. No names of students and no reference to recognisable
|
|
photos of students. Stick to the style guide below. Adapt to the chosen
|
|
tone. Invent no facts. If something is missing, write [FILL IN].
|
|
|
|
|
|
Style guide: {{#context#}}
|
|
|
|
|
|
Year group: {{#1789970877464.year_group#}}
|
|
|
|
Tone: {{#1789970877464.tone#}}
|
|
|
|
Core message: {{#1789970877464.core_message#}}'
|
|
selected: false
|
|
title: Social
|
|
type: llm
|
|
vision:
|
|
enabled: false
|
|
height: 87
|
|
id: '1789971527769'
|
|
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:
|
|
- '1789971129095'
|
|
- result
|
|
model:
|
|
completion_params: {}
|
|
mode: chat
|
|
name: gpt-5-mini
|
|
provider: langgenius/openai/openai
|
|
prompt_template:
|
|
- id: 46332227-30db-4baf-a45f-59440772a731
|
|
role: system
|
|
text: 'You are the checker of Example College. Below is a draft message
|
|
for the parent app. Assess it on these points from the style guide: at
|
|
most 80 words; parents are addressed formally; one message, one date and
|
|
one action; no abbreviations and no words from the list of words to avoid;
|
|
no names of students; reading level B1 (short sentences, everyday words).
|
|
|
|
|
|
Work in two steps. Step 1: briefly name what is wrong (or write: nothing).
|
|
Step 2: give the improved version. Invent no facts; what is not in the
|
|
draft stays [FILL IN]. Do not remove facts, dates or times that are in
|
|
the draft; a deadline for signing up belongs to the action and stays.
|
|
Do not change digits into words.
|
|
|
|
|
|
As your answer give ONLY the improved text, without step 1, without a
|
|
heading and without explanation. If the draft is already good, return
|
|
it unchanged.
|
|
|
|
|
|
Style guide: {{#context#}}
|
|
|
|
|
|
Draft message: {{#1789971306805.text#}}'
|
|
selected: false
|
|
title: Checker
|
|
type: llm
|
|
vision:
|
|
enabled: false
|
|
height: 87
|
|
id: '1789974076229'
|
|
position:
|
|
x: 1590
|
|
y: 282
|
|
positionAbsolute:
|
|
x: 1590
|
|
y: 282
|
|
selected: false
|
|
sourcePosition: right
|
|
targetPosition: left
|
|
type: custom
|
|
width: 242
|
|
- data:
|
|
code: "def main(website: str, parent_app: str, social: str) -> dict:\n \
|
|
\ reasons = []\n forbidden = [\"by means of\", \"with regard to\", \"\
|
|
asap\", \"w.r.t.\", \"kindly\", \"parent(s)/carer(s)\", \"utilise\"]\n \
|
|
\ texts = ((\"website\", website, 230), (\"parent app\", parent_app, 90),\
|
|
\ (\"social\", social, 70))\n for name, text, maximum in texts:\n \
|
|
\ count = len(text.split())\n if count > maximum:\n \
|
|
\ reasons.append(f\"{name}: {count} words, maximum {maximum}\")\n \
|
|
\ if \"[FILL IN]\" in text:\n reasons.append(f\"{name}: contains\
|
|
\ [FILL IN], information is missing\")\n for word in forbidden:\n\
|
|
\ if word in text.lower():\n reasons.append(f\"\
|
|
{name}: contains the word to avoid '{word.strip()}'\")\n if \"#examplecollege\"\
|
|
\ not in social.lower():\n reasons.append(\"social: #ExampleCollege\
|
|
\ is missing\")\n return {\n \"ok\": 0 if reasons else 1,\n \
|
|
\ \"reasons\": \"\\n\".join(reasons) if reasons else \"All rules satisfied.\"\
|
|
,\n }\n"
|
|
code_language: python3
|
|
outputs:
|
|
ok:
|
|
children: null
|
|
type: number
|
|
reasons:
|
|
children: null
|
|
type: string
|
|
selected: false
|
|
title: Gatekeeper
|
|
type: code
|
|
variables:
|
|
- value_selector:
|
|
- '1789971168021'
|
|
- text
|
|
value_type: string
|
|
variable: website
|
|
- value_selector:
|
|
- '1789974076229'
|
|
- text
|
|
value_type: string
|
|
variable: parent_app
|
|
- value_selector:
|
|
- '1789971527769'
|
|
- text
|
|
value_type: string
|
|
variable: social
|
|
height: 51
|
|
id: '1789974245797'
|
|
position:
|
|
x: 1892
|
|
y: 282
|
|
positionAbsolute:
|
|
x: 1892
|
|
y: 282
|
|
selected: false
|
|
sourcePosition: right
|
|
targetPosition: left
|
|
type: custom
|
|
width: 242
|
|
- data:
|
|
cases:
|
|
- case_id: 'true'
|
|
conditions:
|
|
- comparison_operator: '='
|
|
id: 905ee344-fc66-4bfd-91d0-773aa3a8ffe4
|
|
value: '1'
|
|
varType: number
|
|
variable_selector:
|
|
- '1789974245797'
|
|
- ok
|
|
logical_operator: and
|
|
selected: false
|
|
title: IF/ELSE
|
|
type: if-else
|
|
height: 123
|
|
id: '1789974430545'
|
|
position:
|
|
x: 2194
|
|
y: 282
|
|
positionAbsolute:
|
|
x: 2194
|
|
y: 282
|
|
selected: false
|
|
sourcePosition: right
|
|
targetPosition: left
|
|
type: custom
|
|
width: 242
|
|
- data:
|
|
outputs:
|
|
- value_selector:
|
|
- '1789971168021'
|
|
- text
|
|
value_type: string
|
|
variable: website
|
|
- value_selector:
|
|
- '1789974076229'
|
|
- text
|
|
value_type: string
|
|
variable: parent_app
|
|
- value_selector:
|
|
- '1789971527769'
|
|
- text
|
|
value_type: string
|
|
variable: social
|
|
selected: false
|
|
title: Approved
|
|
type: end
|
|
height: 140
|
|
id: '1789974474578'
|
|
position:
|
|
x: 2496
|
|
y: 282
|
|
positionAbsolute:
|
|
x: 2496
|
|
y: 282
|
|
selected: false
|
|
sourcePosition: right
|
|
targetPosition: left
|
|
type: custom
|
|
width: 242
|
|
- data:
|
|
outputs:
|
|
- value_selector:
|
|
- '1789974245797'
|
|
- reasons
|
|
value_type: string
|
|
variable: rejected_because
|
|
- value_selector:
|
|
- '1789971168021'
|
|
- text
|
|
value_type: string
|
|
variable: draft_website
|
|
- value_selector:
|
|
- '1789974076229'
|
|
- text
|
|
value_type: string
|
|
variable: draft_parent_app
|
|
- value_selector:
|
|
- '1789971527769'
|
|
- text
|
|
value_type: string
|
|
variable: draft_social
|
|
selected: false
|
|
title: To the communications officer
|
|
type: end
|
|
height: 166
|
|
id: '1789974564321'
|
|
position:
|
|
x: 2496
|
|
y: 461
|
|
positionAbsolute:
|
|
x: 2496
|
|
y: 461
|
|
selected: false
|
|
sourcePosition: right
|
|
targetPosition: left
|
|
type: custom
|
|
width: 242
|
|
viewport:
|
|
x: -679.6126274026951
|
|
y: 109.12408509473971
|
|
zoom: 0.4152130788699637
|
|
rag_pipeline_variables: []
|