feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,187 @@
app:
description: 考陪练系统专用的 sql 执行器
icon: 🤖
icon_background: '#FFEAD5'
mode: workflow
name: 恩喜-00-SQL 执行器-考陪练专用
use_icon_as_answer_icon: false
dependencies: []
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: http-request
id: 1758989617994-source-1758989692485-target
source: '1758989617994'
sourceHandle: source
target: '1758989692485'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: http-request
targetType: end
id: 1758989692485-source-1758989723090-target
source: '1758989692485'
sourceHandle: source
target: '1758989723090'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- label: SQL 语句
max_length: 1000000
options: []
required: true
type: paragraph
variable: sql
height: 109
id: '1758989617994'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
authorization:
config: null
type: no-auth
body:
data:
- type: text
value: "{\n \"sql\": \"{{#1758989617994.sql#}}\",\n \"params\":\
\ {}\n }"
type: raw-text
desc: ''
headers: 'Content-Type:application/json
X-API-Key:dify-2025-kaopeilian'
method: POST
params: ''
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 100
selected: true
ssl_verify: false
timeout:
max_connect_timeout: 0
max_read_timeout: 0
max_write_timeout: 0
title: HTTP 请求
type: http-request
url: https://fw.ireborn.com.cn/api/v1/sql/execute-simple
variables: []
height: 137
id: '1758989692485'
position:
x: 385
y: 282
positionAbsolute:
x: 385
y: 282
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1758989692485'
- body
value_type: string
variable: body
- value_selector:
- '1758989692485'
- status_code
value_type: number
variable: status_code
selected: false
title: 结束
type: end
height: 114
id: '1758989723090'
position:
x: 688
y: 282
positionAbsolute:
x: 688
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 213.76058260198113
y: 11.06197629555595
zoom: 0.6935832932101428
rag_pipeline_variables: []

View File

