Skip to content

Commit 958dca3

Browse files
committed
Merge branch 'main' of https://github.com/dataease/SQLBot
2 parents 8c21cf2 + 08f74bd commit 958dca3

File tree

2 files changed

+150
-20
lines changed

2 files changed

+150
-20
lines changed

frontend/src/entity/supplier.ts

Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@ import icon_alybl_colorful from '@/assets/model/icon_alybl_colorful.png'
22
import icon_bdyzn_colorful from '@/assets/model/icon_bdyzn_colorful.png'
33
import icon_deepseek_colorful from '@/assets/model/icon_deepseek_colorful.png'
44
import icon_txy_colorful from '@/assets/model/icon_txy_colorful.png'
5-
type ModelConfig = Record<number, { api_domain: string; model_options: string[] }>
5+
import icon_xfhx_colorful from '@/assets/model/icon_xfhx_colorful.png'
6+
7+
type ModelArg = { key: string; val?: string | number; type: string; range?: string }
8+
type ModelOption = { name: string; api_domain?: string; args?: ModelArg[] }
9+
type ModelConfig = Record<
10+
number,
11+
{ api_domain: string; common_args?: ModelArg[]; model_options: ModelOption[] }
12+
>
613

714
export const supplierList: Array<{
815
id: number
@@ -17,7 +24,7 @@ export const supplierList: Array<{
1724
model_config: {
1825
0: {
1926
api_domain: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
20-
model_options: ['qwen-plus'],
27+
model_options: [{ name: 'qwen-plus' }],
2128
},
2229
},
2330
},
@@ -28,7 +35,7 @@ export const supplierList: Array<{
2835
model_config: {
2936
0: {
3037
api_domain: 'https://qianfan.baidubce.com/v2/',
31-
model_options: ['ernie-x1-turbo-32k'],
38+
model_options: [{ name: 'ernie-x1-turbo-32k' }],
3239
},
3340
},
3441
},
@@ -39,7 +46,7 @@ export const supplierList: Array<{
3946
model_config: {
4047
0: {
4148
api_domain: 'https://api.deepseek.com',
42-
model_options: ['deepseek-chat', 'deepseek-reasoner'],
49+
model_options: [{ name: 'deepseek-chat' }, { name: 'deepseek-reasoner' }],
4350
},
4451
},
4552
},
@@ -50,13 +57,59 @@ export const supplierList: Array<{
5057
model_config: {
5158
0: {
5259
api_domain: 'https://api.hunyuan.cloud.tencent.com/v1/',
60+
common_args: [{ key: 'temperature', val: 1.0, type: 'number', range: '[0, 2]' }],
61+
model_options: [
62+
{ name: 'hunyuan-turbos-latest' },
63+
{ name: 'hunyuan-turbos-longtext-128k-20250325' },
64+
{ name: 'hunyuan-large' },
65+
{ name: 'hunyuan-standard-256K' },
66+
{ name: 'hunyuan-standard' },
67+
{ name: 'hunyuan-lite' },
68+
],
69+
},
70+
},
71+
},
72+
{
73+
id: 5,
74+
name: '讯飞星火',
75+
icon: icon_xfhx_colorful,
76+
model_config: {
77+
0: {
78+
api_domain: 'https://spark-api-open.xf-yun.com/v1/',
79+
common_args: [{ key: 'temperature', val: 1.0, type: 'number', range: '[0, 2]' }],
5380
model_options: [
54-
'hunyuan-turbos-latest',
55-
'hunyuan-turbos-longtext-128k-20250325',
56-
'hunyuan-large',
57-
'hunyuan-standard-256K',
58-
'hunyuan-standard',
59-
'hunyuan-lite',
81+
{
82+
name: '4.0Ultra',
83+
args: [{ key: 'max_tokens', val: 32768, type: 'number', range: '[1, 32768]' }],
84+
},
85+
{
86+
name: 'generalv3.5',
87+
args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 8192]' }],
88+
},
89+
{
90+
name: 'max-32k',
91+
args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 32768]' }],
92+
},
93+
{
94+
name: 'generalv3',
95+
args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 8192]' }],
96+
},
97+
{
98+
name: 'pro-128k',
99+
args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 131072]' }],
100+
},
101+
{
102+
name: 'lite',
103+
args: [{ key: 'max_tokens', val: 4096, type: 'number', range: '[1, 4096]' }],
104+
},
105+
{
106+
name: 'x1',
107+
args: [
108+
{ key: 'max_tokens', val: 32768, type: 'number', range: '[1, 32768]' },
109+
{ key: 'temperature', val: 1.2, type: 'number', range: '(0, 2]' },
110+
],
111+
api_domain: 'https://spark-api-open.xf-yun.com/v2/',
112+
},
60113
],
61114
},
62115
},

