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