refactor: 选择模型时支持按照模型类型筛选
This commit is contained in:
parent
67f3ec34a1
commit
084f8503e7
@ -162,6 +162,14 @@ class Provide(APIView):
|
|||||||
, tags=["模型"])
|
, tags=["模型"])
|
||||||
@has_permissions(PermissionConstants.MODEL_READ)
|
@has_permissions(PermissionConstants.MODEL_READ)
|
||||||
def get(self, request: Request):
|
def get(self, request: Request):
|
||||||
|
model_type = request.query_params.get('model_type')
|
||||||
|
if model_type:
|
||||||
|
providers = []
|
||||||
|
for key in ModelProvideConstants.__members__:
|
||||||
|
if len([item for item in ModelProvideConstants[key].value.get_model_type_list() if
|
||||||
|
item['value'] == model_type]) > 0:
|
||||||
|
providers.append(ModelProvideConstants[key].value.get_model_provide_info().to_dict())
|
||||||
|
return result.success(providers)
|
||||||
return result.success(
|
return result.success(
|
||||||
[ModelProvideConstants[key].value.get_model_provide_info().to_dict() for key in
|
[ModelProvideConstants[key].value.get_model_provide_info().to_dict() for key in
|
||||||
ModelProvideConstants.__members__])
|
ModelProvideConstants.__members__])
|
||||||
|
|||||||
@ -34,6 +34,13 @@ const getProvider: (loading?: Ref<boolean>) => Promise<Result<Array<Provider>>>
|
|||||||
return get(`${prefix_provider}`, {}, loading)
|
return get(`${prefix_provider}`, {}, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得供应商列表
|
||||||
|
*/
|
||||||
|
const getProviderByModelType: (model_type: string, loading?: Ref<boolean>) => Promise<Result<Array<Provider>>> = (model_type, loading) => {
|
||||||
|
return get(`${prefix_provider}`, {model_type}, loading)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取模型创建表单
|
* 获取模型创建表单
|
||||||
* @param provider
|
* @param provider
|
||||||
@ -187,5 +194,6 @@ export default {
|
|||||||
getModelMetaById,
|
getModelMetaById,
|
||||||
pauseDownload,
|
pauseDownload,
|
||||||
getModelParamsForm,
|
getModelParamsForm,
|
||||||
updateModelParamsForm
|
updateModelParamsForm,
|
||||||
|
getProviderByModelType
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,29 @@
|
|||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
:destroy-on-close="true"
|
:destroy-on-close="true"
|
||||||
:before-close="close"
|
:before-close="close"
|
||||||
title="选择供应商"
|
|
||||||
append-to-body
|
append-to-body
|
||||||
>
|
>
|
||||||
|
<template #title>
|
||||||
|
<div class="flex-between">
|
||||||
|
<h4>选择供应商</h4>
|
||||||
|
<el-dropdown>
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
{{ currentModelType || '全部模型' }}
|
||||||
|
<el-icon class="el-icon--right">
|
||||||
|
<arrow-down />
|
||||||
|
</el-icon>
|
||||||
|
</span>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item v-for="item in modelTypeOptions" :key="item.value" @click="checkModelType(item.value)">
|
||||||
|
<span>{{ item.text }}</span>
|
||||||
|
<el-icon v-if="currentModelType === item.text"><Check /></el-icon>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<el-row :gutter="12" v-loading="loading">
|
<el-row :gutter="12" v-loading="loading">
|
||||||
<el-col :span="12" class="mb-16" v-for="(data, index) in list_provider" :key="index">
|
<el-col :span="12" class="mb-16" v-for="(data, index) in list_provider" :key="index">
|
||||||
<el-card shadow="hover" @click="go_create(data)">
|
<el-card shadow="hover" @click="go_create(data)">
|
||||||
@ -25,9 +45,20 @@
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import ModelApi from '@/api/model'
|
import ModelApi from '@/api/model'
|
||||||
import type { Provider } from '@/api/type/model'
|
import type { Provider } from '@/api/type/model'
|
||||||
|
|
||||||
const loading = ref<boolean>(false)
|
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 modelTypeOptions = ref([
|
||||||
|
{ text: '全部模型', value:''},
|
||||||
|
{ text: '大语言模型', value:'LLM'},
|
||||||
|
{ text: '向量模型', value:'EMBEDDING'},
|
||||||
|
{ text: '重排模型', value:'RERANKER'},
|
||||||
|
{ text: '语音识别', value:'STT'},
|
||||||
|
{ text: '语音合成', value:'TTS'}
|
||||||
|
])
|
||||||
|
|
||||||
const open = () => {
|
const open = () => {
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
@ -39,6 +70,14 @@ const open = () => {
|
|||||||
const close = () => {
|
const close = () => {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const checkModelType = (model_type: string) => {
|
||||||
|
currentModelType.value = modelTypeOptions.value.filter((item) => item.value === model_type)[0].text
|
||||||
|
ModelApi.getProviderByModelType(model_type, loading).then((ok) => {
|
||||||
|
list_provider.value = ok.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(['change'])
|
||||||
const go_create = (provider: Provider) => {
|
const go_create = (provider: Provider) => {
|
||||||
close()
|
close()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user