frontend/src/views/system/model/ModelForm.vue

Lines changed: 87 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import icon_delete from '@/assets/svg/icon_delete.svg'
77
import icon_add_outlined from '@/assets/svg/icon_add_outlined.svg'
88
import ParamsForm from './ParamsForm.vue'
99
import { modelTypeOptions } from '@/entity/CommonEntity.ts'
10-
import { base_model_options } from '@/entity/supplier'
10+
import { base_model_options, get_supplier } from '@/entity/supplier'
1111
import { useI18n } from 'vue-i18n'
1212
1313
withDefaults(
@@ -44,8 +44,18 @@ const modelRef = ref()
4444
const paramsFormRef = ref()
4545
const advancedSetting = ref([] as ParamsFormData[])
4646
const paramsFormDrawer = ref(false)
47-
const configExpand = ref(false)
47+
const configExpand = ref(true)
48+
let tempConfigMap = new Map<string, Array<any>>()
4849
50+
const modelSelected = computed(() => {
51+
return !!modelForm.base_model
52+
})
53+
const currentSupplier = computed(() => {
54+
if (!modelForm.supplier) {
55+
return null
56+
}
57+
return get_supplier(modelForm.supplier)
58+
})
4959
const modelList = computed(() => {
5060
if (!modelForm.supplier) {
5161
return []
@@ -133,6 +143,7 @@ const duplicateName = async (item: any) => {
133143
if (isCreate.value) {
134144
advancedSetting.value.push({ ...item, id: +new Date() })
135145
beforeClose()
146+
tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value])
136147
return
137148
}
138149
for (const key in advancedSetting.value) {
@@ -141,7 +152,7 @@ const duplicateName = async (item: any) => {
141152
Object.assign(element, { ...item })
142153
}
143154
}
144-
155+
tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value])
145156
beforeClose()
146157
}
147158
@@ -158,11 +169,13 @@ const supplierChang = (supplier: any) => {
158169
const config = supplier.model_config[modelForm.model_type || 0]
159170
modelForm.api_domain = config.api_domain
160171
modelForm.base_model = ''
172+
advancedSetting.value = []
161173
}
162174
let curId = +new Date()
163175
const initForm = (item?: any) => {
164176
modelForm.id = ''
165177
modelRef.value.clearValidate()
178+
tempConfigMap = new Map<string, Array<any>>()
166179
if (item) {
167180
Object.assign(modelForm, { ...item })
168181
if (item?.config_list?.length) {
@@ -176,16 +189,70 @@ const initForm = (item?: any) => {
176189
} else {
177190
advancedSetting.value = []
178191
}
192+
tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value])
193+
}
194+
}
195+
const formatAdvancedSetting = (list: Array<any>) => {
196+
const setting_list = [
197+
...list.map((item) => {
198+
return { id: ++curId, name: item.name, key: item.key, val: item.val } as any
199+
}),
200+
]
201+
advancedSetting.value = setting_list
202+
}
203+
const baseModelChange = (val: string) => {
204+
if (!val || !modelForm.supplier || !modelList.value?.length) {
205+
return
206+
}
207+
const current_model = modelList.value?.find((model: any) => model.name == val)
208+
if (current_model) {
209+
modelForm.api_domain = current_model.api_domain || getSupplierDomain() || ''
210+
}
211+
const current_config_list = tempConfigMap.get(`${modelForm.supplier}-${modelForm.base_model}`)
212+
if (current_config_list) {
213+
formatAdvancedSetting(current_config_list)
214+
return
215+
}
216+
const defaultArgs = getModelDefaultArgs()
217+
if (defaultArgs?.size) {
218+
const defaultArgsList = [...defaultArgs.values()]
219+
formatAdvancedSetting(defaultArgsList)
220+
tempConfigMap.set(`${modelForm.supplier}-${modelForm.base_model}`, [...advancedSetting.value])
179221
}
180222
}
223+
const getSupplierDomain = () => {
224+
return currentSupplier.value?.model_config[modelForm.model_type || 0].api_domain
225+
}
226+
const getModelDefaultArgs = () => {
227+
if (!modelForm.supplier || !modelForm.base_model) {
228+
return null
229+
}
230+
const model_config = currentSupplier.value?.model_config[modelForm.model_type || 0]
231+
const common_args = model_config?.common_args || []
232+
const current_model = modelList.value?.find((model: any) => model.name == modelForm.base_model)
233+
234+
if (current_model?.args?.length) {
235+
const modelArgs = current_model.args
236+
common_args.push(...modelArgs)
237+
}
238+
const argMap = common_args.reduce((acc: any, item: any) => {
239+
acc.set(item.key, { ...item, name: item.key })
240+
return acc
241+
}, new Map())
242+
return argMap
243+
}
181244
const emits = defineEmits(['submit'])
182245
183246
const submitModel = () => {
184247
modelRef.value.validate((res: any) => {
185248
if (res) {
186249
emits('submit', {
187250
...modelForm,
188-
config_list: [...advancedSetting.value],
251+
config_list: [
252+
...advancedSetting.value.map((item) => {
253+
return { key: item.key, name: item.name, val: item.val }
254+
}),
255+
],
189256
})
190257
}
191258
})
@@ -249,11 +316,17 @@ defineExpose({
249316
allow-create
250317
default-first-option
251318
:reserve-keyword="false"
319+
@change="baseModelChange"
252320
>
253-
<el-option v-for="item in modelList" :key="item" :label="item" :value="item" />
321+
<el-option
322+
v-for="item in modelList"
323+
:key="item.name"
324+
:label="item.name"
325+
:value="item.name"
326+
/>
254327
</el-select>
255328
</el-form-item>
256-
<el-form-item prop="api_domain" :label="t('model.api_domain_name')">
329+
<el-form-item v-if="modelSelected" prop="api_domain" :label="t('model.api_domain_name')">
257330
<el-input
258331
v-model="modelForm.api_domain"
259332
clearable
@@ -262,7 +335,7 @@ defineExpose({
262335
"
263336
/>
264337
</el-form-item>
265-
<el-form-item prop="api_key" label="API Key">
338+
<el-form-item v-if="modelSelected" prop="api_key" label="API Key">
266339
<el-input
267340
v-model="modelForm.api_key"
268341
clearable
@@ -273,6 +346,7 @@ defineExpose({
273346
</el-form-item>
274347
</el-form>
275348
<div
349+
v-if="modelSelected"
276350
class="advance-setting"
277351
:class="configExpand && 'expand'"
278352
@click="configExpand = !configExpand"
@@ -282,7 +356,7 @@ defineExpose({
282356
<arrow_down></arrow_down>
283357
</el-icon>
284358
</div>
285-
<div v-if="configExpand" class="model-params">
359+
<div v-if="modelSelected && configExpand" class="model-params">
286360
{{ t('model.model_parameters') }}
287361
<span class="add" @click="handleParamsCreate">
288362
<el-icon size="16">
@@ -293,7 +367,7 @@ defineExpose({
293367
</div>
294368

295369
<div
296-
v-if="configExpand"
370+
v-if="modelSelected && configExpand"
297371
class="params-table"
298372
:class="!advancedSettingPagination.length && 'bottom-border'"
299373
>
@@ -322,7 +396,10 @@ defineExpose({
322396
</el-table-column>
323397
</el-table>
324398
</div>
325-
<div v-if="advancedSetting.length > 5 && configExpand" class="params-table_pagination">
399+
<div
400+
v-if="modelSelected && advancedSetting.length > 5 && configExpand"
401+
class="params-table_pagination"
402+
>
326403
<el-pagination
327404
:default-page-size="5"
328405
layout="prev, pager, next"

0 commit comments

Comments
 (0)