From 57ae5a83542947e2127602904079251b439c0a18 Mon Sep 17 00:00:00 2001 From: hllshiro <40970081+hllshiro@users.noreply.github.com> Date: Wed, 18 Jun 2025 17:52:22 +0800 Subject: [PATCH 1/3] feat: enhance model selection logic in common setting. --- .../configPresenter/modelDefaultSettings.ts | 12 ++++++++++++ src/renderer/src/components/ModelSelect.vue | 16 +++++++++++++++- src/renderer/src/components/NewThread.vue | 5 ++++- src/renderer/src/components/TitleView.vue | 7 ++++++- .../src/components/mcp-config/mcpServerForm.vue | 6 +++++- .../src/components/settings/CommonSettings.vue | 6 +++++- src/renderer/src/stores/settings.ts | 13 ++++++++++--- 7 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/main/presenter/configPresenter/modelDefaultSettings.ts b/src/main/presenter/configPresenter/modelDefaultSettings.ts index 48143cc36..3bc05ecbb 100644 --- a/src/main/presenter/configPresenter/modelDefaultSettings.ts +++ b/src/main/presenter/configPresenter/modelDefaultSettings.ts @@ -1676,5 +1676,17 @@ export const defaultModelsSettings: DefaultModelSetting[] = [ functionCall: false, reasoning: false, type: ModelType.Embedding + }, + { + id: 'embedding', + name: 'embedding', + temperature: 0.0, + maxTokens: 4096, + contextLength: 4096, + match: ['embedding', 'embed'], + vision: false, + functionCall: false, + reasoning: false, + type: ModelType.Embedding } ] diff --git a/src/renderer/src/components/ModelSelect.vue b/src/renderer/src/components/ModelSelect.vue index 2806e14e9..f453a18e5 100644 --- a/src/renderer/src/components/ModelSelect.vue +++ b/src/renderer/src/components/ModelSelect.vue @@ -59,6 +59,12 @@ const providers = ref<{ id: string; name: string; models: RENDERER_MODEL_META[] const emit = defineEmits<{ (e: 'update:model', model: RENDERER_MODEL_META, providerId: string): void }>() + +const props = defineProps<{ + type?: ModelType[] + tag?: string[] +}>() + const filteredProviders = computed(() => { if (!keyword.value) return providers.value return providers.value @@ -100,7 +106,15 @@ onMounted(async () => { return { id: providerId, name: provider?.name || providerId, - models: models.filter((model) => model.type === ModelType.Chat) + models: + props.type && props.type.length === 0 + ? models + : models.filter( + (model) => + model.type !== undefined && + props.type && + props.type.includes(model.type as ModelType) + ) } }) } catch (error) { diff --git a/src/renderer/src/components/NewThread.vue b/src/renderer/src/components/NewThread.vue index 73351ff60..84826fabe 100644 --- a/src/renderer/src/components/NewThread.vue +++ b/src/renderer/src/components/NewThread.vue @@ -58,7 +58,10 @@ - + diff --git a/src/renderer/src/components/TitleView.vue b/src/renderer/src/components/TitleView.vue index 1b3171ce9..9d048fb86 100644 --- a/src/renderer/src/components/TitleView.vue +++ b/src/renderer/src/components/TitleView.vue @@ -27,7 +27,10 @@ - + @@ -71,6 +74,8 @@ import { onMounted, ref, watch } from 'vue' import { useChatStore } from '@/stores/chat' import { usePresenter } from '@/composables/usePresenter' import { useThemeStore } from '@/stores/theme' +import { ModelType } from '@shared/model' + const configPresenter = usePresenter('configPresenter') const { t } = useI18n() diff --git a/src/renderer/src/components/mcp-config/mcpServerForm.vue b/src/renderer/src/components/mcp-config/mcpServerForm.vue index ad1856a6d..218a3cad3 100644 --- a/src/renderer/src/components/mcp-config/mcpServerForm.vue +++ b/src/renderer/src/components/mcp-config/mcpServerForm.vue @@ -28,6 +28,7 @@ import type { RENDERER_MODEL_META } from '@shared/presenter' import { MCP_MARKETPLACE_URL, HIGRESS_MCP_MARKETPLACE_URL } from './const' import { usePresenter } from '@/composables/usePresenter' import { useThemeStore } from '@/stores/theme' +import { ModelType } from '@shared/model' const { t } = useI18n() const { toast } = useToast() @@ -793,7 +794,10 @@ HTTP-Referer=deepchatai.cn` - + diff --git a/src/renderer/src/components/settings/CommonSettings.vue b/src/renderer/src/components/settings/CommonSettings.vue index c0b57a7e9..0f109b3d2 100644 --- a/src/renderer/src/components/settings/CommonSettings.vue +++ b/src/renderer/src/components/settings/CommonSettings.vue @@ -77,7 +77,10 @@ - + @@ -371,6 +374,7 @@ import { nanoid } from 'nanoid' import { useThemeStore } from '@/stores/theme' import { useSoundStore } from '@/stores/sound' import { useLanguageStore } from '@/stores/language' +import { ModelType } from '@shared/model' const devicePresenter = usePresenter('devicePresenter') const configPresenter = usePresenter('configPresenter') diff --git a/src/renderer/src/stores/settings.ts b/src/renderer/src/stores/settings.ts index 89cbc59bb..14916d2b4 100644 --- a/src/renderer/src/stores/settings.ts +++ b/src/renderer/src/stores/settings.ts @@ -81,10 +81,17 @@ export const useSettingsStore = defineStore('settings', () => { } // 如果没有找到匹配优先级的模型,返回第一个可用的模型 - if (enabledModels.value[0]?.models.length > 0) { + + const model = enabledModels.value + .flatMap((provider) => + provider.models.map((m) => ({ ...m, providerId: provider.providerId })) + ) + .find((m) => m.type === ModelType.Chat || m.type === ModelType.ImageGeneration) + + if (model) { return { - model: enabledModels.value[0].models[0], - providerId: enabledModels.value[0].providerId + model: model, + providerId: model.providerId } } From 124f0a1c57fd6580e4e50d8d77e710502280f9f7 Mon Sep 17 00:00:00 2001 From: hllshiro <40970081+hllshiro@users.noreply.github.com> Date: Wed, 18 Jun 2025 17:56:07 +0800 Subject: [PATCH 2/3] fix: remove unused 'tag' prop from ModelSelect component --- src/renderer/src/components/ModelSelect.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer/src/components/ModelSelect.vue b/src/renderer/src/components/ModelSelect.vue index f453a18e5..423dcafdb 100644 --- a/src/renderer/src/components/ModelSelect.vue +++ b/src/renderer/src/components/ModelSelect.vue @@ -62,7 +62,6 @@ const emit = defineEmits<{ const props = defineProps<{ type?: ModelType[] - tag?: string[] }>() const filteredProviders = computed(() => { From 36fa2619c8a17592823e5013c2ee5079f7a8cede Mon Sep 17 00:00:00 2001 From: hllshiro <40970081+hllshiro@users.noreply.github.com> Date: Wed, 18 Jun 2025 18:08:46 +0800 Subject: [PATCH 3/3] fix: improve prop type definition and default handling in ModelSelect component --- src/renderer/src/components/ModelSelect.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/renderer/src/components/ModelSelect.vue b/src/renderer/src/components/ModelSelect.vue index 423dcafdb..d31f5ae29 100644 --- a/src/renderer/src/components/ModelSelect.vue +++ b/src/renderer/src/components/ModelSelect.vue @@ -38,7 +38,7 @@