@@ -33,7 +33,11 @@ const settings = reactive({
3333 streamResponse: settingsStore .streamResponse ,
3434 topP: settingsStore .topP ,
3535 topK: settingsStore .topK ,
36- frequencyPenalty: settingsStore .frequencyPenalty
36+ frequencyPenalty: settingsStore .frequencyPenalty ,
37+ t2iConfig: {
38+ imageSize: settingsStore .t2iConfig .imageSize ,
39+ inferenceSteps: settingsStore .t2iConfig .inferenceSteps
40+ }
3741})
3842
3943// 新增:控制添加/编辑模型对话框的显示
@@ -176,6 +180,31 @@ const getModelTagType = (type: string) => {
176180 }
177181 return typeMap [type ] || ' info'
178182}
183+
184+ // 图片尺寸选项
185+ const imageSizeOptions = [
186+ { label: ' 1024x1024' , value: ' 1024x1024' },
187+ { label: ' 960x1280' , value: ' 960x1280' },
188+ { label: ' 768x1024' , value: ' 768x1024' },
189+ { label: ' 720x1440' , value: ' 720x1440' },
190+ { label: ' 720x1280' , value: ' 720x1280' }
191+ ]
192+
193+ // 添加当前选中模型的类型计算属性
194+ const currentModelType = computed (() => {
195+ const model = modelOptions .value .find (m => m .value === settings .model )
196+ return model ?.type || ' plain'
197+ })
198+
199+ // 是否显示LLM/VLM相关设置
200+ const showLLMSettings = computed (() => {
201+ return [' plain' , ' visual' ].includes (currentModelType .value )
202+ })
203+
204+ // 是否显示文生图相关设置
205+ const showT2ISettings = computed (() => {
206+ return currentModelType .value === ' text2img'
207+ })
179208 </script >
180209
181210<template >
@@ -234,64 +263,92 @@ const getModelTagType = (type: string) => {
234263 </div >
235264 </el-form-item >
236265
237- <!-- Temperature设置 -->
238- <el-form-item label =" Temperature" >
239- <el-slider v-model =" settings.temperature" :min =" 0" :max =" 1" :step =" 0.1" show-input />
240- </el-form-item >
241-
242- <!-- 最大Token设置 -->
243- <el-form-item label =" 最大Token" >
244- <el-input-number v-model =" settings.maxTokens" :min =" 1" :max =" 4096" :step =" 1" />
245- </el-form-item >
246-
247266 <!-- API Key输入 -->
248267 <el-form-item label =" API Key" >
249268 <el-input v-model =" settings.apiKey" type =" password" show-password placeholder =" 请输入API Key" />
250269 </el-form-item >
251270
252- <!-- 流式响应切换 -->
253- <el-form-item >
254- <template #label >
255- 流式响应
256- <el-tooltip
257- content =" 开启后将实时显示AI回复"
258- placement =" top"
259- >
260- <el-icon class =" info-icon" ><InfoFilled /></el-icon >
261- </el-tooltip >
262- </template >
263- <el-switch v-model =" settings.streamResponse" />
264- </el-form-item >
265-
266- <!-- Top P -->
267- <el-form-item label =" Top P" >
268- <el-slider v-model =" settings.topP" :min =" 0" :max =" 1" :step =" 0.1" show-input />
269- </el-form-item >
270-
271- <!-- Top K -->
272- <el-form-item label =" Top K" >
273- <el-input-number v-model =" settings.topK" :min =" 1" :max =" 100" :step =" 1" />
274- </el-form-item >
275-
276- <!-- Frequency Penalty -->
277- <el-form-item >
278- <template #label >
279- 重复惩罚
280- <el-tooltip
281- content =" 控制模型重复使用相同词语的倾向,值越大越不倾向重复"
282- placement =" top"
271+ <!-- LLM/VLM设置 -->
272+ <template v-if =" showLLMSettings " >
273+ <el-divider >模型参数</el-divider >
274+ <!-- Temperature设置-->
275+ <el-form-item label =" Temperature" >
276+ <el-slider v-model =" settings.temperature" :min =" 0" :max =" 1" :step =" 0.1" show-input />
277+ </el-form-item >
278+ <!-- 最大Token设置 -->
279+ <el-form-item label =" 最大Token" >
280+ <el-input-number v-model =" settings.maxTokens" :min =" 1" :max =" 4096" :step =" 1" />
281+ </el-form-item >
282+ <!-- 流式响应 -->
283+ <el-form-item >
284+ <template #label >
285+ 流式响应
286+ <el-tooltip content =" 开启将后将实时显示AI回复" placement =" top" >
287+ <el-icon class =" info-icon" ><InfoFilled /></el-icon >
288+ </el-tooltip >
289+ </template >
290+ <el-switch v-model =" settings.streamResponse" />
291+ </el-form-item >
292+ <!-- Top P设置 -->
293+ <el-form-item label =" Top P" >
294+ <el-slider v-model =" settings.topP" :min =" 0" :max =" 1" :step =" 0.1" show-input />
295+ </el-form-item >
296+ <!-- Top K设置 -->
297+ <el-form-item label =" Top K" >
298+ <el-input-number v-model =" settings.topK" :min =" 1" :max =" 100" :step =" 1" />
299+ </el-form-item >
300+ <!-- Frequency Penalty -->
301+ <el-form-item >
302+ <template #label >
303+ 重复惩罚
304+ <el-tooltip content =" 控制模型重复使用相同词语的倾向,值越大越不倾向重复" placement =" top" >
305+ <el-icon class =" info-icon" ><InfoFilled /></el-icon >
306+ </el-tooltip >
307+ </template >
308+ <el-slider
309+ v-model =" settings.frequencyPenalty"
310+ :min =" -2"
311+ :max =" 2"
312+ :step =" 0.1"
313+ show-input
314+ />
315+ </el-form-item >
316+ </template >
317+
318+ <!-- 文生图设置 -->
319+ <template v-if =" showT2ISettings " >
320+ <el-divider >文生图模型参数</el-divider >
321+
322+ <el-form-item label =" 图片尺寸" >
323+ <el-select
324+ v-model =" settings.t2iConfig.imageSize"
325+ class =" w-full"
283326 >
284- <el-icon class =" info-icon" ><InfoFilled /></el-icon >
285- </el-tooltip >
286- </template >
287- <el-slider
288- v-model =" settings.frequencyPenalty"
289- :min =" -2"
290- :max =" 2"
291- :step =" 0.1"
292- show-input
293- />
294- </el-form-item >
327+ <el-option
328+ v-for =" option in imageSizeOptions"
329+ :key =" option.value"
330+ :label =" option.label"
331+ :value =" option.value"
332+ />
333+ </el-select >
334+ </el-form-item >
335+
336+ <el-form-item >
337+ <template #label >
338+ 推理步数
339+ <el-tooltip content =" 控制生成图像的精细程度,值越大生成图像越精细" placement =" top" >
340+ <el-icon class =" info-icon" ><InfoFilled /></el-icon >
341+ </el-tooltip >
342+ </template >
343+ <el-slider
344+ v-model =" settings.t2iConfig.inferenceSteps"
345+ :min =" 10"
346+ :max =" 50"
347+ :step =" 1"
348+ show-input
349+ />
350+ </el-form-item >
351+ </template >
295352 </el-form >
296353
297354 <!-- 保存设置按钮 -->
0 commit comments