From e317e7b9c2a860b0d2ea27f660682b2d6dfb8ca6 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 1 Aug 2025 15:40:12 +0800 Subject: [PATCH] perf: LLM default args --- frontend/src/entity/supplier.ts | 72 ++++++++++++-- frontend/src/views/system/model/ModelForm.vue | 97 +++++++++++++++++-- 2 files changed, 149 insertions(+), 20 deletions(-) diff --git a/frontend/src/entity/supplier.ts b/frontend/src/entity/supplier.ts index c21dc60d..349993b7 100644 --- a/frontend/src/entity/supplier.ts +++ b/frontend/src/entity/supplier.ts @@ -2,7 +2,14 @@ import icon_alybl_colorful from '@/assets/model/icon_alybl_colorful.png' import icon_bdyzn_colorful from '@/assets/model/icon_bdyzn_colorful.png' import icon_deepseek_colorful from '@/assets/model/icon_deepseek_colorful.png' import icon_txy_colorful from '@/assets/model/icon_txy_colorful.png' -type ModelConfig = Record +import icon_xfhx_colorful from '@/assets/model/icon_xfhx_colorful.png' + +type ModelArg = { key: string; val?: string | number; type: string; range?: string } +type ModelOption = { name: string; api_domain?: string; args?: ModelArg[] } +type ModelConfig = Record< + number, + { api_domain: string; common_args?: ModelArg[]; model_options: ModelOption[] } +> export const supplierList: Array<{ id: number @@ -17,7 +24,7 @@ export const supplierList: Array<{ model_config: { 0: { api_domain: 'https://dashscope.aliyuncs.com/compatible-mode/v1', - model_options: ['qwen-plus'], + model_options: [{ name: 'qwen-plus' }], }, }, }, @@ -28,7 +35,7 @@ export const supplierList: Array<{ model_config: { 0: { api_domain: 'https://qianfan.baidubce.com/v2/', - model_options: ['ernie-x1-turbo-32k'], + model_options: [{ name: 'ernie-x1-turbo-32k' }], }, }, }, @@ -39,7 +46,7 @@ export const supplierList: Array<{ model_config: { 0: { api_domain: 'https://api.deepseek.com', - model_options: ['deepseek-chat', 'deepseek-reasoner'], + model_options: [{ name: 'deepseek-chat' }, { name: 'deepseek-reasoner' }], }, }, }, @@ -51,12 +58,57 @@ export const supplierList: Array<{ 0: { api_domain: 'https://api.hunyuan.cloud.tencent.com/v1/', model_options: [ - 'hunyuan-turbos-latest', - 'hunyuan-turbos-longtext-128k-20250325', - 'hunyuan-large', - 'hunyuan-standard-256K', - 'hunyuan-standard', - 'hunyuan-lite', + { name: 'hunyuan-turbos-latest' }, + { name: 'hunyuan-turbos-longtext-128k-20250325' }, + { name: 'hunyuan-large' }, + { name: 'hunyuan-standard-256K' }, + { name: 'hunyuan-standard' }, + { name: 'hunyuan-lite' }, + ], + }, + }, + }, + { + id: 5, + name: '讯飞星火', + icon: icon_xfhx_colorful, + model_config: { + 0: { + api_domain: 'https://spark-api-open.xf-yun.com/v1/', + common_args: [{ key: 'temperature', val: 1.0, type: 'number', range: '[0, 2]' }], + model_options: [ + { + name: '4.0Ultra', + args: [{ key: 'max_tokens', val: 32768, type: 'number', range: '[1, 32768]' }], + }, + { + name: 'generalv3.5', + args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 8192]' }], + }, + { + name: 'max-32k', + args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 32768]' }], + }, + { + name: 'generalv3', + args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 8192]' }], + }, + { + name: 'pro-128k', + args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 131072]' }], + }, + { + name: 'lite', + args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 4096]' }], + }, + { + name: 'x1', + args: [ + { key: 'max_tokens', val: 32768, type: 'number', range: '[1, 32768]' }, + { key: 'temperature', val: 1.2, type: 'number', range: '(0, 2]' }, + ], + api_domain: 'https://spark-api-open.xf-yun.com/v2/', + }, ], }, }, diff --git a/frontend/src/views/system/model/ModelForm.vue b/frontend/src/views/system/model/ModelForm.vue index 785a2be6..9a9d715c 100644 --- a/frontend/src/views/system/model/ModelForm.vue +++ b/frontend/src/views/system/model/ModelForm.vue @@ -7,7 +7,7 @@ import icon_delete from '@/assets/svg/icon_delete.svg' import icon_add_outlined from '@/assets/svg/icon_add_outlined.svg' import ParamsForm from './ParamsForm.vue' import { modelTypeOptions } from '@/entity/CommonEntity.ts' -import { base_model_options } from '@/entity/supplier' +import { base_model_options, get_supplier } from '@/entity/supplier' import { useI18n } from 'vue-i18n' withDefaults( @@ -44,8 +44,18 @@ const modelRef = ref() const paramsFormRef = ref() const advancedSetting = ref([] as ParamsFormData[]) const paramsFormDrawer = ref(false) -const configExpand = ref(false) +const configExpand = ref(true) +let tempConfigMap = new Map>() +const modelSelected = computed(() => { + return !!modelForm.base_model +}) +const currentSupplier = computed(() => { + if (!modelForm.supplier) { + return null + } + return get_supplier(modelForm.supplier) +}) const modelList = computed(() => { if (!modelForm.supplier) { return [] @@ -133,6 +143,7 @@ const duplicateName = async (item: any) => { if (isCreate.value) { advancedSetting.value.push({ ...item, id: +new Date() }) beforeClose() + tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value]) return } for (const key in advancedSetting.value) { @@ -141,7 +152,7 @@ const duplicateName = async (item: any) => { Object.assign(element, { ...item }) } } - + tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value]) beforeClose() } @@ -158,11 +169,13 @@ const supplierChang = (supplier: any) => { const config = supplier.model_config[modelForm.model_type || 0] modelForm.api_domain = config.api_domain modelForm.base_model = '' + advancedSetting.value = [] } let curId = +new Date() const initForm = (item?: any) => { modelForm.id = '' modelRef.value.clearValidate() + tempConfigMap = new Map>() if (item) { Object.assign(modelForm, { ...item }) if (item?.config_list?.length) { @@ -176,8 +189,58 @@ const initForm = (item?: any) => { } else { advancedSetting.value = [] } + tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value]) } } +const formatAdvancedSetting = (list: Array) => { + const setting_list = [ + ...list.map((item) => { + return { id: ++curId, name: item.name, key: item.key, val: item.val } as any + }), + ] + advancedSetting.value = setting_list +} +const baseModelChange = (val: string) => { + if (!val || !modelForm.supplier || !modelList.value?.length) { + return + } + const current_model = modelList.value?.find((model: any) => model.name == val) + if (current_model) { + modelForm.api_domain = current_model.api_domain || getSupplierDomain() || '' + } + const current_config_list = tempConfigMap.get(`${modelForm.supplier}-${modelForm.base_model}`) + if (current_config_list) { + formatAdvancedSetting(current_config_list) + return + } + const defaultArgs = getModelDefaultArgs() + if (defaultArgs?.size) { + const defaultArgsList = [...defaultArgs.values()] + formatAdvancedSetting(defaultArgsList) + tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value]) + } +} +const getSupplierDomain = () => { + return currentSupplier.value?.model_config[modelForm.model_type || 0].api_domain +} +const getModelDefaultArgs = () => { + if (!modelForm.supplier || !modelForm.base_model) { + return null + } + const model_config = currentSupplier.value?.model_config[modelForm.model_type || 0] + const common_args = model_config?.common_args || [] + const current_model = modelList.value?.find((model: any) => model.name == modelForm.base_model) + + if (current_model?.args?.length) { + const modelArgs = current_model.args + common_args.push(...modelArgs) + } + const argMap = common_args.reduce((acc: any, item: any) => { + acc.set(item.key, item) + return acc + }, new Map()) + return argMap +} const emits = defineEmits(['submit']) const submitModel = () => { @@ -185,7 +248,11 @@ const submitModel = () => { if (res) { emits('submit', { ...modelForm, - config_list: [...advancedSetting.value], + config_list: [ + ...advancedSetting.value.map((item) => { + return { key: item.key, name: item.name, val: item.val } + }), + ], }) } }) @@ -249,11 +316,17 @@ defineExpose({ allow-create default-first-option :reserve-keyword="false" + @change="baseModelChange" > - + - + - +
-
+
{{ t('model.model_parameters') }} @@ -293,7 +367,7 @@ defineExpose({
@@ -322,7 +396,10 @@ defineExpose({
-
+