@@ -0,0 +1,771 @@
app:
description: 上传提炼知识点
icon: 🤖
icon_background: '#E4FBCC'
mode: workflow
name: 恩喜-01-知识点分析-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: document-extractor
targetType: llm
id: 1757513748987-source-1757513757216-target
selected: false
source: '1757513748987'
sourceHandle: source
target: '1757513757216'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: code
id: 1757513757216-source-1757516212204-target
selected: false
source: '1757513757216'
sourceHandle: source
target: '1757516212204'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1757513757216-fail-branch-1757572091560-target
selected: false
source: '1757513757216'
sourceHandle: fail-branch
target: '1757572091560'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: end
id: 1757516212204-fail-branch-1757576655478-target
selected: false
source: '1757516212204'
sourceHandle: fail-branch
target: '1757576655478'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: iteration
id: 1757516212204-source-1757687332404-target
selected: false
source: '1757516212204'
sourceHandle: source
target: '1757687332404'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: iteration
targetType: end
id: 1757687332404-source-1757522230050-target
selected: false
source: '1757687332404'
sourceHandle: source
target: '1757522230050'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: true
isInLoop: false
iteration_id: '1757687332404'
sourceType: iteration-start
targetType: code
id: 1757687332404start-source-1758575376121-target
selected: false
source: 1757687332404start
sourceHandle: source
target: '1758575376121'
targetHandle: target
type: custom
zIndex: 1002
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1757513649648-source-1766636080995-target
source: '1757513649648'
sourceHandle: source
target: '1766636080995'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: document-extractor
id: 1766636080995-source-1757513748987-target
source: '1766636080995'
sourceHandle: source
target: '1757513748987'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: end
id: 1766636080995-fail-branch-1764240729694-target
source: '1766636080995'
sourceHandle: fail-branch
target: '1764240729694'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: true
isInLoop: false
iteration_id: '1757687332404'
sourceType: code
targetType: tool
id: 1758575376121-source-1766636254081-target
source: '1758575376121'
sourceHandle: source
target: '1766636254081'
targetHandle: target
type: custom
zIndex: 1002
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- allowed_file_extensions: []
allowed_file_types:
- document
- audio
- video
- image
allowed_file_upload_methods:
- local_file
- remote_url
label: file
max_length: 1
options: []
required: true
type: file
variable: file
- label: course_name
max_length: 255
options: []
required: true
type: text-input
variable: course_name
- default: '1'
label: course_id
max_length: 48
options: []
required: true
type: number
variable: course_id
- default: '16'
label: material_id
max_length: 48
options: []
required: true
type: number
variable: material_id
height: 187
id: '1757513649648'
position:
x: 30
y: 283
positionAbsolute:
x: 30
y: 283
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
is_array_file: true
selected: false
title: 文档提取器
type: document-extractor
variable_selector:
- '1757513649648'
- file
height: 104
id: '1757513748987'
position:
x: 934
y: 281
positionAbsolute:
x: 934
y: 281
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
desc: ''
error_strategy: fail-branch
model:
completion_params:
temperature: 0.1
mode: chat
name: google/gemini-3-pro-preview
provider: langgenius/openrouter/openrouter
prompt_template:
- id: f0a75809-0e24-491f-bd19-964d8b2eae4c
role: system
text: "# 角色\n你是一个文件拆解高手擅长将用户提交的内容进行精准拆分拆分后的内容做个简单的优化处理使其更具可读性但要尽量使用原文的原词原句。\n\
\n## 技能\n### 技能 1: 内容拆分\n1. 当用户提交内容后,拆分为多段。\n2. 对拆分后的内容做简单优化,使其更具可读性,比如去掉奇怪符号(如换行符、乱码),若语句不通顺,或格式原因导致错位,则重新表达。用户可能会提交录音转文字的内容,因此可能是有错字的,注意修复这些小瑕疵。\n\
3. 优化过程中,尽量使用原文的原词原句,特别是话术类,必须保持原有的句式、保持原词原句,而不是重构。\n4. 注意是拆分而不是重写,不需要润色,尽量不做任何处理。\n\
5. 输出到 content。\n\n### 技能 2: 为每一个选段概括一个标题\n1. 为每个拆分出来的选段概括一个标题,并输出到 title。\n\
\n### 技能 3: 为每一个选段说明与主题的关联\n1. 详细说明这一段与全文核心主题的关联,并输出到 topic_relation。\n\
\n### 技能 4: 为每一个选段打上一个类型标签\n1. 用户提交的内容很有可能是一个课程、一篇讲义、一个产品的说明书,通常是用户希望他公司的员工或高管学习的知识。\n\
2. 用户通常是医疗美容机构或轻医美、生活美容连锁品牌。\n3. 你要为每个选段打上一个知识类型的标签,最好是这几个类型中的一个:\"理论知识\"\
, \"诊断设计\", \"操作步骤\", \"沟通话术\", \"案例分析\", \"注意事项\", \"技巧方法\", \"客诉处理\"\
。当然你也可以为这个选段匹配一个更适合的。\n\n## 输出要求(严格按要求输出)\n请直接输出一个纯净的 JSON 数组Array不要包含\
\ Markdown 标记(如 ```json也不要包含任何解释性文字。格式如下\n\n[\n {\n \"title\":\
\ \"知识点标题\",\n \"content\": \"知识点内容\",\n \"topic_relation\": \"\
知识点与主题的关系\",\n \"type\": \"知识点类型\"\n },\n {\n \"title\": \"第二个知识点标题\"\
,\n \"content\": \"第二个知识点内容...\",\n \"topic_relation\": \"...\"\
,\n \"type\": \"...\"\n }\n]\n\n## 限制\n- 仅围绕用户提交的内容进行拆分和关联标注,不涉及其他无关内容。\n\
- 拆分后的内容必须最大程度保持与原文一致。\n- 关联说明需清晰合理。\n- 不论如何,不要拆分超过 20 段!"
- id: bc1168ad-45de-475e-9365-8791306c8bb3
role: user
text: '课程主题:{{#1757513649648.course_name#}}
## 用户提交的内容:
{{#1757513748987.text#}}
## 注意
- 以json的格式输出
- 不论如何不要拆分超过20 段!'
selected: false
structured_output:
schema:
additionalProperties: false
properties:
content:
description: 知识点内容
type: string
title:
description: 知识点标题
type: string
required:
- title
- content
type: object
structured_output_enabled: false
title: 知识点提取
type: llm
variables: []
vision:
enabled: false
height: 124
id: '1757513757216'
position:
x: 1236
y: 283
positionAbsolute:
x: 1236
y: 283
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
code: "import json\nimport re\ndef main(arg1: str) -> dict:\n # --- 内部辅助函数:清洗文本以适配\
\ SQL ---\n def clean_text_for_sql(text):\n if not isinstance(text,\
\ str):\n return text\n \n # 1. 【关键修改】将物理换行符替换为\
\ SQL 转义换行符 (\\\\n)\n # 这样 SQL 语句本身是一行,但数据库会将其解释为换行\n text\
\ = text.replace('\\n', '\\\\n').replace('\\r', '')\n \n #\
\ 2. 将单引号替换为两个单引号SQL 标准转义),防止截断\n text = text.replace(\"'\", \"\
''\")\n \n return text\n try:\n if not arg1:\n \
\ return {\"data\": []}\n \n # --- 1. 提取 JSON 字符串\
\ (保持不变) ---\n json_str = arg1\n match = re.search(r'```json\\\
s*(.*?)\\s*```', arg1, re.DOTALL)\n if match:\n json_str\
\ = match.group(1)\n else:\n start = arg1.find('[')\n\
\ end = arg1.rfind(']')\n if start != -1 and end !=\
\ -1:\n json_str = arg1[start:end+1]\n # --- 2. 解析\
\ JSON ---\n data_list = json.loads(json_str)\n \n \
\ # --- 3. 校验与清洗数据 ---\n if not isinstance(data_list, list):\n \
\ if isinstance(data_list, dict) and \"items\" in data_list:\n\
\ data_list = data_list[\"items\"]\n else:\n \
\ return {\"data\": []}\n if len(data_list) >= 30:\n\
\ data_list = data_list[:29]\n \n # 遍历列表进行清洗\n\
\ cleaned_list = []\n for item in data_list:\n \
\ if isinstance(item, dict):\n cleaned_item = {\n \
\ \"title\": clean_text_for_sql(item.get(\"title\", \"\")),\n\
\ \"content\": clean_text_for_sql(item.get(\"content\"\
, \"\")),\n \"topic_relation\": clean_text_for_sql(item.get(\"\
topic_relation\", \"\")),\n \"type\": clean_text_for_sql(item.get(\"\
type\", \"\"))\n }\n cleaned_list.append(cleaned_item)\n\
\ \n return {\"data\": cleaned_list}\n \n except json.JSONDecodeError\
\ as e:\n print(f\"JSON解析错误: {str(e)}\")\n return {\"data\"\
: []}\n except Exception as e:\n print(f\"处理过程中发生错误: {str(e)}\"\
)\n return {\"data\": []}"
code_language: python3
desc: ''
error_strategy: fail-branch
outputs:
data:
children: null
type: array[object]
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 1000
selected: false
title: 转换格式
type: code
variables:
- value_selector:
- '1757513757216'
- text
value_type: string
variable: arg1
height: 117
id: '1757516212204'
position:
x: 1538
y: 283
positionAbsolute:
x: 1538
y: 283
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1757687332404'
- output
value_type: array[string]
variable: output
selected: false
title: 结束
type: end
height: 88
id: '1757522230050'
position:
x: 2708
y: 572
positionAbsolute:
x: 2708
y: 572
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1757513757216'
- error_message
value_type: string
variable: reasoning_content
selected: false
title: 结束 2
type: end
height: 88
id: '1757572091560'
position:
x: 1361.0212171476019
y: 472.6567992168116
positionAbsolute:
x: 1361.0212171476019
y: 472.6567992168116
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1757516212204'
- error_message
value_type: string
variable: result
selected: false
title: 结束 3
type: end
height: 88
id: '1757576655478'
position:
x: 2123
y: 283
positionAbsolute:
x: 2123
y: 283
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
error_handle_mode: continue-on-error
height: 410
is_parallel: true
iterator_input_type: array[object]
iterator_selector:
- '1757516212204'
- data
output_selector:
- '1758575376121'
- title
output_type: array[string]
parallel_nums: 10
selected: false
start_node_id: 1757687332404start
title: 迭代
type: iteration
width: 1310.983478660764
height: 410
id: '1757687332404'
position:
x: 1939.6507421681436
y: 396.2369270862009
positionAbsolute:
x: 1939.6507421681436
y: 396.2369270862009
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 1311
zIndex: 1
- data:
desc: ''
isInIteration: true
selected: false
title: ''
type: iteration-start
draggable: false
height: 48
id: 1757687332404start
parentId: '1757687332404'
position:
x: 60
y: 62
positionAbsolute:
x: 1999.6507421681436
y: 458.2369270862009
selectable: false
selected: false
sourcePosition: right
targetPosition: left
type: custom-iteration-start
width: 44
zIndex: 1002
- data:
code: "def main(arg1: dict) -> dict:\n # 上一个节点已经完成了所有清洗工作(包括换行符转义 \\n 和单引号转义\
\ ''\n # 这里只需要直接透传数据即可,不要再做任何处理\n return {\n \"title\": arg1.get(\"\
title\"),\n \"content\": arg1.get(\"content\"),\n \"topic_relation\"\
: arg1.get(\"topic_relation\"),\n \"type\": arg1.get(\"type\")\n\
\ }"
code_language: python3
desc: ''
isInIteration: true
isInLoop: false
iteration_id: '1757687332404'
outputs:
content:
children: null
type: string
title:
children: null
type: string
topic_relation:
children: null
type: string
type:
children: null
type: string
selected: false
title: 内容提取
type: code
variables:
- value_selector:
- '1757687332404'
- item
value_type: object
variable: arg1
height: 52
id: '1758575376121'
parentId: '1757687332404'
position:
x: 204
y: 60
positionAbsolute:
x: 2143.6507421681436
y: 456.2369270862009
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 1002
- data:
outputs:
- value_selector:
- '1766636080995'
- text
value_type: string
variable: error_message
selected: true
title: 结束 5
type: end
height: 88
id: '1764240729694'
position:
x: 934
y: 411
positionAbsolute:
x: 934
y: 411
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
error_strategy: fail-branch
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 1000
selected: false
title: 恩喜-00-SQL 执行器-考陪练专用
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: DELETE FROM knowledge_points WHERE material_id = {{#1757513649648.material_id#}};
type: tool
height: 117
id: '1766636080995'
position:
x: 369.1162304946969
y: 472.6567992168116
positionAbsolute:
x: 369.1162304946969
y: 472.6567992168116
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
isInIteration: true
isInLoop: false
is_team_authorization: true
iteration_id: '1757687332404'
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: false
title: 恩喜-00-SQL 执行器-考陪练专用
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: INSERT INTO knowledge_points (course_id, material_id, name, description,
type, source, topic_relation) VALUES ({{#1757513649648.course_id#}},
{{#1757513649648.material_id#}}, '{{#1758575376121.title#}}', '{{#1758575376121.content#}}',
'{{#1758575376121.type#}}', 1, '{{#1758575376121.topic_relation#}}');
type: tool
height: 52
id: '1766636254081'
parentId: '1757687332404'
position:
x: 552.0682037973988
y: 83.70934394330777
positionAbsolute:
x: 2491.7189459655424
y: 479.9462710295087
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
zIndex: 1002
viewport:
x: -154.69868384174993
y: 184.48211749520988
zoom: 0.5480921885368025
rag_pipeline_variables: []

View File

@@ -0,0 +1,658 @@
app:
description: 动态生成考试题目
icon: 🤖
icon_background: '#FBE8FF'
mode: workflow
name: 恩喜-02-试题生成器-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: if-else
targetType: code
id: 1757697174164-false-1759336370957-target
source: '1757697174164'
sourceHandle: 'false'
target: '1759336370957'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: llm
targetType: end
id: 1759336189971-source-1757522219070-target
source: '1759336189971'
sourceHandle: source
target: '1757522219070'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: if-else
targetType: llm
id: 1757697174164-true-17593434940720-target
source: '1757697174164'
sourceHandle: 'true'
target: '17593434940720'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: llm
targetType: end
id: 17593434940720-source-17576978306140-target
source: '17593434940720'
sourceHandle: source
target: '17576978306140'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1757517722090-source-1766636474539-target
source: '1757517722090'
sourceHandle: source
target: '1766636474539'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: if-else
id: 1766636474539-source-1757697174164-target
source: '1766636474539'
sourceHandle: source
target: '1757697174164'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: code
targetType: tool
id: 1759336370957-source-1766636566272-target
source: '1759336370957'
sourceHandle: source
target: '1766636566272'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: llm
id: 1766636566272-source-1759336189971-target
source: '1766636566272'
sourceHandle: source
target: '1759336189971'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables:
- default: '1'
label: course_id
max_length: 255
options: []
required: true
type: number
variable: course_id
- default: '1'
hint: ''
label: position_id
max_length: 48
options: []
placeholder: ''
required: true
type: number
variable: position_id
- default: ''
hint: ''
label: mistake_records
max_length: 480000
options: []
placeholder: ''
required: false
type: paragraph
variable: mistake_records
- default: '4'
hint: ''
label: single_choice_count
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: single_choice_count
- default: '2'
hint: ''
label: multiple_choice_count
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: multiple_choice_count
- default: '1'
hint: ''
label: true_false_count
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: true_false_count
- default: '2'
hint: ''
label: fill_blank_count
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: fill_blank_count
- default: '1'
hint: ''
label: essay_count
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: essay_count
- default: '3'
hint: ''
label: difficulty_level
max_length: 48
options: []
placeholder: ''
required: false
type: number
variable: difficulty_level
height: 317
id: '1757517722090'
position:
x: 113.18367757866764
y: 380.7254702687234
positionAbsolute:
x: 113.18367757866764
y: 380.7254702687234
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '1759336189971'
- text
value_type: string
variable: result
selected: false
title: 结束
type: end
height: 88
id: '1757522219070'
position:
x: 2675.4479082184957
y: 699.3770729563379
positionAbsolute:
x: 2675.4479082184957
y: 699.3770729563379
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: not empty
id: 2b42b816-606a-4753-8494-5451b3d7ab42
value: ''
varType: string
variable_selector:
- '1757517722090'
- mistake_records
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 条件分支
type: if-else
height: 124
id: '1757697174164'
position:
x: 1075.7946800832713
y: 393.17560717622047
positionAbsolute:
x: 1075.7946800832713
y: 393.17560717622047
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
desc: ''
outputs:
- value_selector:
- '17593434940720'
- text
value_type: string
variable: result
selected: false
title: 结束 (1)
type: end
height: 88
id: '17576978306140'
position:
x: 1890.5828711788172
y: 199.92291499877138
positionAbsolute:
x: 1890.5828711788172
y: 199.92291499877138
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
exclude_reasoning_tokens: true
response_format: json_object
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: df690399-5bed-4567-9b1d-5d31584d65e8
role: system
text: "## 角色\n你是一位经验丰富的考试出题专家能够依据用户提供的知识内容结合用户的岗位特征随机地生成{{#1759336370957.result#}}题考题。你会以专业、严谨且清晰的方式出题。\n\
\n## 输出{{#1757517722090.single_choice_count#}}道单选题\n1、每道题目只能有 1 个正确答案。\n\
2、干扰项要具有合理性和迷惑性且所有选项必须与主题相关。\n3、答案解析要简明扼要说明选择理由。\n4、为每道题记录出题来源的知识点 id。\n\
5、请以 JSON 格式输出。\n6、为每道题输出一个序号。\n\n### 输出结构:\n{\n \"num\": \"题号\",\n\
\ \"type\": \"single_choice\",\n \"topic\": {\n \"title\"\
: \"清晰完整的题目描述\",\n \"options\": {\n \"opt1\": \"A符合语境的选项\"\
,\n \"opt2\": \"B符合语境的选项\",\n \"opt3\": \"C符合语境的选项\"\
,\n \"opt4\": \"D符合语境的选项\"\n }\n },\n \"knowledge_point_id\"\
: \"出题来源知识点的id\",\n \"correct\": \"其中一个选项的全部原文\",\n \"analysis\"\
: \"准确的答案解析,包含选择原因和知识点说明\"\n}\n\n- 严格按照以上格式输出\n\n## 输出{{#1757517722090.multiple_choice_count#}}道多选题\n\
1、每道题目有多个正确答案。\n2、\"type\": \"multiple_choice\"\n3、其它事项同单选题。\n\n## 输出{{#1757517722090.true_false_count#}}道判断题\n\
1、每道题目只有 \"正确\" 或 \"错误\" 两种答案。\n2、题目表述应明确清晰避免歧义。\n3、题目应直接陈述事实或观点便于做出是非判断。\n\
4、其它事项同单选题。\n\n### 输出结构:\n{\n \"num\": \"题号\",\n \"type\": \"true_false\"\
,\n \"topic\": {\n \"title\": \"清晰完整的题目描述\"\n },\n \"\
knowledge_point_id\": \" 出题来源知识点的id\",\n \"correct\": \"正确\", // 或\
\ \"错误\",表示正确答案是对还是错\n \"analysis\": \"准确的答案解析,包含判断原因和知识点说明\"\n}\n\n\
- 严格按照以上格式输出\n\n## 输出{{#1757517722090.fill_blank_count#}}道填空题\n1. 题干应明确完整空缺处需用横线“___”标示且只能有一处空缺\n\
2. 答案应唯一且明确,避免开放性表述\n3. 空缺长度应与答案长度大致匹配\n4. 解析需说明答案依据及相关知识点\n5. 其余要求与单选题一致\n\
\n### 输出结构:\n{\n \"num\": \"题号\",\n \"type\": \"fill_blank\",\n\
\ \"topic\": {\n \"title\": \"包含___空缺的题目描述\"\n },\n \"\
knowledge_point_id\": \"出题来源知识点的id\",\n \"correct\": \"准确的填空答案\",\n\
\ \"analysis\": \"解析答案的依据和相关知识点说明\"\n}\n\n- 严格按照以上格式输出\n\n### 输出{{#1757517722090.essay_count#}}道问答题\n\
1. 问题应具体明确,限定回答范围\n2. 答案需条理清晰,突出核心要点\n3. 解析可补充扩展说明或评分要点\n4. 避免过于宽泛或需要主观发挥的问题\n\
5. 其余要求同单选题\n\n### 输出结构:\n{\n \"num\": \"题号\",\n \"type\": \"essay\"\
,\n \"topic\": {\n \"title\": \"需要详细回答的问题描述\"\n },\n \"\
knowledge_point_id\": \"出题来源知识点的id\",\n \"correct\": \"完整准确的参考答案(分点或连贯表述)\"\
,\n \"analysis\": \"对答案的补充说明、评分要点或相关知识点扩展\"\n}\n\n## 特殊要求\n1. 题目难度:{{#1757517722090.difficulty_level#}}级5\
\ 级为最难)\n2. 避免使用模棱两可的表述\n3. 选项内容要互斥,不能有重叠\n4. 每个选项长度尽量均衡\n5. 正确答案A、B、C、D分布要合理避免规律性\n\
6. 正确答案必须使用其中一个选项中的全部原文,严禁修改\n7. knowledge_point_id 必须是唯一的,即每道题的知识点来源只允许填一个\
\ id。\n\n请按以上要求生成题目确保每道题目质量。"
- id: 9cb9ef44-bbfc-464d-9634-8873babcb6e4
role: user
text: '# 请针对岗位特征、待出题的知识点内容进行出题。
## 岗位信息:
{{#1766636474539.text#}}
---
## 知识点:
{{#1766636566272.text#}}'
selected: false
structured_output_enabled: false
title: 第一轮出题
type: llm
vision:
enabled: false
height: 88
id: '1759336189971'
position:
x: 2233.770517088806
y: 854.8259046963252
positionAbsolute:
x: 2233.770517088806
y: 854.8259046963252
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
code: "from typing import Dict\n\n\ndef main(\n single_choice_count: float,\n\
\ multiple_choice_count: float,\n true_false_count: float,\n fill_blank_count:\
\ float,\n essay_count: float,\n) -> Dict[str, str]:\n total = (\n\
\ single_choice_count\n + multiple_choice_count\n +\
\ true_false_count\n + fill_blank_count\n + essay_count\n\
\ )\n # 将总和转换为字符串类型\n return {\n \"result\": str(total),\n\
\ }\n"
code_language: python3
outputs:
result:
children: null
type: string
selected: false
title: 计算总题量
type: code
variables:
- value_selector:
- '1757517722090'
- single_choice_count
value_type: number
variable: single_choice_count
- value_selector:
- '1757517722090'
- multiple_choice_count
value_type: number
variable: multiple_choice_count
- value_selector:
- '1757517722090'
- true_false_count
value_type: number
variable: true_false_count
- value_selector:
- '1757517722090'
- fill_blank_count
value_type: number
variable: fill_blank_count
- value_selector:
- '1757517722090'
- essay_count
value_type: number
variable: essay_count
height: 52
id: '1759336370957'
position:
x: 1120.8286797224275
y: 773.2970549304636
positionAbsolute:
x: 1120.8286797224275
y: 773.2970549304636
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
response_format: json_object
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: df690399-5bed-4567-9b1d-5d31584d65e8
role: system
text: "## 角色\n你是一位经验丰富的考试出题专家能够依据用户提供的错题记录重新为用户出题。你会为每道错题重新出一题你会以专业、严谨且清晰的方式出题。\n\
\n## 输出单选题\n1、每道题目只能有 1 个正确答案。\n2、干扰项要具有合理性和迷惑性且所有选项必须与主题相关。\n3、答案解析要简明扼要说明选择理由。\n\
4、为每道题记录出题来源的知识点 id。\n5、请以 JSON 格式输出。\n6、为每道题输出一个序号。\n\n### 输出结构:\n{\n\
\ \"num\": \"题号\",\n \"type\": \"single_choice\",\n \"topic\"\
: {\n \"title\": \"清晰完整的题目描述\",\n \"options\": {\n \
\ \"opt1\": \"A符合语境的选项\",\n \"opt2\": \"B符合语境的选项\"\
,\n \"opt3\": \"C符合语境的选项\",\n \"opt4\": \"D符合语境的选项\"\
\n }\n },\n \"knowledge_point_id\": \"出题来源知识点的id\",\n \
\ \"correct\": \"其中一个选项的全部原文\",\n \"analysis\": \"准确的答案解析,包含选择原因和知识点说明\"\
\n}\n\n- 严格按照以上格式输出\n\n\n## 特殊要求\n1. 题目难度:{{#1757517722090.difficulty_level#}}级5\
\ 级为最难)\n2. 避免使用模棱两可的表述\n3. 选项内容要互斥,不能有重叠\n4. 每个选项长度尽量均衡\n5. 正确答案A、B、C、D分布要合理避免规律性\n\
6. 正确答案必须使用其中一个选项中的全部原文,严禁修改\n7. knowledge_point_id 必须是唯一的,即每道题的知识点来源只允许填一个\
\ id。\n\n请按以上要求生成题目确保每道题目质量。"
- id: 9cb9ef44-bbfc-464d-9634-8873babcb6e4
role: user
text: '## 错题记录:
{{#1757517722090.mistake_records#}}'
selected: false
structured_output_enabled: false
title: 错题重出
type: llm
vision:
enabled: false
height: 88
id: '17593434940720'
position:
x: 1542.474476799452
y: 294.89553593472453
positionAbsolute:
x: 1542.474476799452
y: 294.89553593472453
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: false
title: 恩喜-00-查询岗位
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT id, name, description, skills, level FROM positions WHERE
id = 1 AND is_deleted = FALSE
type: tool
height: 52
id: '1766636474539'
position:
x: 680.6972117920154
y: 459.1566958608885
positionAbsolute:
x: 680.6972117920154
y: 459.1566958608885
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: false
title: 恩喜-00-查询知识点
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT kp.id, kp.name, kp.description, kp.topic_relation FROM knowledge_points
kp INNER JOIN course_materials cm ON kp.material_id = cm.id WHERE kp.course_id
= {{#1757517722090.course_id#}} AND kp.is_deleted = FALSE AND cm.is_deleted
= FALSE ORDER BY RAND() LIMIT {{#1759336370957.result#}}
type: tool
height: 52
id: '1766636566272'
position:
x: 1751.0251613776625
y: 1090.0135783943633
positionAbsolute:
x: 1751.0251613776625
y: 1090.0135783943633
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 208.8157315753573
y: 57.80270447312665
zoom: 0.3556496204015805
rag_pipeline_variables: []

View File

@@ -0,0 +1,290 @@
app:
description: 要陪练的知识点读取
icon: 🤖
icon_background: '#FFEAD5'
mode: workflow
name: 恩喜-03-陪练知识准备-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1759345165645-source-1759259743998-target
source: '1759345165645'
sourceHandle: source
target: '1759259743998'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1759259735113-source-1766637070902-target
source: '1759259735113'
sourceHandle: source
target: '1766637070902'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: llm
id: 1766637070902-source-1759345165645-target
source: '1766637070902'
sourceHandle: source
target: '1759345165645'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: course_id
max_length: 9000
options: []
placeholder: ''
required: true
type: paragraph
variable: course_id
height: 109
id: '1759259735113'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
outputs:
- value_selector:
- '1759345165645'
- text
value_type: string
variable: result
selected: false
title: 结束
type: end
height: 88
id: '1759259743998'
position:
x: 1894
y: 309
positionAbsolute:
x: 1894
y: 309
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: c5d3c09c-d33c-430a-a8f3-663627411364
role: system
text: '你是一个训练场景研究专家,能将用户提交的知识点,转变为一个模拟陪练的场景,并严格按照以下格式输出。
输出标准:
{
"scene": {
"name": "轻医美产品咨询陪练",
"description": "模拟客户咨询轻医美产品的场景",
"background": "客户对脸部抗衰项目感兴趣。",
"ai_role": "AI扮演一位30岁女性客户",
"objectives": ["了解客户需求", "介绍产品优势", "处理价格异议"],
"keywords": ["抗衰", "玻尿酸", "价格"],
"type": "product-intro",
"difficulty": "intermediate"
}
}'
- id: 2da57109-d891-46a6-8094-6f6ff63f8e5b
role: user
text: '{{#1766637070902.text#}}'
selected: false
title: LLM
type: llm
vision:
enabled: false
height: 88
id: '1759345165645'
position:
x: 1487
y: 266
positionAbsolute:
x: 1487
y: 266
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
retry_config:
max_retries: 3
retry_enabled: true
retry_interval: 1000
selected: false
title: 恩喜-00-SQL 执行器-考陪练专用
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT kp.name, kp.description FROM knowledge_points kp INNER JOIN
course_materials cm ON kp.material_id = cm.id WHERE kp.course_id = {{#1759259735113.course_id#}}
AND kp.is_deleted = 0 AND cm.is_deleted = 0 ORDER BY kp.id;
type: tool
height: 81
id: '1766637070902'
position:
x: 786.8609430099932
y: 494.8734381122215
positionAbsolute:
x: 786.8609430099932
y: 494.8734381122215
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 203.70985243053667
y: 193.70165441393362
zoom: 0.4438204415451904
rag_pipeline_variables: []

View File

@@ -0,0 +1,273 @@
app:
description: 考陪练系统专用
icon: 🤖
icon_background: '#FFEAD5'
mode: advanced-chat
name: 恩喜-04-与课程对话-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
sourceType: llm
targetType: answer
id: llm-answer
source: llm
sourceHandle: source
target: answer
targetHandle: target
type: custom
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1760457791548-source-1766637272902-target
source: '1760457791548'
sourceHandle: source
target: '1766637272902'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: llm
id: 1766637272902-source-llm-target
source: '1766637272902'
sourceHandle: source
target: llm
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: course_id
max_length: 256
options: []
placeholder: ''
required: true
type: text-input
variable: course_id
height: 109
id: '1760457791548'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
memory:
query_prompt_template: '{{#sys.query#}}'
role_prefix:
assistant: ''
user: ''
window:
enabled: true
size: 10
model:
completion_params:
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: b5d31fea-e978-4229-81ed-ac3fe42f2f18
role: system
text: '你是知识拆解专家,精通以下知识库(课程)内容。请根据用户的问题,从知识库中找到最相关的信息,进行深入分析后,用简洁清晰的语言回答用户。为用户提供与课程对话的服务。
回答要求:
1. 直接针对问题核心,避免冗长铺垫
2. 使用通俗易懂的语言,必要时举例说明
3. 突出关键要点,帮助用户快速理解
4. 如果知识库中没有相关内容,请如实告知
知识库:
{{#1766637272902.text#}}'
selected: false
title: LLM
type: llm
vision:
enabled: false
height: 88
id: llm
position:
x: 980
y: 282
positionAbsolute:
x: 980
y: 282
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
answer: '{{#llm.text#}}'
selected: false
title: 直接回复
type: answer
variables: []
height: 103
id: answer
position:
x: 1280
y: 282
positionAbsolute:
x: 1280
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: false
title: 恩喜-00-SQL 执行器-考陪练专用
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT kp.name, kp.description FROM knowledge_points kp INNER JOIN
course_materials cm ON kp.material_id = cm.id WHERE kp.course_id = {{#1760457791548.course_id#}}
AND kp.is_deleted = 0 AND cm.is_deleted = 0 ORDER BY kp.id;
type: tool
height: 52
id: '1766637272902'
position:
x: 573.1013773769109
y: 452.5465761475262
positionAbsolute:
x: 573.1013773769109
y: 452.5465761475262
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 264.91206019696983
y: 183.58250340914594
zoom: 0.523860819025226
rag_pipeline_variables: []

View File

@@ -0,0 +1,380 @@
app:
description: 智能工牌能力分析与课程推荐
icon: 🤖
icon_background: '#FFEAD5'
mode: workflow
name: 恩喜-05-智能工牌能力分析与课程推荐-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_batch_limit: 10
image_file_size_limit: 10
single_chunk_attachment_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1759345165645-source-1759259743998-target
source: '1759345165645'
sourceHandle: source
target: '1759259743998'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: tool
id: 1759259735113-source-1766637417515-target
source: '1759259735113'
sourceHandle: source
target: '1766637417515'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: tool
targetType: tool
id: 1766637417515-source-1766637451330-target
source: '1766637417515'
sourceHandle: source
target: '1766637451330'
targetHandle: target
type: custom
zIndex: 0
- data:
isInLoop: false
sourceType: tool
targetType: llm
id: 1766637451330-source-1759345165645-target
source: '1766637451330'
sourceHandle: source
target: '1759345165645'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: dialogue_history
max_length: 90000
options: []
placeholder: ''
required: true
type: paragraph
variable: dialogue_history
- default: ''
hint: ''
label: user_id
max_length: 48
options: []
placeholder: ''
required: true
type: text-input
variable: user_id
height: 135
id: '1759259735113'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
outputs:
- value_selector:
- '1759345165645'
- text
value_type: string
variable: result
selected: false
title: 结束
type: end
height: 88
id: '1759259743998'
position:
x: 1813.2223142363105
y: 283.53180246801287
positionAbsolute:
x: 1813.2223142363105
y: 283.53180246801287
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: c5d3c09c-d33c-430a-a8f3-663627411364
role: system
text: "你是话术分析专家,用户是一家轻医美连锁品牌的员工,用户提交的是用户自己与顾客的对话记录,你做分析与评分。并严格按照以下格式输出。并根据课程列表,为该用户提供选课建议。\n\
\n输出标准\n{\n \"analysis\": {\n \"total_score\": 82,\n \"ability_dimensions\"\
: [\n {\n \"name\": \"专业知识\",\n \"score\": 88,\n \
\ \"feedback\": \"产品知识扎实,能准确回答客户问题。建议:继续深化对新产品的了解。\"\n },\n\
\ {\n \"name\": \"沟通技巧\",\n \"score\": 92,\n \
\ \"feedback\": \"语言表达清晰流畅,善于倾听客户需求。建议:可以多使用开放式问题引导。\"\n },\n \
\ {\n \"name\": \"操作技能\",\n \"score\": 85,\n \"\
feedback\": \"基本操作熟练,流程规范。建议:提升复杂场景的应对速度。\"\n },\n {\n \
\ \"name\": \"客户服务\",\n \"score\": 90,\n \"feedback\"\
: \"服务态度优秀,客户体验良好。建议:进一步提升个性化服务能力。\"\n },\n {\n \"name\"\
: \"安全意识\",\n \"score\": 79,\n \"feedback\": \"基本安全规范掌握,但在细节提醒上还可加强。\"\
\n },\n {\n \"name\": \"应变能力\",\n \"score\": 76,\n\
\ \"feedback\": \"面对突发情况反应较快,但处理方式可以更灵活多样。\"\n }\n ],\n\
\ \"course_recommendations\": [\n {\n \"course_id\": 5,\n\
\ \"course_name\": \"应变能力提升训练营\",\n \"recommendation_reason\"\
: \"该课程专注于提升应变能力包含大量实战案例分析和模拟演练针对您当前的薄弱环节应变能力76分设计。通过学习可提升15分左右。\"\
,\n \"priority\": \"high\",\n \"match_score\": 95\n \
\ },\n {\n \"course_id\": 3,\n \"course_name\": \"\
安全规范与操作标准\",\n \"recommendation_reason\": \"系统讲解安全规范和操作标准通过案例教学帮助建立安全意识。当前您的安全意识得分为79分通过本课程学习预计可提升12分。\"\
,\n \"priority\": \"high\",\n \"match_score\": 88\n \
\ },\n {\n \"course_id\": 7,\n \"course_name\": \"\
高级销售技巧\",\n \"recommendation_reason\": \"进阶课程帮助您将已有的沟通优势92分转化为更高级的销售技能进一步巩固客户服务能力90分。\"\
,\n \"priority\": \"medium\",\n \"match_score\": 82\n \
\ }\n ]\n }\n}"
- id: 2da57109-d891-46a6-8094-6f6ff63f8e5b
role: user
text: '对话记录:{{#1759259735113.dialogue_history#}}
---
用户的信息和岗位:{{#1766637451330.text#}}
---
所有可选课程:{{#1766637451330.text#}}'
selected: false
title: LLM
type: llm
vision:
enabled: false
height: 88
id: '1759345165645'
position:
x: 1363.5028016995486
y: 288.04877731559196
positionAbsolute:
x: 1363.5028016995486
y: 288.04877731559196
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: true
title: 恩喜-00-获取用户信息
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT p.id as position_id, p.name as position_name, p.code, p.description,
p.skills, p.level, p.status FROM positions p INNER JOIN position_members
pm ON p.id = pm.position_id WHERE pm.user_id = {{#1759259735113.user_id#}}
AND pm.is_deleted = 0 AND p.is_deleted = 0
type: tool
height: 52
id: '1766637417515'
position:
x: 587
y: 448
positionAbsolute:
x: 587
y: 448
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
is_team_authorization: true
paramSchemas:
- auto_generate: null
default: null
form: llm
human_description:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
label:
en_US: SQL 语句
ja_JP: SQL 语句
pt_BR: SQL 语句
zh_Hans: SQL 语句
llm_description: ''
max: null
min: null
name: sql
options: []
placeholder:
en_US: ''
ja_JP: ''
pt_BR: ''
zh_Hans: ''
precision: null
required: true
scope: null
template: null
type: string
params:
sql: ''
plugin_id: null
plugin_unique_identifier: null
provider_icon:
background: '#FFEAD5'
content: 🤖
provider_id: 2e7e915c-606c-4230-b4bd-ff95efb72f39
provider_name: 恩喜-00-SQL 执行器-考陪练专用
provider_type: workflow
selected: false
title: 恩喜-00-获取所有课程
tool_configurations: {}
tool_description: 考陪练系统专用的 sql 执行器
tool_label: 恩喜-00-SQL 执行器-考陪练专用
tool_name: SQL_executor_enxi
tool_node_version: '2'
tool_parameters:
sql:
type: mixed
value: SELECT id, name, description, category, tags, difficulty_level,
duration_hours FROM courses WHERE status = 'published' AND is_deleted
= FALSE ORDER BY sort_order
type: tool
height: 52
id: '1766637451330'
position:
x: 889
y: 448
positionAbsolute:
x: 889
y: 448
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: -85.25185611291681
y: 136.04491275815266
zoom: 0.488825051752638
rag_pipeline_variables: []

View File

@@ -0,0 +1,214 @@
app:
description: 判断填空题与问答题是否回答正确
icon: 🤖
icon_background: '#FFEAD5'
mode: workflow
name: 通用-答案判断器-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 1759259735113-source-1759345165645-target
source: '1759259735113'
sourceHandle: source
target: '1759345165645'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1759345165645-source-1759259743998-target
source: '1759345165645'
sourceHandle: source
target: '1759259743998'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: question
max_length: 4800
options: []
placeholder: ''
required: true
type: paragraph
variable: question
- default: ''
hint: ''
label: correct_answer
max_length: 9000
options: []
placeholder: ''
required: true
type: paragraph
variable: correct_answer
- default: ''
hint: ''
label: user_answer
max_length: 9000
options: []
placeholder: ''
required: true
type: paragraph
variable: user_answer
- default: ''
hint: ''
label: analysis
max_length: 9000
options: []
placeholder: ''
required: true
type: paragraph
variable: analysis
height: 166
id: '1759259735113'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
outputs:
- value_selector:
- '1759345165645'
- text
value_type: string
variable: result
selected: false
title: 结束
type: end
height: 88
id: '1759259743998'
position:
x: 994
y: 309
positionAbsolute:
x: 994
y: 309
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: c5d3c09c-d33c-430a-a8f3-663627411364
role: system
text: '你是一个答案判断器,根据用户提交的答案,比对题目、答案、解析。给出正确或错误的判断。
- 注意:仅输出“正确”或“错误”,无需更多字符和说明。'
- id: 2da57109-d891-46a6-8094-6f6ff63f8e5b
role: user
text: '题目:{{#1759259735113.question#}}。
正确答案:{{#1759259735113.correct_answer#}}。
解析:{{#1759259735113.analysis#}}。
考生的回答:{{#1759259735113.user_answer#}}。'
selected: true
title: LLM
type: llm
vision:
enabled: false
height: 88
id: '1759345165645'
position:
x: 587
y: 266
positionAbsolute:
x: 587
y: 266
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 189.67940233231604
y: 148.41666226499444
zoom: 0.7229018098572999
rag_pipeline_variables: []

View File

@@ -0,0 +1,202 @@
app:
description: 考陪练的陪练后分析并给出报告
icon: 🤖
icon_background: '#FFEAD5'
mode: workflow
name: 通用-陪练分析报告-考陪练
use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
type: marketplace
value:
marketplace_plugin_unique_identifier: langgenius/openrouter:0.0.22@99ef4cf4e08292c28806abaf24f295ed66e04e4b9e74385b487fd0767c7f56df
version: null
kind: app
version: 0.5.0
workflow:
conversation_variables: []
environment_variables: []
features:
file_upload:
allowed_file_extensions:
- .JPG
- .JPEG
- .PNG
- .GIF
- .WEBP
- .SVG
allowed_file_types:
- image
allowed_file_upload_methods:
- local_file
- remote_url
enabled: false
fileUploadConfig:
audio_file_size_limit: 50
batch_count_limit: 5
file_size_limit: 15
image_file_size_limit: 10
video_file_size_limit: 100
workflow_file_upload_limit: 10
image:
enabled: false
number_limits: 3
transfer_methods:
- local_file
- remote_url
number_limits: 3
opening_statement: ''
retriever_resource:
enabled: true
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
enabled: false
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
isInLoop: false
sourceType: start
targetType: llm
id: 1759259735113-source-1759345165645-target
source: '1759259735113'
sourceHandle: source
target: '1759345165645'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
isInLoop: false
sourceType: llm
targetType: end
id: 1759345165645-source-1759259743998-target
source: '1759345165645'
sourceHandle: source
target: '1759259743998'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
selected: false
title: 开始
type: start
variables:
- default: ''
hint: ''
label: dialogue_history
max_length: 90000
options: []
placeholder: ''
required: true
type: paragraph
variable: dialogue_history
height: 88
id: '1759259735113'
position:
x: 80
y: 282
positionAbsolute:
x: 80
y: 282
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
outputs:
- value_selector:
- '1759345165645'
- text
value_type: string
variable: result
selected: true
title: 结束
type: end
height: 88
id: '1759259743998'
position:
x: 1037.0765156072616
y: 266
positionAbsolute:
x: 1037.0765156072616
y: 266
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 242
- data:
context:
enabled: false
variable_selector: []
model:
completion_params:
temperature: 0.7
mode: chat
name: google/gemini-2.5-flash
provider: langgenius/openrouter/openrouter
prompt_template:
- id: c5d3c09c-d33c-430a-a8f3-663627411364
role: system
text: "你是话术分析专家,用户是一家轻医美连锁品牌的员工,用户提交的是用户自己与顾客的对话记录,你做分析与评分。并严格按照以下格式输出。\n\
\n输出标准\n{\n \"analysis\": {\n \"total_score\": 88,\n \"score_breakdown\"\
: [\n {\"name\": \"开场技巧\", \"score\": 92, \"description\": \"开场自然,快速建立信任\"\
},\n {\"name\": \"需求挖掘\", \"score\": 90, \"description\": \"能够有效识别客户需求\"\
},\n {\"name\": \"产品介绍\", \"score\": 88, \"description\": \"产品介绍清晰,重点突出\"\
},\n {\"name\": \"异议处理\", \"score\": 85, \"description\": \"处理客户异议还需加强\"\
},\n {\"name\": \"成交技巧\", \"score\": 86, \"description\": \"成交话术运用良好\"\
}\n ],\n \"ability_dimensions\": [\n {\"name\": \"沟通表达\", \"\
score\": 90, \"feedback\": \"语言流畅,表达清晰,语调富有亲和力\"},\n {\"name\": \"\
倾听理解\", \"score\": 92, \"feedback\": \"能够准确理解客户意图,给予恰当回应\"},\n {\"\
name\": \"情绪控制\", \"score\": 88, \"feedback\": \"整体情绪稳定,面对异议时保持专业\"},\n\
\ {\"name\": \"专业知识\", \"score\": 93, \"feedback\": \"对医美项目知识掌握扎实\"\
},\n {\"name\": \"销售技巧\", \"score\": 87, \"feedback\": \"销售流程把控良好\"\
},\n {\"name\": \"应变能力\", \"score\": 85, \"feedback\": \"面对突发问题能够快速反应\"\
}\n ],\n \"dialogue_annotations\": [\n {\"sequence\": 1, \"\
tags\": [\"亮点话术\"], \"comment\": \"开场专业,身份介绍清晰\"},\n {\"sequence\"\
: 3, \"tags\": [\"金牌话术\"], \"comment\": \"巧妙引导,从客户角度出发\"},\n {\"\
sequence\": 5, \"tags\": [\"亮点话术\"], \"comment\": \"类比生动,让客户容易理解\"},\n\
\ {\"sequence\": 7, \"tags\": [\"金牌话术\"], \"comment\": \"专业解答,打消客户疑虑\"\
}\n ],\n \"suggestions\": [\n {\"title\": \"控制语速\", \"content\"\
: \"您的语速偏快,建议适当放慢,给客户更多思考时间\", \"example\": \"说完产品优势后停顿2-3秒观察客户反应\"\
},\n {\"title\": \"多用开放式问题\", \"content\": \"增加开放式问题的使用,更深入了解客户需求\"\
, \"example\": \"您对未来的保障有什么期望?而不是您需要保险吗?\"},\n {\"title\": \"强化成交信号识别\"\
, \"content\": \"客户已经表现出兴趣时,要及时推进成交\", \"example\": \"当客户问费用多少时,这是购买信号,应该立即报价并促成\"\
}\n ]\n }\n}"
- id: 2da57109-d891-46a6-8094-6f6ff63f8e5b
role: user
text: '{{#1759259735113.dialogue_history#}}'
selected: false
title: LLM
type: llm
vision:
enabled: false
height: 88
id: '1759345165645'
position:
x: 587
y: 266
positionAbsolute:
x: 587
y: 266
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 242
viewport:
x: 49.06021215084729
y: -2.7868017986568248
zoom: 0.5755553326202135
rag_pipeline_variables: []