From 75f25d8a44d95db94dedccd50d2ad8d4fe396ab6 Mon Sep 17 00:00:00 2001 From: jwcrystal <121911854+jwcrystal@users.noreply.github.com> Date: Mon, 19 May 2025 20:49:13 +0800 Subject: [PATCH] feat: support default Quick Assistant model (#6150) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: support default Quick Assistant model - support the configuration of the quick assistant model. - manage the models independently in Quick Assistant and Default Assistant. * docs(i18n): Add translation for quick assistant model * fix(llm): fix the default value of quickAssistantModel to silicon[1] * refactor(i18n): uniformly the terms, changing "快速助手" to "快捷助手" --- src/renderer/src/hooks/useAssistant.ts | 8 ++-- src/renderer/src/i18n/locales/en-us.json | 2 + src/renderer/src/i18n/locales/ja-jp.json | 2 + src/renderer/src/i18n/locales/ru-ru.json | 2 + src/renderer/src/i18n/locales/zh-cn.json | 2 + src/renderer/src/i18n/locales/zh-tw.json | 2 + .../settings/ModelSettings/ModelSettings.tsx | 39 +++++++++++++++++-- src/renderer/src/store/llm.ts | 6 +++ .../src/windows/mini/home/HomeWindow.tsx | 8 ++-- 9 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/renderer/src/hooks/useAssistant.ts b/src/renderer/src/hooks/useAssistant.ts index 23b538b56a..dd2d47b89f 100644 --- a/src/renderer/src/hooks/useAssistant.ts +++ b/src/renderer/src/hooks/useAssistant.ts @@ -15,7 +15,7 @@ import { updateTopic, updateTopics } from '@renderer/store/assistants' -import { setDefaultModel, setTopicNamingModel, setTranslateModel } from '@renderer/store/llm' +import { setDefaultModel, setQuickAssistantModel, setTopicNamingModel, setTranslateModel } from '@renderer/store/llm' import { Assistant, AssistantSettings, Model, Topic } from '@renderer/types' import { useCallback, useMemo } from 'react' @@ -103,15 +103,17 @@ export function useDefaultAssistant() { } export function useDefaultModel() { - const { defaultModel, topicNamingModel, translateModel } = useAppSelector((state) => state.llm) + const { defaultModel, topicNamingModel, translateModel, quickAssistantModel } = useAppSelector((state) => state.llm) const dispatch = useAppDispatch() return { defaultModel, topicNamingModel, translateModel, + quickAssistantModel, setDefaultModel: (model: Model) => dispatch(setDefaultModel({ model })), setTopicNamingModel: (model: Model) => dispatch(setTopicNamingModel({ model })), - setTranslateModel: (model: Model) => dispatch(setTranslateModel({ model })) + setTranslateModel: (model: Model) => dispatch(setTranslateModel({ model })), + setQuickAssistantModel: (model: Model) => dispatch(setQuickAssistantModel({ model })) } } diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 17f2823664..6105225c17 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1472,6 +1472,8 @@ "models.translate_model_description": "Model used for translation service", "models.translate_model_prompt_message": "Please enter the translate model prompt", "models.translate_model_prompt_title": "Translate Model Prompt", + "models.quick_assistant_model": "Quick Assistant Model", + "models.quick_assistant_model_description": "Default model used by Quick Assistant", "moresetting": "More Settings", "moresetting.check.confirm": "Confirm Selection", "moresetting.check.warn": "Please be cautious when selecting this option. Incorrect selection may cause the model to malfunction!", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index badd3a8fb5..64d25446aa 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1468,6 +1468,8 @@ "models.translate_model_description": "翻訳サービスに使用されるモデル", "models.translate_model_prompt_message": "翻訳モデルのプロンプトを入力してください", "models.translate_model_prompt_title": "翻訳モデルのプロンプト", + "models.quick_assistant_model": "クイックアシスタントモデル", + "models.quick_assistant_model_description": "クイックアシスタントで使用されるデフォルトモデル", "moresetting": "詳細設定", "moresetting.check.confirm": "選択を確認", "moresetting.check.warn": "このオプションを選択する際は慎重に行ってください。誤った選択はモデルの誤動作を引き起こす可能性があります!", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index ad15202b9d..58e054928e 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1468,6 +1468,8 @@ "models.translate_model_description": "Модель, используемая для сервиса перевода", "models.translate_model_prompt_message": "Введите модель перевода", "models.translate_model_prompt_title": "Модель перевода", + "models.quick_assistant_model": "Модель быстрого помощника", + "models.quick_assistant_model_description": "Модель по умолчанию, используемая быстрым помощником", "moresetting": "Дополнительные настройки", "moresetting.check.confirm": "Подтвердить выбор", "moresetting.check.warn": "Пожалуйста, будьте осторожны при выборе этой опции. Неправильный выбор может привести к сбою в работе модели!", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index e5a95672e7..0f3d888ddb 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1472,6 +1472,8 @@ "models.translate_model_description": "翻译服务使用的模型", "models.translate_model_prompt_message": "请输入翻译模型提示词", "models.translate_model_prompt_title": "翻译模型提示词", + "models.quick_assistant_model": "快捷助手模型", + "models.quick_assistant_model_description": "快捷助手使用的默认模型", "moresetting": "更多设置", "moresetting.check.confirm": "确认勾选", "moresetting.check.warn": "请慎重勾选此选项,勾选错误会导致模型无法正常使用!!!", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 6081da329e..3ab86f1d42 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1471,6 +1471,8 @@ "models.translate_model_description": "翻譯服務使用的模型", "models.translate_model_prompt_message": "請輸入翻譯模型提示詞", "models.translate_model_prompt_title": "翻譯模型提示詞", + "models.quick_assistant_model": "快捷助手模型", + "models.quick_assistant_model_description": "快捷助手使用的預設模型", "moresetting": "更多設定", "moresetting.check.confirm": "確認勾選", "moresetting.check.warn": "請謹慎勾選此選項,勾選錯誤會導致模型無法正常使用!!!", diff --git a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx index bc79777e3a..1003c011d0 100644 --- a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx @@ -13,7 +13,7 @@ import { setTranslateModelPrompt } from '@renderer/store/settings' import { Model } from '@renderer/types' import { Button, Select, Tooltip } from 'antd' import { find, sortBy } from 'lodash' -import { FolderPen, Languages, MessageSquareMore, Settings2 } from 'lucide-react' +import { FolderPen, Languages, MessageSquareMore, Rocket, Settings2 } from 'lucide-react' import { FC, useMemo } from 'react' import { useTranslation } from 'react-i18next' @@ -22,8 +22,16 @@ import DefaultAssistantSettings from './DefaultAssistantSettings' import TopicNamingModalPopup from './TopicNamingModalPopup' const ModelSettings: FC = () => { - const { defaultModel, topicNamingModel, translateModel, setDefaultModel, setTopicNamingModel, setTranslateModel } = - useDefaultModel() + const { + defaultModel, + topicNamingModel, + translateModel, + quickAssistantModel, + setDefaultModel, + setTopicNamingModel, + setTranslateModel, + setQuickAssistantModel + } = useDefaultModel() const { providers } = useProviders() const allModels = providers.map((p) => p.models).flat() const { theme } = useTheme() @@ -60,6 +68,11 @@ const ModelSettings: FC = () => { [translateModel] ) + const defaultQuickAssistantModel = useMemo( + () => (hasModel(quickAssistantModel) ? getModelUniqId(quickAssistantModel) : undefined), + [quickAssistantModel] + ) + const onUpdateTranslateModel = async () => { const prompt = await PromptPopup.show({ title: t('settings.models.translate_model_prompt_title'), @@ -149,6 +162,26 @@ const ModelSettings: FC = () => { {t('settings.models.translate_model_description')} + + + + + {t('settings.models.quick_assistant_model')} + + + +