生成的问题和过程还不是很详细,仅作抛砖引玉,最终结果以json 输出则可以通过api调用集成到应用中
效果如下
DSL如下
app:
description: 分别要求用户输入简历、要面试的公司和招聘的岗位信息,系统会分析简历和岗位信息计算匹配程度,然后生成面试的问题,用户输入完答案后AI给出评分和点评
icon: 🤖
icon_background: '#FFEAD5'
mode: advanced-chat
name: 基于流程的模拟面试
use_icon_as_answer_icon: false
kind: app
version: 0.1.4
workflow:
conversation_variables:
- description: 岗位匹配得分
id: a48dc04c-d7b8-46d9-81e1-270fe8538ae3
name: score
selector:
- conversation
- score
value: 0
value_type: number
- description: 问题的回答
id: 35ef5880-8f55-46d2-9f0f-6525c4fc115c
name: answers
selector:
- conversation
- answers
value:
- {}
value_type: array[object]
- description: 当前问题索引
id: 2128a6e0-bca9-4370-99b5-784281e6f20d
name: qindex
selector:
- conversation
- qindex
value: 0
value_type: number
- description: AI生成的问题
id: 79d662a8-848e-4ff2-ba37-28d540e1bb6f
name: questions
selector:
- conversation
- questions
value: []
value_type: array[object]
- description: 工作岗位
id: e5b1c8e7-11c6-43a8-b5c7-197857db0838
name: job
selector:
- conversation
- job
value: ''
value_type: string
- description: 公司
id: 12f8df48-d0fd-458b-8ba1-3a2d2fa94d3b
name: company
selector:
- conversation
- company
value: ''
value_type: string
- description: '简历
'
id: d17793e5-fc23-46ff-b101-5d4d612fb20e
name: resume
selector:
- conversation
- resume
value: ''
value_type: string
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: 我是AI模拟面试助手,输入你的简历我们来开始面试吧
retriever_resource:
enabled: false
sensitive_word_avoidance:
enabled: false
speech_to_text:
enabled: false
suggested_questions: []
suggested_questions_after_answer:
enabled: false
text_to_speech:
autoPlay: enabled
enabled: true
language: ''
voice: ''
graph:
edges:
- data:
isInIteration: false
sourceType: start
targetType: if-else
id: 1733921794336-source-1733922733310-target
selected: false
source: '1733921794336'
sourceHandle: source
target: '1733922733310'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: answer
id: 1733922893299-source-answer-target
selected: false
source: '1733922893299'
sourceHandle: source
target: answer
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: if-else
id: 1733923555480-source-1733923672344-target
selected: false
source: '1733923555480'
sourceHandle: source
target: '1733923672344'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: assigner
id: 1733923672344-true-1733923790108-target
selected: false
source: '1733923672344'
sourceHandle: 'true'
target: '1733923790108'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: answer
id: 1733923790108-source-1733923838114-target
selected: false
source: '1733923790108'
sourceHandle: source
target: '1733923838114'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: answer
id: 1733923672344-false-1733923863697-target
selected: false
source: '1733923672344'
sourceHandle: 'false'
target: '1733923863697'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: if-else
id: 17339239561900-source-17339240403490-target
selected: false
source: '17339239561900'
sourceHandle: source
target: '17339240403490'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: assigner
id: 17339240403490-true-1733922893299-target
selected: false
source: '17339240403490'
sourceHandle: 'true'
target: '1733922893299'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: answer
id: 17339240403490-false-1733924076258-target
selected: false
source: '17339240403490'
sourceHandle: 'false'
target: '1733924076258'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: if-else
id: 17339246619280-source-17339240382900-target
selected: false
source: '17339246619280'
sourceHandle: source
target: '17339240382900'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: assigner
id: 17339240382900-true-1733924735950-target
selected: false
source: '17339240382900'
sourceHandle: 'true'
target: '1733924735950'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: answer
id: 17339240382900-false-1733924792026-target
selected: false
source: '17339240382900'
sourceHandle: 'false'
target: '1733924792026'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: if-else
id: 1733924735950-source-1733924837700-target
selected: false
source: '1733924735950'
sourceHandle: source
target: '1733924837700'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: parameter-extractor
id: 1733922733310-true-17339239561900-target
selected: false
source: '1733922733310'
sourceHandle: 'true'
target: '17339239561900'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: parameter-extractor
id: 1733922733310-789b4b42-7dcb-4b62-939d-06bba9a39925-1733923555480-target
selected: false
source: '1733922733310'
sourceHandle: 789b4b42-7dcb-4b62-939d-06bba9a39925
target: '1733923555480'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: parameter-extractor
id: 1733922733310-9670e08e-58f6-41c7-9452-b6470074e41f-17339246619280-target
selected: false
source: '1733922733310'
sourceHandle: 9670e08e-58f6-41c7-9452-b6470074e41f
target: '17339246619280'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: code
id: 1733924837700-true-1733968153274-target
selected: false
source: '1733924837700'
sourceHandle: 'true'
target: '1733968153274'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: code
targetType: parameter-extractor
id: 1733968153274-source-1733968482694-target
source: '1733968153274'
sourceHandle: source
target: '1733968482694'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: parameter-extractor
targetType: assigner
id: 1733968482694-source-1733968858346-target
source: '1733968482694'
sourceHandle: source
target: '1733968858346'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: code
id: 1733968858346-source-1733969022861-target
source: '1733968858346'
sourceHandle: source
target: '1733969022861'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: code
targetType: answer
id: 1733969022861-source-1733925485546-target
source: '1733969022861'
sourceHandle: source
target: '1733925485546'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: code
id: 1733922733310-8ca7bb7b-866e-40ee-bc2b-77d1f1ccfbce-1733968153274-target
source: '1733922733310'
sourceHandle: 8ca7bb7b-866e-40ee-bc2b-77d1f1ccfbce
target: '1733968153274'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: code
id: 1733922733310-false-1733974589629-target
source: '1733922733310'
sourceHandle: 'false'
target: '1733974589629'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: code
targetType: assigner
id: 1733974589629-source-1733974949782-target
source: '1733974589629'
sourceHandle: source
target: '1733974949782'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: assigner
targetType: code
id: 1733974949782-source-1733993557476-target
source: '1733974949782'
sourceHandle: source
target: '1733993557476'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: code
targetType: if-else
id: 1733993557476-source-1733993854327-target
source: '1733993557476'
sourceHandle: source
target: '1733993854327'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: code
id: 1733993854327-false-1733969022861-target
source: '1733993854327'
sourceHandle: 'false'
target: '1733969022861'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: if-else
targetType: answer
id: 1733993854327-true-1733993943204-target
source: '1733993854327'
sourceHandle: 'true'
target: '1733993943204'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: answer
targetType: code
id: 1733993943204-source-1733994577709-target
source: '1733993943204'
sourceHandle: source
target: '1733994577709'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: code
targetType: llm
id: 1733994577709-source-1733994965940-target
source: '1733994577709'
sourceHandle: source
target: '1733994965940'
targetHandle: target
type: custom
zIndex: 0
- data:
isInIteration: false
sourceType: llm
targetType: answer
id: 1733994965940-source-1733994929597-target
source: '1733994965940'
sourceHandle: source
target: '1733994929597'
targetHandle: target
type: custom
zIndex: 0
nodes:
- data:
desc: ''
selected: false
title: 开始
type: start
variables: []
height: 54
id: '1733921794336'
position:
x: -188
y: 164
positionAbsolute:
x: -188
y: 164
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 收到你的简历了,下面请输入你要面试的公司信息
desc: ''
selected: false
title: 直接回复
type: answer
variables: []
height: 116
id: answer
position:
x: 1275.3641472578354
y: -80.4362040587874
positionAbsolute:
x: 1275.3641472578354
y: -80.4362040587874
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: empty
id: ece6ce8d-ed56-4936-90be-143c70090944
value: ''
varType: string
variable_selector:
- conversation
- resume
id: 'true'
logical_operator: and
- case_id: 789b4b42-7dcb-4b62-939d-06bba9a39925
conditions:
- comparison_operator: empty
id: 42b88271-32bf-4bc4-a215-9b7b8066dd44
value: ''
varType: string
variable_selector:
- conversation
- company
id: 789b4b42-7dcb-4b62-939d-06bba9a39925
logical_operator: and
- case_id: 9670e08e-58f6-41c7-9452-b6470074e41f
conditions:
- comparison_operator: empty
id: 0ac58122-e38c-4588-a0a4-f7e25d2f8e34
value: ''
varType: string
variable_selector:
- conversation
- job
id: 9670e08e-58f6-41c7-9452-b6470074e41f
logical_operator: and
- case_id: 8ca7bb7b-866e-40ee-bc2b-77d1f1ccfbce
conditions:
- comparison_operator: empty
id: 9f3c73d4-896b-477d-9c4b-c04bd8607ab0
value: ''
varType: array[object]
variable_selector:
- conversation
- questions
id: 8ca7bb7b-866e-40ee-bc2b-77d1f1ccfbce
logical_operator: and
desc: 模拟面试需要输入简历、工作岗位、公司介绍;根据这些信息来生成面试过程的问题
selected: false
title: 给需要个参数赋值
type: if-else
height: 330
id: '1733922733310'
position:
x: -74
y: 320.6804920892271
positionAbsolute:
x: -74
y: 320.6804920892271
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
items:
- input_type: variable
operation: over-write
value:
- sys
- query
variable_selector:
- conversation
- resume
write_mode: over-write
selected: false
title: 变量赋值
type: assigner
version: '2'
height: 88
id: '1733922893299'
position:
x: 980.5715285962422
y: -80.4362040587874
positionAbsolute:
x: 980.5715285962422
y: -80.4362040587874
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
instruction: '```xml
<instructions>
你将接收一段文本作为输入。你的任务是判断这段文本是否包含公司信息。判断的逻辑基于公司信息通常包含的要素,例如公司名称、地址、联系方式、经营范围等。
请根据以下步骤进行操作:
1. 仔细分析输入文本的内容。
2. 判断文本是否包含公司信息的要素。
3. 如果文本包含公司信息,则返回一个JSON格式的结果,其中`code`为0,`msg`为"是公司信息"。
4. 如果文本不包含公司信息,则返回一个JSON格式的结果,其中`code`不为0,`msg`为解释为什么不是公司信息的原因。例如,可以是"缺少公司名称"、"缺少联系方式"、"内容不明确"等。
5. 输出结果必须是JSON格式,并且不包含任何XML标签。
请严格按照上述步骤进行操作,确保输出结果的准确性和一致性。
</instructions>
<example>
输入: 北京字节跳动科技有限公司,地址:北京市海淀区知春路,联系电话:1234567890,经营范围:软件开发
输出: {"code": 0, "msg": "是公司信息"}
</example>
<example>
输入: 我喜欢吃苹果
输出: {"code": 1, "msg": "缺少公司名称、地址、联系方式等信息"}
</example>
<example>
输入: 招聘销售经理,要求三年以上工作经验
输出: {"code": 2, "msg": "这看起来像招聘信息,而不是公司信息"}
</example>
<instructions>
请注意以下几点:
* 确保你的输出是有效的JSON格式。
* msg字段应该提供清晰的解释,说明为什么输入被判断为是或不是公司信息。
* 对于不包含公司信息的输入,`msg`字段应该尽可能具体地指出缺少哪些信息或存在哪些问题。
* 不要在输出中包含任何XML标签。'
model:
completion_params:
temperature: 0.7
mode: chat
name: qwen-turbo-1101
provider: tongyi
parameters:
- description: 识别结果
name: code
required: true
type: number
- description: 错误信息
name: msg
required: true
type: string
query:
- sys
- query
reasoning_mode: prompt
selected: false
title: 公司信息识别结果参数提取器
type: parameter-extractor
variables: []
vision:
configs:
detail: high
variable_selector:
- sys
- files
enabled: false
height: 98
id: '1733923555480'
position:
x: 294.00000000000034
y: 219.7613213740114
positionAbsolute:
x: 294.00000000000034
y: 219.7613213740114
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: '='
id: 2bade5bf-bbea-47f1-864b-e28b512d7983
value: '1'
varType: number
variable_selector:
- '1733923555480'
- __is_success
- comparison_operator: '='
id: 23b74502-9740-487f-a2c2-8f443ac479c2
value: '0'
varType: number
variable_selector:
- '1733923555480'
- code
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 判断公司信息识别结果
type: if-else
height: 152
id: '1733923672344'
position:
x: 579.0000000000007
y: 194.00000000000023
positionAbsolute:
x: 579.0000000000007
y: 194.00000000000023
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: 保存公司信息到会话变量
items:
- input_type: variable
operation: over-write
value:
- sys
- query
variable_selector:
- conversation
- company
write_mode: over-write
selected: false
title: 公司信息保存
type: assigner
version: '2'
height: 116
id: '1733923790108'
position:
x: 980.5715285962422
y: 168.20068851217985
positionAbsolute:
x: 980.5715285962422
y: 168.20068851217985
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 下面请输入要面试的岗位信息。
desc: ''
selected: false
title: 直接回复 2
type: answer
variables: []
height: 100
id: '1733923838114'
position:
x: 1275.3641472578354
y: 59.986291273055286
positionAbsolute:
x: 1275.3641472578354
y: 59.986291273055286
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 你的输入起来不像是公司信息,请重新输入
desc: ''
selected: false
title: 直接回复 3
type: answer
variables: []
height: 116
id: '1733923863697'
position:
x: 980.5715285962422
y: 311.46397159952403
positionAbsolute:
x: 980.5715285962422
y: 311.46397159952403
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
instruction: "```xml\n<prompt>\n<instructions>\n你将收到用户的输入文本。你的任务是判断该文本是否为简历信息。请严格按照以下步骤执行:\n\
\n1. 仔细阅读用户的输入文本。\n\n2. 检查输入文本中是否包含典型的简历信息。典型的简历信息包括以下几种类型:\n * 个人信息:姓名、联系方式(电话、邮箱、地址等)、出生日期、国籍等。\n\
\ 教育背景:学校名称、专业、学位、毕业时间等。\n 工作经历:公司名称、职位、工作时间、工作职责等。\n * 项目经验:项目名称、项目描述、担任角色、项目成果等。\n\
\ 技能:熟练掌握的技能、软件、工具等。\n 获奖情况:获得的奖项、荣誉等。\n * 自我评价:个人优势、职业目标等。\n\
\n3. 根据包含的简历信息类型数量进行判断:\n 如果输入文本中包含*多个**上述类型的简历信息(至少两类及以上),则判断为简历信息。\n\
\ 如果输入文本中只包含*少量**(一类或以下)或**不包含**上述类型的简历信息,则判断为非简历信息。\n 如果不包含*个人信息**则判断为非简历信息。\n\
\n4. 输出结果必须以 JSON 格式表示,例如:`{\"code\": 0, \"msg\": \"成功\"}`。其中,`code` 为\
\ 0 表示判断为简历信息,`code` 为 1 表示判断为非简历信息,`msg` 提供判断结果的简短描述。请确保输出中不包含任何 XML 标签。\n\
</instructions>\n<examples>\n<example>\n<input>\n张三,13800000000,zhangsan@email.com,北京市朝阳区,清华大学,计算机科学与技术,硕士,2020年毕业,微软,软件工程师,2020年至今,负责开发和维护公司核心产品\n\
</input>\n<output>\n{\"code\": 0, \"msg\": \"是简历信息\"}\n</output>\n</example>\n\
<example>\n<input>\n我喜欢打篮球,喜欢听音乐。\n</input>\n<output>\n{\"code\": 1, \"\
msg\": \"不是简历信息\"}\n</output>\n</example>\n<examples>\n"
model:
completion_params:
temperature: 0.7
mode: chat
name: qwen-turbo-1101
provider: tongyi
parameters:
- description: 识别结果
name: code
required: true
type: number
- description: 错误信息
name: msg
required: true
type: string
query:
- sys
- query
reasoning_mode: prompt
selected: true
title: 简历信息识别结果参数提取器 (1)
type: parameter-extractor
variables: []
vision:
configs:
detail: high
variable_selector:
- sys
- files
enabled: false
height: 98
id: '17339239561900'
position:
x: 294.00000000000034
y: 64.00000000000009
positionAbsolute:
x: 294.00000000000034
y: 64.00000000000009
selected: true
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: '='
id: 2bade5bf-bbea-47f1-864b-e28b512d7983
value: '1'
varType: number
variable_selector:
- '17339246619280'
- __is_success
- comparison_operator: '='
id: 23b74502-9740-487f-a2c2-8f443ac479c2
value: '0'
varType: number
variable_selector:
- '17339246619280'
- code
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 判断岗位信息识别结果
type: if-else
height: 152
id: '17339240382900'
position:
x: 579.0000000000007
y: 399.87100162130776
positionAbsolute:
x: 579.0000000000007
y: 399.87100162130776
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: '='
id: 2bade5bf-bbea-47f1-864b-e28b512d7983
value: '1'
varType: number
variable_selector:
- '17339239561900'
- __is_success
- comparison_operator: '='
id: 23b74502-9740-487f-a2c2-8f443ac479c2
value: '0'
varType: number
variable_selector:
- '17339239561900'
- code
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 判断简历信息识别结果
type: if-else
height: 152
id: '17339240403490'
position:
x: 579.0000000000007
y: 15.000000000000185
positionAbsolute:
x: 579.0000000000007
y: 15.000000000000185
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 输入的似乎不是简历,请重新输入吧
desc: ''
selected: false
title: 直接回复 4
type: answer
variables: []
height: 100
id: '1733924076258'
position:
x: 980.5715285962422
y: 46.56379594121259
positionAbsolute:
x: 980.5715285962422
y: 46.56379594121259
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
instruction: '```xml
<instructions>
你将收到一段文本,你的任务是判断这段文本是否描述了一个招聘岗位。请仔细分析文本内容,判断其中是否包含招聘岗位的关键信息,例如:职位名称、工作职责、任职要求、薪资待遇、公司名称、工作地点等。
请根据以下步骤进行判断:
1. 识别职位名称: 查找文本中是否明确提到了职位名称,例如“软件工程师”、“销售经理”、“市场专员”等。
2. 识别工作职责: 查找文本中是否描述了该岗位的具体工作内容和职责,例如“负责软件开发”、“负责客户关系维护”、“负责市场推广”等。
3. 识别任职要求: 查找文本中是否列出了该岗位的任职资格要求,例如学历、工作经验、技能要求等,例如“本科及以上学历”、“三年以上相关工作经验”、“熟练掌握Java编程语言”等。
4. 识别其他信息: 查找文本中是否包含其他与招聘相关的信息,例如薪资待遇、公司名称、工作地点、联系方式等。
如果文本中包含了以上多个关键信息,则可以判断该文本描述了一个招聘岗位。
最终输出结果必须是JSON格式,例如:`{code:0,msg:''是岗位信息''}` 或 {code:1,msg:''不是岗位信息''}。
code 为 0 表示是岗位信息,code 为 1 表示不是岗位信息。 msg 为对结果的简要说明。
请注意,输出结果中不得包含任何 XML 标签。
</instructions>
<example>
输入:诚聘高级Java工程师,5年以上工作经验,负责核心模块开发,薪资面议。
输出:{code:0,msg:''是岗位信息''}
</example>
<example>
输入:今天天气真好,适合出去玩。
输出:{code:1,msg:''不是岗位信息''}
</example>
<example>
输入:公司介绍:我们是一家致力于人工智能技术研发的创新型企业。
输出:{code:1,msg:''不是岗位信息''}
</example>
<example>
输入:招聘销售经理,负责区域市场开拓和销售团队管理,要求本科以上学历,三年以上销售经验,待遇优厚。
输出:{code:0,msg:''不是岗位信息''}'
model:
completion_params:
temperature: 0.7
mode: chat
name: qwen-turbo-1101
provider: tongyi
parameters:
- description: 识别结果
name: code
required: true
type: number
- description: 错误信息
name: msg
required: true
type: string
query:
- sys
- query
reasoning_mode: prompt
selected: false
title: 岗位信息识别结果参数提取器 (1)
type: parameter-extractor
variables: []
vision:
configs:
detail: high
variable_selector:
- sys
- files
enabled: false
height: 98
id: '17339246619280'
position:
x: 294.00000000000034
y: 420.63444624589755
positionAbsolute:
x: 294.00000000000034
y: 420.63444624589755
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
items:
- input_type: variable
operation: over-write
value:
- sys
- query
variable_selector:
- conversation
- job
write_mode: over-write
selected: false
title: 岗位信息保存
type: assigner
version: '2'
height: 88
id: '1733924735950'
position:
x: 980.5715285962422
y: 448.93091206720965
positionAbsolute:
x: 980.5715285962422
y: 448.93091206720965
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 这怎么看也不像一个正经的招聘岗位,要不你再重新输入吧!
desc: ''
selected: false
title: 直接回复 5
type: answer
variables: []
height: 116
id: '1733924792026'
position:
x: 980.5715285962422
y: 574.7620381283225
positionAbsolute:
x: 980.5715285962422
y: 574.7620381283225
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: not empty
id: e136a78c-cb2e-4c89-b152-e40888146ac5
value: ''
varType: string
variable_selector:
- conversation
- job
- comparison_operator: not empty
id: c3bf7414-bf6a-4aa1-9875-af437bda68ff
value: ''
varType: string
variable_selector:
- conversation
- company
- comparison_operator: not empty
id: d01d1d23-f4cf-4223-a48a-ecbff2a6da83
value: ''
varType: string
variable_selector:
- conversation
- resume
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 判断简历的匹配度以及生成面试问题
type: if-else
height: 178
id: '1733924837700'
position:
x: 1298.7434096956752
y: 219.7613213740114
positionAbsolute:
x: 1298.7434096956752
y: 219.7613213740114
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '请回答:{{#1733969022861.result#}}
'
desc: ''
selected: false
title: 直接回复 6
type: answer
variables: []
height: 103
id: '1733925485546'
position:
x: 2627.171252283218
y: 204.32550087618506
positionAbsolute:
x: 2627.171252283218
y: 204.32550087618506
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "def main(job: str, company: str, resume: str) -> dict:\n result\
\ = f\"\"\"\n##工作岗位: {job}\n=================\n招聘公司:{company}\n=================\n\
候选人简历:{resume}\n\"\"\"\n return {'result': result}\n"
code_language: python3
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: 代码执行
type: code
variables:
- value_selector:
- conversation
- job
variable: job
- value_selector:
- conversation
- company
variable: company
- value_selector:
- conversation
- resume
variable: resume
height: 54
id: '1733968153274'
position:
x: 1163.0670477440478
y: 815.0718560632378
positionAbsolute:
x: 1163.0670477440478
y: 815.0718560632378
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
instruction: "# Role\n你是一位能够根据用户输入并评估用户与特定岗位的匹配度,同时提出面试问题的专业助理。\n\n### Skill\
\ 1: 评估匹配度 生成面试问题\n- 根据用户提供的简历和特定岗位的要求,评估用户与岗位的匹配度,并给出评分。\n- 根据用户的简历和岗位要求,提出针对性的面试问题,帮助用户做好面试准备。\n\
- 面试问题应涵盖经验类问题、技能类问题和行为类问题。\n- 输出格式为json,例如:\n```json\n{\n \"code\": 0,\n\
\ \"msg\": \"处理成功\",\n \"data\": {\n \"score\": <匹配度评分>,\n \"questions\"\
: [\n {\n \"question\": \"<面试问题1>\",\n \"category\":\
\ \"经验类问题\"\n },\n {\n \"question\": \"<面试问题2>\",\n \
\ \"category\": \"技能类问题\"\n },\n {\n \"question\":\
\ \"<面试问题3>\",\n \"category\": \"行为类问题\"\n }\n ]\n }\n}\n\
```\n\n## Constraints\n- 所有输出必须使用json格式。\n- 提供的面试问题应与用户的简历和目标岗位高度相关。\n-\
\ 匹配度评分应基于用户的技能、经验和岗位要求的匹配程度。"
model:
completion_params:
temperature: 0.7
mode: chat
name: qwen-turbo-1101
provider: tongyi
parameters:
- description: 处理结果
name: code
required: true
type: number
- description: 处理结果信息
name: msg
required: true
type: string
- description: 匹配得分
name: score
required: true
type: number
- description: 问题列表
name: questions
required: true
type: array[object]
query:
- '1733968153274'
- result
reasoning_mode: prompt
selected: false
title: 参数提取器 4
type: parameter-extractor
variables: []
vision:
enabled: false
height: 98
id: '1733968482694'
position:
x: 1568.4921181894215
y: 442.01430783477167
positionAbsolute:
x: 1568.4921181894215
y: 442.01430783477167
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
items:
- input_type: variable
operation: over-write
value:
- '1733968482694'
- questions
variable_selector:
- conversation
- questions
write_mode: over-write
- input_type: variable
operation: over-write
value:
- '1733968482694'
- score
variable_selector:
- conversation
- score
write_mode: over-write
selected: false
title: 变量赋值 4
type: assigner
version: '2'
height: 116
id: '1733968858346'
position:
x: 1811.5122527506094
y: 219.7613213740114
positionAbsolute:
x: 1811.5122527506094
y: 219.7613213740114
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "function main(req) {\n let {list,qindex}=req;\n if (!Array.isArray(list))\
\ {\n return {result:'系统开小差了'};\n }\n if (qindex < 0 || qindex >= list.length)\
\ {\n return {result:'系统开小差了'};\n }\n console.log(list,qindex)\n return\
\ {result:list[qindex].question};\n}\n"
code_language: javascript
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: 获取问答
type: code
variables:
- value_selector:
- conversation
- questions
variable: list
- value_selector:
- conversation
- qindex
variable: qindex
height: 54
id: '1733969022861'
position:
x: 2440.3314057434277
y: 420.63444624589755
positionAbsolute:
x: 2440.3314057434277
y: 420.63444624589755
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "function main(req) {\n let {answer, list, index}=req\n const results\
\ = {\n question:list[index].question,\n category:list[index].category,\n\
\ answer:answer\n };\n return {result:results};\n}\n"
code_language: javascript
desc: ''
outputs:
result:
children: null
type: object
selected: false
title: 保存答案
type: code
variables:
- value_selector:
- sys
- query
variable: answer
- value_selector:
- conversation
- questions
variable: list
- value_selector:
- conversation
- qindex
variable: index
height: 54
id: '1733974589629'
position:
x: 1231.428549906518
y: 1004.8281427900146
positionAbsolute:
x: 1231.428549906518
y: 1004.8281427900146
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
desc: ''
items:
- input_type: variable
operation: append
value:
- '1733974589629'
- result
variable_selector:
- conversation
- answers
write_mode: over-write
- input_type: constant
operation: +=
value: 1
variable_selector:
- conversation
- qindex
write_mode: over-write
selected: false
title: 保存答案2
type: assigner
version: '2'
height: 116
id: '1733974949782'
position:
x: 1518.1512043681273
y: 886.6413394900064
positionAbsolute:
x: 1518.1512043681273
y: 886.6413394900064
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "\nfunction main({qindex, list}) {\n return {\n result: qindex>=list.length?1:0\n\
\ }\n}\n"
code_language: javascript
desc: ''
outputs:
result:
children: null
type: number
selected: false
title: 判断是否回答所有的问题了
type: code
variables:
- value_selector:
- conversation
- qindex
variable: qindex
- value_selector:
- conversation
- questions
variable: list
height: 54
id: '1733993557476'
position:
x: 1756.4911085746905
y: 798.7297786324035
positionAbsolute:
x: 1756.4911085746905
y: 798.7297786324035
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
cases:
- case_id: 'true'
conditions:
- comparison_operator: '='
id: 524119e8-bd13-437e-8a28-d6727425ddfb
value: '1'
varType: number
variable_selector:
- '1733993557476'
- result
id: 'true'
logical_operator: and
desc: ''
selected: false
title: 条件分支 6
type: if-else
height: 126
id: '1733993854327'
position:
x: 1862.9636714948497
y: 948.2313013623442
positionAbsolute:
x: 1862.9636714948497
y: 948.2313013623442
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: 面试结束,正在分析结果。
desc: ''
selected: false
title: 直接回复 7
type: answer
variables: []
height: 100
id: '1733993943204'
position:
x: 2440.3314057434277
y: 511.63444624589755
positionAbsolute:
x: 2440.3314057434277
y: 511.63444624589755
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
context:
enabled: false
variable_selector: []
desc: ''
model:
completion_params:
temperature: 0.7
mode: chat
name: qwen-turbo-1101
provider: tongyi
prompt_template:
- id: cf7df0a2-2bf7-4773-8a2b-c2c0b5a5d0c9
role: system
text: "```xml\n\n<instructions>\n\n你将扮演一个面试评估员的角色。用户会提供一份简历、公司信息、招聘岗位信息以及面试问题的答案。你的任务是根据这些信息,全面评估面试者的表现,并给出评分,最终结果用\
\ JSON 格式输出。请注意以下几点:\n\n\n\n1. 简历评估: 仔细阅读简历,评估面试者的教育背景、工作经验、技能和项目经历是否与招聘岗位的要求匹配。特别关注与岗位相关的技能和经验,并评估其真实性和深度。\n\
\n\n\n2. 公司和岗位匹配: 考虑公司文化、价值观和招聘岗位的具体要求,评估面试者是否适合该公司和该岗位。例如,某些岗位可能需要较强的团队合作能力,而另一些岗位则更注重独立工作能力。\n\
\n\n\n3. 面试答案评估: 仔细分析面试者对每个问题的回答,评估其逻辑性、清晰度、深度和完整性。同时,关注面试者的沟通能力、表达能力和解决问题的能力。\n\
\n\n\n4. 整体评估和评分: 综合考虑以上三个方面,对面试者的整体表现进行评估,并给出评分。评分范围为 0-100 分,分数越高表示面试表现越好。\n\
\n\n\n5. JSON 输出: 最终的评估结果必须以 JSON 格式输出,包含以下字段:\n\n * score:总分\
\ (0-100)\n\n * resume_evaluation:简历评估结果,简要说明简历的优缺点以及与岗位的匹配程度。\n\n\
\ company_match:公司匹配度评估结果,简要说明面试者与公司文化和价值观的匹配程度。\n\n interview_evaluation:面试答案评估结果,对每个问题的答案进行点评,并指出面试者的优势和不足。\n\
\n\n\n请确保你的输出不包含任何 XML 标签。\n\n</instructions>\n\n\n\n<example>\n\n <!--\
\ Example 1 -->\n\n <!-- Input: (简历、公司信息、招聘岗位信息、面试问题答案) Omitted for\
\ brevity -->\n\n <!-- Output: -->\n\n ```json\n\n {\n\n \"score\"\
: 85,\n\n \"resume_evaluation\": \"简历内容丰富,工作经验与岗位要求高度匹配,展现了良好的专业技能和项目经验。\"\
,\n\n \"company_match\": \"面试者展现了积极主动、团队合作的精神,与公司文化较为契合。\",\n\t\"interview_evaluation\"\
:[{\n\t\"question\":\"问题1\",\n\t\"category\":\"问题分类1\",\n\t\"answer\"\
:\"回答1\",\n\t\"evaluation\":\"用户回答的点评\"\n\t}]\n\t}\n\n"
- id: 0d14fba3-d16e-4c5d-8fad-041bab668c43
role: user
text: '{{#1733994577709.result#}}'
selected: false
title: 分析结果
type: llm
variables: []
vision:
enabled: false
height: 98
id: '1733994965940'
position:
x: 3047.635787936875
y: 387.8655283987931
positionAbsolute:
x: 3047.635787936875
y: 387.8655283987931
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
code: "\nfunction main({resume,company,job,answers}) {\n return {\n \
\ result: \"候选人简历:\" + resume+\"\\n 招聘公司:\"+company+\"\\n招聘岗位:\"+job+\"\
\\n面试问答记录:\"+JSON.stringify(answers)\n }\n}\n"
code_language: javascript
desc: ''
outputs:
result:
children: null
type: string
selected: false
title: 组装结果
type: code
variables:
- value_selector:
- conversation
- resume
variable: resume
- value_selector:
- conversation
- company
variable: company
- value_selector:
- conversation
- job
variable: job
- value_selector:
- conversation
- answers
variable: answers
height: 54
id: '1733994577709'
position:
x: 2765.317061915033
y: 562.9101407825551
positionAbsolute:
x: 2765.317061915033
y: 562.9101407825551
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
- data:
answer: '{{#1733994965940.text#}}'
desc: ''
selected: false
title: 直接回复 8
type: answer
variables: []
height: 103
id: '1733994929597'
position:
x: 3453.9553044080058
y: 476.271898289582
positionAbsolute:
x: 3453.9553044080058
y: 476.271898289582
selected: false
sourcePosition: right
targetPosition: left
type: custom
width: 244
viewport:
x: 181.72765164612883
y: 107.52577854459429
zoom: 0.4923573744581653