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')}
+
+
+
+
+ {t('settings.models.quick_assistant_model_description')}
+
)
}
diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts
index 8bb70599b0..315dfc8fea 100644
--- a/src/renderer/src/store/llm.ts
+++ b/src/renderer/src/store/llm.ts
@@ -21,6 +21,7 @@ export interface LlmState {
defaultModel: Model
topicNamingModel: Model
translateModel: Model
+ quickAssistantModel: Model
settings: LlmSettings
}
@@ -483,6 +484,7 @@ const initialState: LlmState = {
defaultModel: SYSTEM_MODELS.silicon[1],
topicNamingModel: SYSTEM_MODELS.silicon[2],
translateModel: SYSTEM_MODELS.silicon[3],
+ quickAssistantModel: SYSTEM_MODELS.silicon[1],
providers: INITIAL_PROVIDERS,
settings: {
ollama: {
@@ -589,6 +591,9 @@ const llmSlice = createSlice({
setTranslateModel: (state, action: PayloadAction<{ model: Model }>) => {
state.translateModel = action.payload.model
},
+ setQuickAssistantModel: (state, action: PayloadAction<{ model: Model }>) => {
+ state.quickAssistantModel = action.payload.model
+ },
setOllamaKeepAliveTime: (state, action: PayloadAction) => {
state.settings.ollama.keepAliveTime = action.payload
},
@@ -626,6 +631,7 @@ export const {
setDefaultModel,
setTopicNamingModel,
setTranslateModel,
+ setQuickAssistantModel,
setOllamaKeepAliveTime,
setLMStudioKeepAliveTime,
setGPUStackKeepAliveTime,
diff --git a/src/renderer/src/windows/mini/home/HomeWindow.tsx b/src/renderer/src/windows/mini/home/HomeWindow.tsx
index f5f0171935..6b61903c3e 100644
--- a/src/renderer/src/windows/mini/home/HomeWindow.tsx
+++ b/src/renderer/src/windows/mini/home/HomeWindow.tsx
@@ -40,7 +40,9 @@ const HomeWindow: FC = () => {
const textChange = useState(() => {})[1]
const { defaultAssistant } = useDefaultAssistant()
const topic = defaultAssistant.topics[0]
- const { defaultModel: model } = useDefaultModel()
+ const { defaultModel, quickAssistantModel } = useDefaultModel()
+ // 如果 quickAssistantModel 未設定,則使用 defaultModel
+ const model = quickAssistantModel || defaultModel
const { language, readClipboardAtStartup, windowStyle, theme } = useSettings()
const { t } = useTranslation()
const inputBarRef = useRef(null)
@@ -182,7 +184,7 @@ const HomeWindow: FC = () => {
fetchChatCompletion({
messages: [userMessage],
- assistant: { ...assistant, model: getDefaultModel() },
+ assistant: { ...assistant, model: quickAssistantModel || getDefaultModel() },
onChunkReceived: (chunk: Chunk) => {
if (chunk.type === ChunkType.TEXT_DELTA) {
blockContent += chunk.text
@@ -219,7 +221,7 @@ const HomeWindow: FC = () => {
setIsFirstMessage(false)
setText('') // ✅ 清除输入框内容
},
- [content, defaultAssistant, topic]
+ [content, defaultAssistant, topic, quickAssistantModel]
)
const clearClipboard = () => {