{ "format": "nodes-ui-flow", "version": 2, "rootGraph": { "nodes": [ { "id": "q-epoch", "type": "basic/question", "position": { "x": -2536.5663876670815, "y": 118.38519379430727 }, "data": { "title": "Epoch choice", "question": "ЭКРАН ВОЛШЕБНОЕ СЛОВО (абракадабра скажи)", "paraphrase": false, "width": 460 }, "style": { "width": 460 }, "dragHandle": ".node-shell__header", "measured": { "width": 460, "height": 365 }, "selected": false, "dragging": false }, { "id": "branch-epoch", "type": "basic/semantic-branch", "position": { "x": -940.3448430272709, "y": 288.9100158962242 }, "data": { "title": "Route by epoch", "choices": [ { "id": "epoch-2030", "label": "тридцатые; 2030-е; любое число между 2030 и 2039" }, { "id": "epoch-2040", "label": "сороковые; 2040-е; любое число между 2040 и 2049" }, { "id": "epoch-2050", "label": "пятидесятые; 2050-е; любое число между 2050 и 2059" } ], "retryOnUnclear": true, "retryQuestion": "", "retryParaphrase": false, "width": 520 }, "style": { "width": 520 }, "dragHandle": ".node-shell__header", "measured": { "width": 520, "height": 618 }, "selected": false, "dragging": false }, { "id": "msg-intro-2030", "type": "basic/assistant-message", "position": { "x": 1547.727944428824, "y": -601.8094904679194 }, "data": { "title": "Intro 2030", "text": "— Здравствуйте!\nМеня зовут Александр, я живу в России в 2030-х, у меня свой бизнес, поэтому могу поделиться, как здесь все устроено. \nЯ тоже сегодня на форуме ПМЭФ, вышел на перерыв, чтобы с вами пообщаться, у нас есть пару минут.", "paraphrase": false, "width": 500 }, "style": { "width": 500 }, "dragHandle": ".node-shell__header", "measured": { "width": 500, "height": 317 }, "selected": false, "dragging": false }, { "id": "msg-intro-2040", "type": "basic/assistant-message", "position": { "x": 1071.0780987001779, "y": -156.2229762795967 }, "data": { "title": "Intro 2040", "text": "— Здравствуйте!\nМеня зовут Анастасия, я живу в России в 2040-х, у меня свой бизнес, поэтому могу поделиться, как здесь все устроено. \nЯ тоже сегодня на форуме ПМЭФ, вышла на перерыв, чтобы с вами пообщаться, у нас есть пару минут.", "paraphrase": false, "width": 500 }, "style": { "width": 500 }, "dragHandle": ".node-shell__header", "measured": { "width": 500, "height": 317 }, "selected": false, "dragging": false }, { "id": "msg-intro-2050", "type": "basic/assistant-message", "position": { "x": 1429.4719854592527, "y": 945.0183913489028 }, "data": { "title": "Intro 2050", "text": "— Здравствуйте!\nМеня зовут Лев, я живу в России в 2050-х, у меня свой бизнес, поэтому могу поделиться, как здесь все устроено. \nЯ тоже сегодня на форуме ПМЭФ, вышел на перерыв, чтобы с вами пообщаться, у нас есть пару минут.", "paraphrase": false, "width": 500 }, "style": { "width": 500 }, "dragHandle": ".node-shell__header", "measured": { "width": 500, "height": 317 }, "selected": false, "dragging": false }, { "id": "q-name", "type": "basic/question", "position": { "x": 1700, "y": 0 }, "data": { "title": "Ask name", "question": "А как вас зовут?", "paraphrase": false, "width": 360 }, "style": { "width": 360 }, "dragHandle": ".node-shell__header", "measured": { "width": 360, "height": 379 } }, { "id": "branch-name-present", "type": "basic/semantic-branch", "position": { "x": 2120, "y": -40 }, "data": { "title": "Validate name", "choices": [ { "id": "has-name", "label": "ответ содержит имя человека; пользователь назвал как к нему обращаться; это имя или короткое представление" } ], "retryOnUnclear": true, "retryQuestion": "Извините, я не поняла, как к вам обращаться. Как вас зовут?", "retryParaphrase": true, "width": 430 }, "style": { "width": 430 }, "dragHandle": ".node-shell__header", "measured": { "width": 430, "height": 578 } }, { "id": "save-name", "type": "basic/save-memory", "position": { "x": 2559.619779642078, "y": 626.0918794999214 }, "data": { "title": "Save name", "key": "name", "instruction": "Извлеки имя пользователя. Если пользователь просто назвал имя, верни его.", "retryOnUnclear": true, "retryQuestion": "Не смогла уверенно распознать нужное значение. Пожалуйста, уточните ответ.", "retryParaphrase": false, "width": 360 }, "style": { "width": 360 }, "dragHandle": ".node-shell__header", "measured": { "width": 360, "height": 595 }, "selected": false, "dragging": false }, { "id": "msg-after-name", "type": "basic/assistant-message", "position": { "x": 2620, "y": 0 }, "data": { "title": "Acknowledge name", "text": "Очень приятно, {name}.", "paraphrase": false, "width": 360 }, "style": { "width": 360 }, "dragHandle": ".node-shell__header", "measured": { "width": 360, "height": 335 } }, { "id": "q-activity", "type": "basic/question", "position": { "x": 3040, "y": 0 }, "data": { "title": "Ask activity", "question": "{name}, а чем вы занимаетесь?", "paraphrase": false, "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 379 } }, { "id": "save-activity", "type": "basic/save-memory", "position": { "x": 4275.987191520681, "y": -13.928809012737965 }, "data": { "title": "Save activity", "key": "activity", "instruction": "Извлеки чем занимается гость: роль, профессию, бизнес или тип компании. Верни короткую фразу в именительном падеже.", "retryOnUnclear": true, "retryQuestion": "Не смогла уверенно распознать нужное значение. Пожалуйста, уточните ответ.", "retryParaphrase": false, "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 595 }, "selected": false, "dragging": false }, { "id": "msg-after-activity", "type": "basic/assistant-message", "position": { "x": 5000, "y": 0 }, "data": { "title": "LLM activity reflection", "text": "ТЕСТ", "paraphrase": false, "width": 470 }, "style": { "width": 470 }, "dragHandle": ".node-shell__header", "measured": { "width": 470, "height": 317 } }, { "id": "q-user-question", "type": "basic/question", "position": { "x": 6080, "y": 0 }, "data": { "title": "Participant question", "question": "4 ВОПРОСА НА ЭКРАНЕ", "paraphrase": false, "width": 460 }, "style": { "width": 460 }, "dragHandle": ".node-shell__header", "measured": { "width": 460, "height": 379 }, "selected": false }, { "id": "answer-rwb-context", "type": "basic/knowledge-answer", "position": { "x": 6620, "y": 0 }, "data": { "title": "Answer from RWB1 knowledge", "source": "uploaded", "contextPath": "scenarios/knowledge/rwb1_knowledge_base.txt", "originalPath": "scenarios/knowledge/rwb1_knowledge_base.txt", "contextFilename": "rwb1_knowledge_base.txt", "contextCharacters": 24535, "width": 470 }, "style": { "width": 470 }, "dragHandle": ".node-shell__header", "measured": { "width": 470, "height": 388 }, "selected": false }, { "id": "counter-question", "type": "basic/counter", "position": { "x": 7160, "y": 0 }, "data": { "title": "Question counter", "key": "rwbQuestionCount", "limit": 3, "width": 340 }, "style": { "width": 340 }, "dragHandle": ".node-shell__header", "measured": { "width": 340, "height": 267 }, "selected": false }, { "id": "msg-gift", "type": "basic/assistant-message", "position": { "x": 7640, "y": -160 }, "data": { "title": "Gift", "text": "Спасибо, что поговорили со мной. Мои помощники в 2026 году сейчас передадут вам подарок.\n\nЗаберите подарок!", "paraphrase": false, "width": 430 }, "style": { "width": 430 }, "dragHandle": ".node-shell__header", "measured": { "width": 430, "height": 317 }, "selected": false }, { "id": "node_mpb9mw7i_1", "type": "basic/restart", "position": { "x": 8665.905406091873, "y": 12.930168229577518 }, "data": { "title": "Перезапуск", "width": 280 }, "style": { "width": 280 }, "dragHandle": ".node-shell__header", "measured": { "width": 280, "height": 148 }, "selected": false, "dragging": false }, { "id": "branch-activity-present", "type": "basic/semantic-branch", "position": { "x": 3534.495204119806, "y": -32.88388842650677 }, "data": { "title": "Validate activity", "choices": [ { "id": "profession-role", "label": "пользователь назвал свою профессию, роль, название компании или организации, творческая или ремесленная деятельность, " } ], "retryOnUnclear": true, "retryQuestion": "{name}, я не совсем понял, чем вы занимаетесь. Скажите коротко: ваша роль, компания или что вы делаете?", "retryParaphrase": false, "width": 500 }, "style": { "width": 500 }, "dragHandle": ".node-shell__header", "measured": { "width": 500, "height": 561 }, "selected": false, "dragging": false }, { "id": "text-activity-reflection-system", "type": "basic/text", "position": { "x": 3980, "y": -470 }, "data": { "title": "Activity reflection system", "text": "Ты голосовой ассистент и предприниматель из будущего. Тебе дали короткое описание занятия пользователя. Сгенерируй одну естественную короткую реакцию на русском длиной в одно предложение. Без пафоса и без длинных списков. Подчеркни какой-то интересный аспект такой работы. Не пересказывай название занятия. Не задавай вопросов.", "width": 520, "height": 230 }, "style": { "width": 520 }, "dragHandle": ".node-shell__header", "measured": { "width": 520, "height": 295 }, "selected": false }, { "id": "request-activity-reflection", "type": "basic/request", "position": { "x": 4863.890135457779, "y": -440.0906518232434 }, "data": { "title": "Reflect on activity", "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 178 }, "selected": false, "dragging": false }, { "id": "node_mpegzyuq_1", "type": "basic/wait", "position": { "x": 8238.973504367672, "y": -32.98545262458319 }, "data": { "title": "Ожидание", "ms": 10000, "width": 300 }, "style": { "width": 300 }, "dragHandle": ".node-shell__header", "measured": { "width": 300, "height": 203 }, "selected": true, "dragging": false }, { "id": "node_mpeh1b6f_4", "type": "basic/semantic-branch", "position": { "x": -1980.2135918698195, "y": 133.8011714900615 }, "data": { "title": "Смысловое ветвление", "choices": [ { "id": "choice-0", "label": "Пользователь сказал Абракадабра или похожее слово" } ], "retryOnUnclear": true, "retryQuestion": "", "retryParaphrase": false, "width": 360 }, "style": { "width": 360 }, "dragHandle": ".node-shell__header", "measured": { "width": 360, "height": 563 }, "selected": false, "dragging": false }, { "id": "node_mpeh4js6_1", "type": "basic/question", "position": { "x": -1398.4903336183634, "y": 198.44077294756852 }, "data": { "title": "Вопрос", "question": "ЭКРАН ВЫБОРА ГОДА", "paraphrase": false, "width": 360 }, "style": { "width": 360 }, "dragHandle": ".node-shell__header", "measured": { "width": 360, "height": 379 }, "dragging": false, "selected": false }, { "id": "node_mpehixp3_1", "type": "basic/start", "position": { "x": -3209.713027406181, "y": 282.0413987637652 }, "data": { "title": "Начало", "width": 260 }, "style": { "width": 260 }, "dragHandle": ".node-shell__header", "measured": { "width": 260, "height": 170 }, "selected": false, "dragging": false }, { "id": "text-profession-recommendation-question", "type": "basic/text", "position": { "x": 7520, "y": -520 }, "data": { "title": "Profession recommendation prompt", "text": "Пользователь описал свое занятие как: {activity}. В начале диалога был выбран период: {epoch}. Сверь занятие человека со справочником профессий будущего RWB и выбери одну наиболее подходящую новую профессию. Ответ должен звучать как реплика живого бизнесмена, а не как справка: сначала мягко скажи, что подумал о навыках человека в его текущей работе, затем свяжи это с рынком труда в периоде времени тебя, назови новую профессию, объясни, почему его навыки туда подойдут, и упомяни подходящее УТП или подразделение RWB. Не давай конкретный шаблон слово в слово, но держи эту логику. Отвечай одним абзацем, без Markdown, без звездочек, без заголовков, без списков и без нумерации.", "width": 560, "height": 250 }, "style": { "width": 560 }, "dragHandle": ".node-shell__header", "measured": { "width": 560, "height": 295 }, "selected": false }, { "id": "answer-profession-context", "type": "basic/knowledge-answer", "position": { "x": 7640, "y": 220 }, "data": { "title": "Recommend future profession", "source": "uploaded", "contextPath": "scenarios/knowledge/professions_knowledge_base.txt", "originalPath": "scenarios/source/Профессии.html", "contextFilename": "professions_knowledge_base.txt", "contextCharacters": 5083, "width": 520 }, "style": { "width": 520 }, "dragHandle": ".node-shell__header", "measured": { "width": 520, "height": 388 }, "selected": false }, { "id": "save-epoch-2030", "type": "basic/save-memory", "position": { "x": 780, "y": -700 }, "data": { "title": "Save selected period", "key": "epoch", "instruction": "Извлеки выбранный временной период из ответа. Если назван год, верни десятилетие в виде 2030-е, 2040-е или 2050-е. Если уже названы тридцатые, сороковые или пятидесятые, верни соответствующее десятилетие.", "retryOnUnclear": false, "retryQuestion": "", "retryParaphrase": false, "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 479 }, "selected": false }, { "id": "save-epoch-2040", "type": "basic/save-memory", "position": { "x": 352.0000000000008, "y": 275.99999999999994 }, "data": { "title": "Save selected period", "key": "epoch", "instruction": "Извлеки выбранный временной период из ответа. Если назван год, верни десятилетие в виде 2030-е, 2040-е или 2050-е. Если уже названы тридцатые, сороковые или пятидесятые, верни соответствующее десятилетие.", "retryOnUnclear": false, "retryQuestion": "", "retryParaphrase": false, "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 479 }, "selected": false, "dragging": false }, { "id": "save-epoch-2050", "type": "basic/save-memory", "position": { "x": 198.00000000000108, "y": 957.9999999999997 }, "data": { "title": "Save selected period", "key": "epoch", "instruction": "Извлеки выбранный временной период из ответа. Если назван год, верни десятилетие в виде 2030-е, 2040-е или 2050-е. Если уже названы тридцатые, сороковые или пятидесятые, верни соответствующее десятилетие.", "retryOnUnclear": false, "retryQuestion": "", "retryParaphrase": false, "width": 390 }, "style": { "width": 390 }, "dragHandle": ".node-shell__header", "measured": { "width": 390, "height": 479 }, "selected": false, "dragging": false }, { "id": "role-2030", "type": "basic/update-role", "position": { "x": 1370.4239018281098, "y": -1015.0325136970283 }, "data": { "title": "Role Alexander 2030", "role": "Ты Александр, предприниматель из России 2030-х. Говори от первого лица как живой собеседник с форума ПМЭФ, но сохраняй общие правила ассистента: кратко, естественно, без Markdown, списков, заголовков и нумерации.", "width": 380 }, "style": { "width": 380 }, "dragHandle": ".node-shell__header", "measured": { "width": 380, "height": 329 }, "selected": false, "dragging": false }, { "id": "role-2040", "type": "basic/update-role", "position": { "x": 945.4653183781547, "y": 290.81836730211603 }, "data": { "title": "Role Anastasia 2040", "role": "Ты Анастасия, предпринимательница из России 2040-х. Говори от первого лица как живая собеседница с форума ПМЭФ, но сохраняй общие правила ассистента: кратко, естественно, без Markdown, списков, заголовков и нумерации.", "width": 380 }, "style": { "width": 380 }, "dragHandle": ".node-shell__header", "measured": { "width": 380, "height": 329 }, "selected": false, "dragging": false }, { "id": "role-2050", "type": "basic/update-role", "position": { "x": 932.8254112507414, "y": 1007.4422742894128 }, "data": { "title": "Role Lev 2050", "role": "Ты Лев, предприниматель из России 2050-х. Говори от первого лица как живой собеседник с форума ПМЭФ, но сохраняй общие правила ассистента: кратко, естественно, без Markdown, списков, заголовков и нумерации.", "width": 380 }, "style": { "width": 380 }, "dragHandle": ".node-shell__header", "measured": { "width": 380, "height": 329 }, "selected": false, "dragging": false } ], "edges": [ { "id": "e-intro-2030-name", "source": "msg-intro-2030", "sourceHandle": "dialog", "target": "q-name", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-intro-2040-name", "source": "msg-intro-2040", "sourceHandle": "dialog", "target": "q-name", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-intro-2050-name", "source": "msg-intro-2050", "sourceHandle": "dialog", "target": "q-name", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-q-name-branch", "source": "q-name", "sourceHandle": "turn", "target": "branch-name-present", "targetHandle": "turn", "type": "default" }, { "id": "e-q-name-save", "source": "q-name", "sourceHandle": "turn", "target": "save-name", "targetHandle": "turn", "type": "default" }, { "id": "e-branch-name-save", "source": "branch-name-present", "sourceHandle": "has-name", "target": "save-name", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-save-name-after", "source": "save-name", "sourceHandle": "dialog", "target": "msg-after-name", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-after-name-activity", "source": "msg-after-name", "sourceHandle": "dialog", "target": "q-activity", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-save-activity-after", "source": "save-activity", "sourceHandle": "dialog", "target": "msg-after-activity", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-user-question-answer-turn", "source": "q-user-question", "sourceHandle": "turn", "target": "answer-rwb-context", "targetHandle": "turn", "type": "default" }, { "id": "e-user-question-answer-dialog", "source": "q-user-question", "sourceHandle": "dialog", "target": "answer-rwb-context", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-answer-counter", "source": "answer-rwb-context", "sourceHandle": "dialog", "target": "counter-question", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-counter-continue-question", "source": "counter-question", "sourceHandle": "continue", "target": "q-user-question", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-counter-done-gift", "source": "counter-question", "sourceHandle": "done", "target": "answer-profession-context", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-q-activity-branch", "source": "q-activity", "sourceHandle": "turn", "target": "branch-activity-present", "targetHandle": "turn", "type": "default" }, { "id": "e-q-activity-save", "source": "q-activity", "sourceHandle": "turn", "target": "save-activity", "targetHandle": "turn", "type": "default" }, { "id": "e-activity-reflection-system", "source": "text-activity-reflection-system", "sourceHandle": "text", "target": "request-activity-reflection", "targetHandle": "system", "type": "default" }, { "id": "e-save-activity-reflection-user", "source": "save-activity", "sourceHandle": "value", "target": "request-activity-reflection", "targetHandle": "user", "type": "default" }, { "id": "e-reflection-message-text", "source": "request-activity-reflection", "sourceHandle": "response", "target": "msg-after-activity", "targetHandle": "text", "type": "default" }, { "id": "e-branch-activity-profession-role-save", "source": "branch-activity-present", "sourceHandle": "profession-role", "target": "save-activity", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpeh02sq_2", "source": "node_mpegzyuq_1", "sourceHandle": "dialog", "target": "node_mpb9mw7i_1", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpeh047z_3", "source": "msg-gift", "sourceHandle": "dialog", "target": "node_mpegzyuq_1", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpeh1xr1_6", "source": "q-epoch", "sourceHandle": "turn", "target": "node_mpeh1b6f_4", "targetHandle": "turn", "type": "default" }, { "id": "edge_mpeh50p7_2", "source": "node_mpeh1b6f_4", "sourceHandle": "choice-0", "target": "node_mpeh4js6_1", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpeh55rq_3", "source": "node_mpeh4js6_1", "sourceHandle": "turn", "target": "branch-epoch", "targetHandle": "turn", "type": "default" }, { "id": "edge_mpehj3jz_2", "source": "node_mpehixp3_1", "sourceHandle": "dialog", "target": "q-epoch", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpej6n42_1", "source": "msg-after-activity", "sourceHandle": "dialog", "target": "q-user-question", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-profession-prompt-question", "source": "text-profession-recommendation-question", "sourceHandle": "text", "target": "answer-profession-context", "targetHandle": "question", "type": "default" }, { "id": "e-profession-answer-gift", "source": "answer-profession-context", "sourceHandle": "dialog", "target": "msg-gift", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-save-epoch-2030-intro", "source": "save-epoch-2030", "sourceHandle": "dialog", "target": "role-2030", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-role-2030-intro", "source": "role-2030", "sourceHandle": "dialog", "target": "msg-intro-2030", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-save-epoch-2040-intro", "source": "save-epoch-2040", "sourceHandle": "dialog", "target": "role-2040", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-role-2040-intro", "source": "role-2040", "sourceHandle": "dialog", "target": "msg-intro-2040", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-save-epoch-2050-intro", "source": "save-epoch-2050", "sourceHandle": "dialog", "target": "role-2050", "targetHandle": "dialog-in", "type": "default" }, { "id": "e-role-2050-intro", "source": "role-2050", "sourceHandle": "dialog", "target": "msg-intro-2050", "targetHandle": "dialog-in", "type": "default" }, { "id": "edge_mpekojnw_1", "source": "branch-epoch", "sourceHandle": "epoch-2030", "target": "save-epoch-2030", "targetHandle": "turn", "type": "default" }, { "id": "edge_mpekom9b_2", "source": "branch-epoch", "sourceHandle": "epoch-2040", "target": "save-epoch-2040", "targetHandle": "turn", "type": "default" }, { "id": "edge_mpekoqk3_3", "source": "branch-epoch", "sourceHandle": "epoch-2050", "target": "save-epoch-2050", "targetHandle": "turn", "type": "default" } ], "viewport": { "x": -2766.1145048714175, "y": 178.71842207682255, "zoom": 0.4352752816480626 } }, "componentTemplates": [], "settings": { "llmProvider": "deepinfra", "llmRolePrompt": "Ты посетитель форума ПМЭФ. Отвечай коротко, естественно и по-русски. Называй разные имена и занятия." } }