fix: Optimize the creation of models

--bug=1053742 --user=王孝刚 【模型管理】- 创建模型时,若在选择供应商列表选择了模型类型,进入供应商表单时,携带模型类型 https://www.tapd.cn/57709429/s/1674767
This commit is contained in:
wxg0103 2025-03-24 11:43:08 +08:00 committed by wxg
parent 259d1c872b
commit 0ce6dd0795
15 changed files with 49 additions and 18 deletions

View File

@ -35,6 +35,8 @@
v-model="form.model_id" v-model="form.model_id"
:placeholder="$t('views.application.applicationForm.form.aiModel.placeholder')" :placeholder="$t('views.application.applicationForm.form.aiModel.placeholder')"
:options="modelOptions" :options="modelOptions"
showFooter
:model-type="'LLM'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item <el-form-item

View File

@ -51,7 +51,7 @@
</el-option-group> </el-option-group>
<template #footer v-if="showFooter"> <template #footer v-if="showFooter">
<slot name="footer"> <slot name="footer">
<div class="w-full text-left cursor" @click="openCreateModel()"> <div class="w-full text-left cursor" @click="openCreateModel(undefined, props.modelType)">
<el-button type="primary" link> <el-button type="primary" link>
<el-icon class="mr-4"> <el-icon class="mr-4">
<Plus /> <Plus />
@ -72,7 +72,7 @@
<SelectProviderDialog <SelectProviderDialog
v-if="showFooter" v-if="showFooter"
ref="selectProviderRef" ref="selectProviderRef"
@change="openCreateModel($event)" @change="(provider, modelType) => openCreateModel(provider, modelType)"
/> />
</div> </div>
</template> </template>
@ -85,11 +85,13 @@ import SelectProviderDialog from '@/views/template/component/SelectProviderDialo
import { t } from '@/locales' import { t } from '@/locales'
import useStore from '@/stores' import useStore from '@/stores'
defineOptions({ name: 'ModelSelect' }) defineOptions({ name: 'ModelSelect' })
const props = defineProps<{ const props = defineProps<{
modelValue: any modelValue: any
options: any options: any
showFooter?: false showFooter?: false
modelType?: ''
}>() }>()
const emit = defineEmits(['update:modelValue', 'change', 'submitModel']) const emit = defineEmits(['update:modelValue', 'change', 'submitModel'])
@ -121,11 +123,12 @@ function getProvider() {
}) })
} }
const openCreateModel = (provider?: Provider) => { const openCreateModel = (provider?: Provider, model_type?: string) => {
if (provider && provider.provider) { if (provider && provider.provider) {
createModelRef.value?.open(provider) createModelRef.value?.open(provider, model_type)
} else { } else {
selectProviderRef.value?.open() console.log(model_type)
selectProviderRef.value?.open(model_type)
} }
} }
@ -145,9 +148,11 @@ onMounted(() => {
background-color: var(--el-fill-color-light); background-color: var(--el-fill-color-light);
} }
} }
.model-icon { .model-icon {
width: 18px; width: 18px;
} }
.check-icon { .check-icon {
position: absolute; position: absolute;
right: 10px; right: 10px;

View File

@ -83,6 +83,7 @@
@change="model_change" @change="model_change"
@submitModel="getModel" @submitModel="getModel"
showFooter showFooter
:model-type="'LLM'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -336,6 +337,7 @@
v-model="applicationForm.stt_model_id" v-model="applicationForm.stt_model_id"
:placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')" :placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')"
:options="sttModelOptions" :options="sttModelOptions"
:model-type="'STT'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -398,6 +400,7 @@
" "
:options="ttsModelOptions" :options="ttsModelOptions"
@change="ttsModelChange()" @change="ttsModelChange()"
:model-type="'TTS'"
></ModelSelect> ></ModelSelect>
<el-button <el-button
@ -551,7 +554,7 @@ const applicationForm = ref<ApplicationFormType>({
prompt: defaultPrompt, prompt: defaultPrompt,
system: t('views.application.applicationForm.form.roleSettings.placeholder'), system: t('views.application.applicationForm.form.roleSettings.placeholder'),
no_references_prompt: '{question}', no_references_prompt: '{question}',
reasoning_content_enable: false, reasoning_content_enable: false
}, },
model_params_setting: {}, model_params_setting: {},
problem_optimization: false, problem_optimization: false,

View File

@ -38,6 +38,8 @@
v-model="form.embedding_mode_id" v-model="form.embedding_mode_id"
:placeholder="$t('views.dataset.datasetForm.form.EmbeddingModel.placeholder')" :placeholder="$t('views.dataset.datasetForm.form.EmbeddingModel.placeholder')"
:options="modelOptions" :options="modelOptions"
:model-type="'EMBEDDING'"
showFooter
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -369,12 +369,13 @@ const getModelForm = (model_name: string) => {
} }
} }
const open = (provider: Provider) => { const open = (provider: Provider, model_type?: string) => {
ModelApi.listModelType(provider.provider, model_type_loading).then((ok) => { ModelApi.listModelType(provider.provider, model_type_loading).then((ok) => {
model_type_list.value = ok.data model_type_list.value = ok.data
}) })
providerValue.value = provider providerValue.value = provider
dialogVisible.value = true dialogVisible.value = true
base_form_data.value.model_type = model_type || ''
activeName.value = 'base-info' activeName.value = 'base-info'
} }

