1313 >
1414 <el-form-item
1515 :label =" $t('views.application.form.aiModel.label')"
16- prop =" model_id"
16+ : prop =" chat_data.model_id_type === 'reference' ? 'model_id_reference' : ' model_id' "
1717 :rules =" {
1818 required: true,
19- message: $t('views.application.form.aiModel.placeholder'),
19+ message: chat_data.model_id_type === 'reference' ? $t('workflow.variable.placeholder') : $t('views.application.form.aiModel.placeholder'),
2020 trigger: 'change',
2121 }"
2222 >
2828 }}<span class =" color-danger" >*</span ></span
2929 >
3030 </div >
31-
31+ <el-select v-model =" chat_data.model_id_type" :teleported =" false" size =" small" style =" width : 85px " @change =" chat_data.model_id_reference = []" >
32+ <el-option :label =" $t('workflow.variable.Referencing')" value =" reference" />
33+ <el-option :label =" $t('common.custom')" value =" custom" />
34+ </el-select >
35+ </div >
36+ </template >
37+ <div class =" flex-between w-full" v-if =" chat_data.model_id_type !== 'reference'" >
38+ <div >
39+ <ModelSelect
40+ @change =" model_change"
41+ @wheel =" wheel"
42+ :teleported =" false"
43+ v-model =" chat_data.model_id"
44+ :placeholder =" $t('views.application.form.aiModel.placeholder')"
45+ :options =" modelOptions"
46+ @submitModel =" getSelectModel"
47+ showFooter
48+ :model-type =" 'LLM'"
49+ ></ModelSelect >
50+ </div >
51+ <div class =" ml-8" >
3252 <el-button
3353 :disabled =" !chat_data.model_id"
3454 type =" primary"
3959 <AppIcon iconName =" app-setting" ></AppIcon >
4060 </el-button >
4161 </div >
42- </template >
43- <ModelSelect
44- @change =" model_change"
45- @wheel =" wheel"
46- :teleported =" false"
47- v-model =" chat_data.model_id"
48- :placeholder =" $t('views.application.form.aiModel.placeholder')"
49- :options =" modelOptions"
50- @submitModel =" getSelectModel"
51- showFooter
52- :model-type =" 'LLM'"
53- ></ModelSelect >
62+ </div >
63+ <NodeCascader
64+ v-else
65+ ref =" nodeCascaderRef"
66+ :nodeModel =" nodeModel"
67+ class =" w-full"
68+ :placeholder =" $t('workflow.variable.placeholder')"
69+ v-model =" chat_data.model_id_reference"
70+ />
5471 </el-form-item >
5572
5673 <el-form-item >
7188 type =" primary"
7289 link
7390 @click =" openGeneratePromptDialog(chat_data.model_id)"
74- :disabled =" !chat_data.model_id"
91+ :disabled =" chat_data.model_id_type === 'reference' || !chat_data.model_id"
7592 >
7693 <AppIcon iconName =" app-generate-star" ></AppIcon >
7794 </el-button >
458475<script setup lang="ts">
459476import { cloneDeep , set , groupBy } from ' lodash'
460477import NodeContainer from ' @/workflow/common/NodeContainer.vue'
478+ import NodeCascader from ' @/workflow/common/NodeCascader.vue'
461479import type { FormInstance } from ' element-plus'
462480import { ref , computed , onMounted , inject , reactive } from ' vue'
463481import { isLastNode } from ' @/workflow/common/data'
@@ -532,6 +550,8 @@ const collapseData = reactive({
532550
533551const form = {
534552 model_id: ' ' ,
553+ model_id_type: ' custom' ,
554+ model_id_reference: [],
535555 system: ' ' ,
536556 prompt: defaultPrompt ,
537557 dialogue_number: 1 ,
@@ -556,6 +576,12 @@ const chat_data = computed({
556576 reasoning_content_enable: false ,
557577 })
558578 }
579+ if (! props .nodeModel .properties .node_data .model_id_type ) {
580+ set (props .nodeModel .properties .node_data , ' model_id_type' , ' custom' )
581+ }
582+ if (! props .nodeModel .properties .node_data .model_id_reference ) {
583+ set (props .nodeModel .properties .node_data , ' model_id_reference' , [])
584+ }
559585 return props .nodeModel .properties .node_data
560586 } else {
561587 set (props .nodeModel .properties , ' node_data' , form )
@@ -573,6 +599,7 @@ const aiChatNodeFormRef = ref<FormInstance>()
573599
574600const modelOptions = ref <any >(null )
575601const AIModeParamSettingDialogRef = ref <InstanceType <typeof AIModeParamSettingDialog >>()
602+ const nodeCascaderRef = ref ()
576603const ReasoningParamSettingDialogRef = ref <InstanceType <typeof ReasoningParamSettingDialog >>()
577604const validate = () => {
578605 return aiChatNodeFormRef .value ?.validate ().catch ((err ) => {
0 commit comments