mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
perf: LLM default args
This commit is contained in:
@@ -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<number, { api_domain: string; model_options: string[] }>
|
||||
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/',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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<string, Array<any>>()
|
||||
|
||||
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<string, Array<any>>()
|
||||
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<any>) => {
|
||||
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"
|
||||
>
|
||||
<el-option v-for="item in modelList" :key="item" :label="item" :value="item" />
|
||||
<el-option
|
||||
v-for="item in modelList"
|
||||
:key="item.name"
|
||||
:label="item.name"
|
||||
:value="item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="api_domain" :label="t('model.api_domain_name')">
|
||||
<el-form-item v-if="modelSelected" prop="api_domain" :label="t('model.api_domain_name')">
|
||||
<el-input
|
||||
v-model="modelForm.api_domain"
|
||||
clearable
|
||||
@@ -262,7 +335,7 @@ defineExpose({
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item prop="api_key" label="API Key">
|
||||
<el-form-item v-if="modelSelected" prop="api_key" label="API Key">
|
||||
<el-input
|
||||
v-model="modelForm.api_key"
|
||||
clearable
|
||||
@@ -273,6 +346,7 @@ defineExpose({
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div
|
||||
v-if="modelSelected"
|
||||
class="advance-setting"
|
||||
:class="configExpand && 'expand'"
|
||||
@click="configExpand = !configExpand"
|
||||
@@ -282,7 +356,7 @@ defineExpose({
|
||||
<arrow_down></arrow_down>
|
||||
</el-icon>
|
||||
</div>
|
||||
<div v-if="configExpand" class="model-params">
|
||||
<div v-if="modelSelected && configExpand" class="model-params">
|
||||
{{ t('model.model_parameters') }}
|
||||
<span class="add" @click="handleParamsCreate">
|
||||
<el-icon size="16">
|
||||
@@ -293,7 +367,7 @@ defineExpose({
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="configExpand"
|
||||
v-if="modelSelected && configExpand"
|
||||
class="params-table"
|
||||
:class="!advancedSettingPagination.length && 'bottom-border'"
|
||||
>
|
||||
@@ -322,7 +396,10 @@ defineExpose({
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-if="advancedSetting.length > 5 && configExpand" class="params-table_pagination">
|
||||
<div
|
||||
v-if="modelSelected && advancedSetting.length > 5 && configExpand"
|
||||
class="params-table_pagination"
|
||||
>
|
||||
<el-pagination
|
||||
:default-page-size="5"
|
||||
layout="prev, pager, next"
|
||||
|
||||
Reference in New Issue
Block a user