app:
description: 📺 Youtube:https://www.youtube.com/watch?v=jov1Z-gsBME&t=65s
icon: ❤️
icon_background: '#FFE4E8'
mode: advanced-chat
name: Dating assistant for information gathering
kind: app
version: 0.1.1
workflow:
conversation_variables:
- description: This is the report of the conversation.
id: 1a47efd0-f16d-496c-a08f-5b86996d8f91
name: report
value: ''
value_type: string
- description: ''
id: 46a24b78-2e30-466d-9ab1-99fde55dd88a
name: language
value: ''
value_type: string
- description: ''
id: 66493c94-f5de-402e-87b8-76490bf284a7
name: ai_checklist
value: ❌ Name ❌ Age ❌ Gender identity ❌ Sexual orientation ❌ Location (city/region)
❌ Occupation ❌ Education level ❌ Relationship goals (casual, long-term, etc.)
❌ Interests/hobbies ❌ Religious beliefs (if any) ❌ Smoking habits ❌ Drinking
habits ❌ Exercise frequency ❌ Desire for children (yes/no/undecided) ❌ Deal-breakers
in a potential match
value_type: string
environment_variables:
- description: ''
id: dea1248b-a1eb-4c21-9d7a-1de75abfa84e
name: question_strategy
value: Try to avoid chatting in an offensive or overly blunt way. Instead, aim
to be as witty and humorous as possible, making the conversation as fun as casual
spoken dialogue. If you notice the other person hasn't provided complete information,
don't change ❌ to ✅. Instead, try to ask follow-up questions, but don't pursue
the same question for more than 3 rounds of conversation. Try to add some emojis
to make conversation even more fun!
value_type: string
features:
file_upload:
image:
enabled: true
number_limits: 3
transfer_methods:
- local_file
- remote_url
opening_statement: '👋 Hey there, love adventurer! 💘 Ready to embark on a journey
to find your perfect match? I''m your friendly neighborhood Cupid-in-training,
here to help you navigate the wild world of dating. 🎭 Let''s start by getting
to know the real you - no pressure, just fun! 🌟 What''s the first thing you''d
want your dream date to know about you? Spill the beans, and let''s make some
magic happen! ✨
☝️ But first things first - what magical name should I call you?'
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: true
suggested_questions: []
suggested_questions_after_answer:
enabled: true
text_to_speech:
enabled: true
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
sourceType: start
targetType: if-else
id: 1722957956891-source-1722958760819-target
selected: false
source: '1722957956891'
sourceHandle: source
target: '1722958760819'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1722958760819-true-1722958601013-target
selected: false
source: '1722958760819'
sourceHandle: 'true'
target: '1722958601013'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: assigner
id: 1722958601013-source-1722958896164-target
selected: false
source: '1722958601013'
sourceHandle: source
target: '1722958896164'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: answer
id: 1722959904016-source-1723112072647-target
selected: false
source: '1722959904016'
sourceHandle: source
target: '1723112072647'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: llm
id: 1722958896164-source-17231982631610-target
selected: false
source: '1722958896164'
sourceHandle: source
target: '17231982631610'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: parameter-extractor
id: llm-source-1723199449939-target
selected: false
source: llm
sourceHandle: source
target: '1723199449939'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: assigner
id: 1723199449939-source-1722959904016-target
selected: false
source: '1723199449939'
sourceHandle: source
target: '1722959904016'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: parameter-extractor
id: 17231982631610-source-1723835927661-target
selected: false
source: '17231982631610'
sourceHandle: source
target: '1723835927661'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: assigner
id: 1723835927661-source-1723836136947-target
source: '1723835927661'
sourceHandle: source
target: '1723836136947'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: if-else
id: 1722958760819-false-1723836581183-target
source: '1722958760819'
sourceHandle: 'false'
target: '1723836581183'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1723836581183-true-llm-target
source: '1723836581183'
sourceHandle: 'true'
target: llm
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: llm
id: 1723836581183-false-1723836614708-target
selected: false
source: '1723836581183'
sourceHandle: 'false'
target: '1723836614708'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: answer
id: 1723836136947-source-17231998311791-target
source: '1723836136947'
sourceHandle: source
target: '17231998311791'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: start
type: start
variables: []
height: 54
id: '1722957956891'
position:
x: 604.2857142857142
y: 476.57142857142856
positionAbsolute:
x: 604.2857142857142
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
memory:
query_prompt_template: '{{#sys.query#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: false
size: 10
model:
completion_params:
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
prompt_template:
- id: 6c3ef87f-2064-4a5e-8d96-f24772f86be7
role: system
text: 'You are an AI assistant for a dating app. Your role is to guide new
users through a checklist of questions to gather important information
about them. This process should feel like a natural conversation rather
than a formal questionnaire. Your goal is to make users feel comfortable
while collecting necessary data for the app.
Here is the checklist of information you need to gather:
{{#conversation.ai_checklist#}}
To gather this information, you will use the following questioning strategy:
{{#env.question_strategy#}}
When interacting with users:
1. Start with a friendly greeting and explain the purpose of the conversation.
2. Ask questions based on the checklist status(for those mark with ❌,
beacuse ✅ means checked) and questioning strategy provided.
3. Use a conversational tone and adapt your language to match the user''s
style.
4. If a user seems hesitant or uncomfortable with a question, offer to
skip it or come back to it later.
5. For sensitive topics, approach them gently and give users the option
to decline answering.
6. If a question requires multiple sub-questions to get a complete answer,
ask them one at a time in a natural flow.
7. Provide appropriate responses or follow-up questions based on the user''s
answers.
8. If a user''s response is unclear or incomplete, politely ask for clarification.
When handling sensitive topics:
1. Preface the question with a statement acknowledging its personal nature.
2. Remind the user that they can choose not to answer.
3. Explain why the information is helpful for the app''s matching process.
4. If a user expresses discomfort, move on to the next topic without pressing
further.
As you gather information, mark completed items on the checklist by replacing
the ❌ with a ✅. For example:
❌ Name -> ✅ Name
Continue the conversation until all items on the checklist are marked
complete or the user indicates they want to stop.
To conclude the interaction:
1. Thank the user for their time and openness.
2. Briefly summarize the key information gathered.
3. Explain what will happen next in their app experience.
4. Offer to answer any final questions they might have.
Remember, your primary goal is to make the user feel comfortable and engaged
throughout this process. Adapt your approach as needed to ensure a positive
experience for each individual user.
Remember to add a line break when outputting {updated-checklist}.
Please note that in {updated-checklist}, line breaks should be added according
to ❌ or ✅ for better readability.
Your output strictly follows the format below:
✨ {updated-checklist}
✨ {your answer and follow-up based on updated-checklist }
You should output in {{#conversation.language#}}: include {updated-checklist}
also needs to do language replacement.
'
selected: false
title: Dating App Research Assistant(2)
type: llm
variables: []
vision:
configs:
detail: high
enabled: true
height: 98
id: llm
position:
x: 1512.2857142857142
y: 638.5714285714286
positionAbsolute:
x: 1512.2857142857142
y: 638.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
max_tokens: 20
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
prompt_template:
- id: e3ec100d-6d52-4e9e-bfd7-067626f473e8
role: system
text: Please translate the user's input language into one word. No additional
explanations or supplements.
- id: 4e245886-a472-4582-b864-cfe28e306302
role: user
text: '{{#sys.query#}} '
selected: false
title: Language Recognition
type: llm
variables: []
vision:
configs:
detail: high
enabled: true
height: 98
id: '1722958601013'
position:
x: 1212.2857142857142
y: 476.57142857142856
positionAbsolute:
x: 1212.2857142857142
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: empty
id: 26b6b864-b5d2-459e-b0aa-566dd9472b6e
value: ''
varType: string
variable_selector:
- conversation
- language
id: 'true'
logical_operator: and
desc: ''
selected: false
title: Conditional judgment
type: if-else
height: 126
id: '1722958760819'
position:
x: 908.2857142857142
y: 476.57142857142856
positionAbsolute:
x: 908.2857142857142
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
assigned_variable_selector:
- conversation
- language
desc: ''
input_variable_selector:
- '1722958601013'
- text
selected: false
title: Language Variable Assigner
type: assigner
write_mode: over-write
height: 132
id: '1722958896164'
position:
x: 1516.2857142857142
y: 476.57142857142856
positionAbsolute:
x: 1516.2857142857142
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
assigned_variable_selector:
- conversation
- ai_checklist
desc: ''
input_variable_selector:
- '1723199449939'
- updated_checklist
selected: false
title: Update checklist
type: assigner
write_mode: over-write
height: 132
id: '1722959904016'
position:
x: 2120.285714285714
y: 638.5714285714286
positionAbsolute:
x: 2120.285714285714
y: 638.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1723199449939.your_answer_and_follow_up#}}'
desc: ''
selected: false
title: response(2)
type: answer
variables: []
height: 107
id: '1723112072647'
position:
x: 2424.285714285714
y: 638.5714285714286
positionAbsolute:
x: 2424.285714285714
y: 638.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
memory:
query_prompt_template: '{{#sys.query#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: false
size: 10
model:
completion_params:
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
prompt_template:
- id: 6c3ef87f-2064-4a5e-8d96-f24772f86be7
role: system
text: 'You are an AI assistant for a dating app. Your role is to guide new
users through a checklist of questions to gather important information
about them. This process should feel like a natural conversation rather
than a formal questionnaire. Your goal is to make users feel comfortable
while collecting necessary data for the app.
Here is the checklist of information you need to gather:
{{#conversation.ai_checklist#}}
To gather this information, you will use the following questioning strategy:
{{#env.question_strategy#}}
When interacting with users:
1. Start with a friendly greeting and explain the purpose of the conversation.
2. Ask questions based on the checklist status(for those mark with ❌,
beacuse ✅ means checked) and questioning strategy provided.
3. Use a conversational tone and adapt your language to match the user''s
style.
4. If a user seems hesitant or uncomfortable with a question, offer to
skip it or come back to it later.
5. For sensitive topics, approach them gently and give users the option
to decline answering.
6. If a question requires multiple sub-questions to get a complete answer,
ask them one at a time in a natural flow.
7. Provide appropriate responses or follow-up questions based on the user''s
answers.
8. If a user''s response is unclear or incomplete, politely ask for clarification.
When handling sensitive topics:
1. Preface the question with a statement acknowledging its personal nature.
2. Remind the user that they can choose not to answer.
3. Explain why the information is helpful for the app''s matching process.
4. If a user expresses discomfort, move on to the next topic without pressing
further.
As you gather information, mark completed items on the checklist by replacing
the ❌ with a ✅. For example:
❌ Name -> ✅ Name
Continue the conversation until all items on the checklist are marked
complete or the user indicates they want to stop.
To conclude the interaction:
1. Thank the user for their time and openness.
2. Briefly summarize the key information gathered.
3. Explain what will happen next in their app experience.
4. Offer to answer any final questions they might have.
Remember, your primary goal is to make the user feel comfortable and engaged
throughout this process. Adapt your approach as needed to ensure a positive
experience for each individual user.
Remember to add a line break when outputting {updated-checklist}.
Please note that in {updated-checklist}, line breaks should be added according
to ❌ or ✅ for better readability.
Your output strictly follows the format below:
✨ {updated-checklist}
✨ {your answer and follow-up based on updated-checklist}
You should output in {{#conversation.language#}}: include {updated-checklist}
also needs to do language replacement.
'
selected: false
title: First Round
type: llm
variables: []
vision:
configs:
detail: high
enabled: true
height: 98
id: '17231982631610'
position:
x: 1820.2857142857142
y: 476.57142857142856
positionAbsolute:
x: 1820.2857142857142
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
instruction: '{{#llm.text#}}
---
extracting each part of this:
✨ {updated-checklist}
✨ {your answer and follow-up based on updated-checklist}'
model:
completion_params:
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
parameters:
- description: Used to update the checklist in session variables.
name: updated_checklist
required: true
type: string
- description: 'extract ✨{your answer and follow-up based on updated-checklist}
checklist}
This means the main body of the response apart from the checklist.'
name: your_answer_and_follow_up
required: true
type: string
query:
- llm
- text
reasoning_mode: prompt
selected: false
title: Parameter Extractor
type: parameter-extractor
variables: []
height: 98
id: '1723199449939'
position:
x: 1816.2857142857142
y: 638.5714285714286
positionAbsolute:
x: 1816.2857142857142
y: 638.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1723835927661.your_answer_and_follow_up#}}'
desc: ''
selected: false
title: response (1)
type: answer
variables: []
height: 107
id: '17231998311791'
position:
x: 2735.172637636778
y: 476.57142857142856
positionAbsolute:
x: 2735.172637636778
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
author: Dify
desc: ''
height: 218
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":1,"mode":"normal","style":"","text":"Background:","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"This
chatflow is designed to gather users'' personal information in a friendly
manner without using questionnaires when they register for the dating app,
helping them find suitable matches.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"Next,
we will demonstrate the basic usage of Conversation Variables and Variable
Assigner through the Dating assistant for information gathering.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: yellow
title: ''
type: ''
width: 344
height: 218
id: '1723201957196'
position:
x: -170.10169355219966
y: 468.0366121147909
positionAbsolute:
x: -170.10169355219966
y: 468.0366121147909
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 344
- data:
author: Dify
desc: ''
height: 146
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Chatflow
will passively collect the user''s language preferences during the first
round of conversation and use them as the default settings for subsequent
dialogues.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ''
type: ''
width: 240
height: 146
id: '1723202406042'
position:
x: 1212.2857142857142
y: 310.8181298313605
positionAbsolute:
x: 1212.2857142857142
y: 310.8181298313605
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
- data:
author: Dify
desc: ''
height: 376
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"We
designed a series of attributes regarding user characteristics as user variables,
and before starting the conversation, they are all ❌.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Name","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Age","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Gender identity","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Sexualorientation","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Location (city/region)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":5},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Occupation","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":6},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Education level","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":7},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Relationship goals (casual, long-term, etc.)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":8},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Interests/hobbies","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":9},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Religious beliefs (if any)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":10},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Smoking habits","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":11},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Drinking habits","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":12},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Exercisefrequency","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":13},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Desire for children (yes/no/undecided)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":14},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
Deal-breakersin a potential match","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":15}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: violet
title: ''
type: ''
width: 426
height: 376
id: '1723202672906'
position:
x: 604.2857142857142
y: 654.9573945389006
positionAbsolute:
x: 604.2857142857142
y: 654.9573945389006
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 426
- data:
author: Dify
desc: ''
height: 150
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"This
chatflow will extract unstructured natural language expressions from the
user''s conversation to match the predefined attributes we have set.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: pink
title: ''
type: ''
width: 240
height: 150
id: '1723202924719'
position:
x: 1519.4282477275503
y: 995.4647041253402
positionAbsolute:
x: 1519.4282477275503
y: 995.4647041253402
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
- data:
author: Dify
desc: ''
height: 153
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Then,
update the Conversation Variables through the Variable Assigner, allowing
for stable memory of the information provided by users in multi-turn conversations.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ''
type: ''
width: 240
height: 153
id: '1723203103121'
position:
x: 1823.4282477275503
y: 1018.2895753454461
positionAbsolute:
x: 1823.4282477275503
y: 1018.2895753454461
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
- data:
author: Dify
desc: ''
height: 214
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Just
a reminder, the app can be used in any scenario that guides new users through
a series of questions to gather important information about them. Compared
to surveys and form filling, users can feel more comfortable answering questions.Just
a reminder, the app can be used in any scenario that guides new users through
a series of questions to gather important information about them. Compared
to surveys and form filling, users can feel more comfortable answering questions.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ''
type: ''
width: 360
height: 214
id: '1723203252330'
position:
x: 213.51897166426
y: 468.0366121147909
positionAbsolute:
x: 213.51897166426
y: 468.0366121147909
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 360
- data:
author: Dify
desc: ''
height: 182
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"背景:这个聊天流程旨在以友好的方式收集用户在注册约会应用时的个人信息,而不使用问卷调查,从而帮助他们找到合适的匹配对象。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"接下来,我们将通过约会助手的信息收集过程来演示对话变量(Conversation
Variables)和变量分配器(Variable Assigner)的基本用法。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: yellow
title: ' (1)'
type: ''
width: 345
height: 182
id: '17238343620000'
position:
x: -170.10169355219966
y: 718.3754908286048
positionAbsolute:
x: -170.10169355219966
y: 718.3754908286048
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 345
- data:
author: Dify
desc: ''
height: 182
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"背景:このチャットフローは、デーティングアプリに登録する際に、アンケートを使用せずにユーザーの個人情報を友好的な方法で収集し、適切なマッチングを見つけるのを助けるように設計されています。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"次に、デーティングアシスタントの情報収集プロセスを通じて、会話変数(Conversation
Variables)と変数割り当て機能(Variable Assigner)の基本的な使用方法を示します。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: yellow
title: ' (2)'
type: ''
width: 345
height: 182
id: '17238344233810'
position:
x: -170.10169355219966
y: 932.4319696714333
positionAbsolute:
x: -170.10169355219966
y: 932.4319696714333
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 345
- data:
author: Dify
desc: ''
height: 112
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"聊天流程将在第一轮对话中被动收集用户的语言偏好,并将其用作后续对话的默认设置。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (1)'
type: ''
width: 240
height: 112
id: '17238344506670'
position:
x: 1212.2857142857142
y: 185.52463702820802
positionAbsolute:
x: 1212.2857142857142
y: 185.52463702820802
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
- data:
author: Dify
desc: ''
height: 141
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"チャットフローは、最初の会話の中でユーザーの言語設定を受動的に収集し、それを以降の対話のデフォルト設定として使用します。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (2)'
type: ''
width: 240
height: 141
id: '17238344681260'
position:
x: 1212.2857142857142
y: 28.421197172816974
positionAbsolute:
x: 1212.2857142857142
y: 28.421197172816974
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
- data:
author: Dify
desc: ''
height: 384
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"我们设计了一系列关于用户特征的属性作为用户变量,在开始对话之前,它们都是❌。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
姓名","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
年龄","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
性别认同","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
性取向","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
位置(城市/地区)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":5},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
职业","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":6},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
教育水平","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":7},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
关系目标(临时、长期等)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":8},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
兴趣/爱好","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":9},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
宗教信仰(如果有)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":10},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
吸烟习惯","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":11},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
饮酒习惯","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":12},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
运动频率","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":13},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
对孩子的愿望(是/否/未决定)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":14},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
潜在匹配对象的决定性因素","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":15}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: violet
title: ' (1)'
type: ''
width: 422
height: 384
id: '17238345630540'
position:
x: 1071.382027252433
y: 995.4647041253402
positionAbsolute:
x: 1071.382027252433
y: 995.4647041253402
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 422
- data:
author: Dify
desc: ''
height: 334
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"ユーザーの特性に関する一連の属性をユーザー変数として設計し、会話を始める前はすべて❌となっています。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
名前","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":1},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
年齢","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":2},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
性別アイデンティティ","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":3},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
性的指向","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":4},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
場所(都市/地域)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":5},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
職業","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":6},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
学歴","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":7},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
関係の目標(カジュアル、長期的など)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":8},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
興味/趣味","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":9},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
宗教的信念(ある場合)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":10},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
喫煙習慣","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":11},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
飲酒習慣","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":12},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
運動頻度","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":13},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
子供の希望(はい/いいえ/未定)","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":14},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"❌
潜在的なマッチングにおけるディールブレーカー","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"listitem","version":1,"value":15}],"direction":"ltr","format":"","indent":0,"type":"list","version":1,"listType":"bullet","start":1,"tag":"ul"},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: violet
title: ' (1)'
type: ''
width: 423
height: 334
id: '17238345934960'
position:
x: 604.2857142857142
y: 1086.939748211702
positionAbsolute:
x: 604.2857142857142
y: 1086.939748211702
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 423
- data:
author: Dify
desc: ''
height: 125
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"这个聊天流程将从用户的对话中提取非结构化的自然语言表达,以匹配我们预先设定的属性。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: pink
title: ' (1)'
type: ''
width: 242
height: 125
id: '17238346521680'
position:
x: 1519.4282477275503
y: 1173.3455494686405
positionAbsolute:
x: 1519.4282477275503
y: 1173.3455494686405
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 242
- data:
author: Dify
desc: ''
height: 128
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"然后,通过变量分配器更新对话变量,从而在多轮对话中稳定地记住用户提供的信息。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (1)'
type: ''
width: 245
height: 128
id: '17238346693650'
position:
x: 1823.4282477275503
y: 1371.485457536622
positionAbsolute:
x: 1823.4282477275503
y: 1371.485457536622
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 245
- data:
author: Dify
desc: ''
height: 153
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"その後、変数割り当て機能を通じて会話変数を更新し、複数回のやり取りにおいてユーザーが提供した情報を安定的に記憶できるようにします。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (1)'
type: ''
width: 243
height: 153
id: '17238346919040'
position:
x: 1823.4282477275503
y: 1194.34808946571
positionAbsolute:
x: 1823.4282477275503
y: 1194.34808946571
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 243
- data:
author: Dify
desc: ''
height: 136
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"提醒一下,这个应用可以用于任何需要引导新用户回答一系列问题以收集他们重要信息的场景。与调查问卷和填表相比,用户在回答问题时可以感到更加舒适。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (1)'
type: ''
width: 358
height: 136
id: '17238347001920'
position:
x: 213.51897166426
y: 718.3754908286048
positionAbsolute:
x: 213.51897166426
y: 718.3754908286048
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 358
- data:
author: Dify
desc: ''
height: 216
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"念のため申し上げますが、このアプリは新規ユーザーに一連の質問をして重要な情報を収集するあらゆるシナリオで使用できます。アンケートやフォーム入力と比較して、ユーザーはより快適に質問に答えることができます。","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: cyan
title: ' (1)'
type: ''
width: 362
height: 216
id: '17238347065030'
position:
x: 213.51897166426
y: 896.1692203832192
positionAbsolute:
x: 213.51897166426
y: 896.1692203832192
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 362
- data:
author: lysonober
desc: ''
height: 179
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Strategy:
Try to avoid chatting in an offensive or overly blunt way. Instead, aim
to be as witty and humorous as possible, making the conversation as fun
as casual spoken dialogue. If you notice the other person hasn''t provided
complete information, don''t change ❌ to ✅. Instead, try to ask follow-up
questions, but don''t pursue the same question for more than 3 rounds of
conversation. Try to add some emojis to make conversation even more fun!","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: blue
title: ''
type: ''
width: 419
height: 179
id: '1723835492593'
position:
x: 604.2857142857142
y: 251.08149721176994
positionAbsolute:
x: 604.2857142857142
y: 251.08149721176994
selected: false
sourcePosition: right
targetPosition: left
type: custom-note
width: 419
- data:
desc: ''
model:
completion_params:
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
parameters:
- description: Used to update the checklist in session variables.
name: updated_checklist
required: true
type: string
- description: 'extract ✨{your answer and follow-up based on updated-checklist}
checklist}
This means the main body of the response apart from the checklist.'
name: your_answer_and_follow_up
required: true
type: string
query:
- '17231982631610'
- text
reasoning_mode: prompt
selected: false
title: Parameter Extractor 2
type: parameter-extractor
variables: []
height: 98
id: '1723835927661'
position:
x: 2124.285714285714
y: 476.57142857142856
positionAbsolute:
x: 2124.285714285714
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
assigned_variable_selector:
- conversation
- ai_checklist
desc: ''
input_variable_selector:
- '1723835927661'
- updated_checklist
selected: false
title: Variable Assigner 3
type: assigner
write_mode: over-write
height: 132
id: '1723836136947'
position:
x: 2424.285714285714
y: 476.57142857142856
positionAbsolute:
x: 2424.285714285714
y: 476.57142857142856
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: contains
id: 545abdd2-0b4d-4436-b373-6529a3c1d6ed
value: ❌
varType: string
variable_selector:
- conversation
- ai_checklist
id: 'true'
logical_operator: and
desc: ''
selected: false
title: Is the checklist completed?
type: if-else
height: 126
id: '1723836581183'
position:
x: 1212.2857142857142
y: 638.5714285714286
positionAbsolute:
x: 1212.2857142857142
y: 638.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
temperature: 0.7
mode: chat
name: claude-3-5-sonnet-20240620
provider: anthropic
prompt_template:
- id: e99bf3ad-8da5-4a7f-9f44-ceedf183dc40
role: system
text: 'You are an AI assistant for a dating app. Your role is to guide new
users through a checklist of questions to gather important information
about them. This process should feel like a natural conversation rather
than a formal questionnaire. Your goal is to make users feel comfortable
while collecting necessary data for the app.
Now you have finished this checklist:
{{#conversation.ai_checklist#}}
You will use the following questioning strategy:
{{#env.question_strategy#}}
When interacting with users:
1. Start with a friendly greeting and explain the purpose of the conversation.
2. Ask questions based on the checklist status(for those mark with ❌,
beacuse ✅ means checked) and questioning strategy provided.
3. Use a conversational tone and adapt your language to match the user''s
style.
4. If a user seems hesitant or uncomfortable with a question, offer to
skip it or come back to it later.
5. For sensitive topics, approach them gently and give users the option
to decline answering.
6. If a question requires multiple sub-questions to get a complete answer,
ask them one at a time in a natural flow.
7. Provide appropriate responses or follow-up questions based on the user''s
answers.
8. If a user''s response is unclear or incomplete, politely ask for clarification.
When handling sensitive topics:
1. Preface the question with a statement acknowledging its personal nature.
2. Remind the user that they can choose not to answer.
3. Explain why the information is helpful for the app''s matching process.
4. If a user expresses discomfort, move on to the next topic without pressing
further.
Now, it''s time to say goodbye 👋 to users:
'
- id: 5461ddfd-cb40-4207-9109-c6fe5de67519
role: user
text: '{{#sys.query#}}'
selected: false
title: End the conversation
type: llm
variables: []
vision:
configs:
detail: high
enabled: true
height: 98
id: '1723836614708'
position:
x: 1512.2857142857142
y: 775.5714285714286
positionAbsolute:
x: 1512.2857142857142
y: 775.5714285714286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
author: lysonober
desc: ''
height: 88
selected: false
showAuthor: true
text: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Youtube
视频讲解地址:https://www.youtube.com/watch?v=jov1Z-gsBME","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}'
theme: green
title: ''
type: ''
width: 240
height: 88
id: '1723847294461'
position:
x: 604.2857142857142
y: 543.3253308648141
positionAbsolute:
x: 604.2857142857142
y: 543.3253308648141
selected: true
sourcePosition: right
targetPosition: left
type: custom-note
width: 240
viewport:
x: 188.011398406871
y: -139.24467397463286
zoom: 0.8470885633880878