View File

@ -56,13 +56,13 @@ const loading = ref<boolean>(false)
const dialogVisible = ref<boolean>(false) const dialogVisible = ref<boolean>(false)
const list_provider = ref<Array<Provider>>([]) const list_provider = ref<Array<Provider>>([])
const currentModelType = ref('') const currentModelType = ref('')
const selectModelType = ref('')
const modelTypeOptions = [{ text: t('views.template.model.allModel'), value: '' }, ...modelTypeList] const modelTypeOptions = [{ text: t('views.template.model.allModel'), value: '' }, ...modelTypeList]
const open = () => { const open = (model_type?: string) => {
dialogVisible.value = true dialogVisible.value = true
const option = modelTypeOptions.find((item) => item.text === currentModelType.value) const option = modelTypeOptions.find((item) => item.text === currentModelType.value)
checkModelType(option ? option.value : '') checkModelType(model_type ? model_type : option ? option.value : '')
} }
const close = () => { const close = () => {
@ -70,9 +70,8 @@ const close = () => {
} }
const checkModelType = (model_type: string) => { const checkModelType = (model_type: string) => {
currentModelType.value = modelTypeOptions.filter( selectModelType.value = model_type
(item) => item.value === model_type currentModelType.value = modelTypeOptions.filter((item) => item.value === model_type)[0].text
)[0].text
ModelApi.getProviderByModelType(model_type, loading).then((ok) => { ModelApi.getProviderByModelType(model_type, loading).then((ok) => {
list_provider.value = ok.data list_provider.value = ok.data
list_provider.value.sort((a, b) => a.provider.localeCompare(b.provider)) list_provider.value.sort((a, b) => a.provider.localeCompare(b.provider))
@ -82,7 +81,7 @@ const checkModelType = (model_type: string) => {
const emit = defineEmits(['change']) const emit = defineEmits(['change'])
const go_create = (provider: Provider) => { const go_create = (provider: Provider) => {
close() close()
emit('change', provider) emit('change', provider, selectModelType.value)
} }
defineExpose({ open, close }) defineExpose({ open, close })
</script> </script>

View File

@ -189,7 +189,7 @@
<SelectProviderDialog <SelectProviderDialog
ref="selectProviderRef" ref="selectProviderRef"
@change="openCreateModel($event)" @change="(provider, modelType) => openCreateModel(provider, modelType)"
></SelectProviderDialog> ></SelectProviderDialog>
</LayoutContainer> </LayoutContainer>
</template> </template>
@ -259,9 +259,11 @@ const clickListHandle = (item: Provider) => {
} }
} }
const openCreateModel = (provider?: Provider) => { const openCreateModel = (provider?: Provider, model_type?: string) => {
console.log(provider)
console.log(model_type)
if (provider && provider.provider) { if (provider && provider.provider) {
createModelRef.value?.open(provider) createModelRef.value?.open(provider, model_type)
} else { } else {
selectProviderRef.value?.open() selectProviderRef.value?.open()
} }

View File

@ -49,6 +49,7 @@
:options="modelOptions" :options="modelOptions"
@submitModel="getModel" @submitModel="getModel"
showFooter showFooter
:model-type="'LLM'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>

View File

@ -108,6 +108,8 @@
v-model="form_data.stt_model_id" v-model="form_data.stt_model_id"
:placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')" :placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')"
:options="sttModelOptions" :options="sttModelOptions"
showFooter
:model-type="'STT'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -149,6 +151,8 @@
:placeholder="$t('views.application.applicationForm.form.voicePlay.placeholder')" :placeholder="$t('views.application.applicationForm.form.voicePlay.placeholder')"
:options="ttsModelOptions" :options="ttsModelOptions"
@change="ttsModelChange()" @change="ttsModelChange()"
showFooter
:model-type="'TTS'"
></ModelSelect> ></ModelSelect>
<el-button <el-button

View File

@ -49,6 +49,8 @@
$t('views.applicationWorkflow.nodes.imageGenerateNode.model.requiredMessage') $t('views.applicationWorkflow.nodes.imageGenerateNode.model.requiredMessage')
" "
:options="modelOptions" :options="modelOptions"
showFooter
:model-type="'TTI'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>

View File

@ -50,6 +50,8 @@
$t('views.applicationWorkflow.nodes.imageUnderstandNode.model.requiredMessage') $t('views.applicationWorkflow.nodes.imageUnderstandNode.model.requiredMessage')
" "
:options="modelOptions" :options="modelOptions"
showFooter
:model-type="'IMAGE'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>

View File

@ -49,6 +49,7 @@
:options="modelOptions" :options="modelOptions"
@submitModel="getModel" @submitModel="getModel"
showFooter showFooter
:model-type="'LLM'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item :label="$t('views.application.applicationForm.form.roleSettings.label')"> <el-form-item :label="$t('views.application.applicationForm.form.roleSettings.label')">

View File

@ -152,10 +152,13 @@
@wheel="wheel" @wheel="wheel"
:teleported="false" :teleported="false"
v-model="form_data.reranker_model_id" v-model="form_data.reranker_model_id"
:placeholder="$t('views.applicationWorkflow.nodes.rerankerNode.reranker_model.placeholder')" :placeholder="
$t('views.applicationWorkflow.nodes.rerankerNode.reranker_model.placeholder')
"
:options="modelOptions" :options="modelOptions"
@submitModel="getModel" @submitModel="getModel"
showFooter showFooter
:model-type="'RERANKER'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -36,6 +36,8 @@
v-model="form_data.stt_model_id" v-model="form_data.stt_model_id"
:placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')" :placeholder="$t('views.application.applicationForm.form.voiceInput.placeholder')"
:options="modelOptions" :options="modelOptions"
showFooter
:model-type="'STT'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item <el-form-item

View File

@ -45,6 +45,8 @@
v-model="form_data.tts_model_id" v-model="form_data.tts_model_id"
:placeholder="$t('views.application.applicationForm.form.voicePlay.placeholder')" :placeholder="$t('views.application.applicationForm.form.voicePlay.placeholder')"
:options="modelOptions" :options="modelOptions"
showFooter
:model-type="'TTS'"
></ModelSelect> ></ModelSelect>
</el-form-item> </el-form-item>
<el-form-item <el-form-item