From 3d7be5888e9fb64f7d761b2ed51154d73f4a8a2a Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Mon, 2 Mar 2026 18:41:49 -0500 Subject: [PATCH] Remove intent model entirely; quick-capture uses primary model The separate intent model (OLLAMA_INTENT_MODEL / qwen2.5:7b) is removed from every part of the system. All classification now uses the primary model. Changes: - config.py: remove OLLAMA_INTENT_MODEL - intent.py: remove classify_intent() and all supporting infrastructure (_SYSTEM_PROMPT_TEMPLATE, _RESEARCH_PREFIX, _PRIOR_WORK_REFS); file now only contains the quick-capture classifier - quick_capture.py: classify_capture_intent() now called with Config.OLLAMA_MODEL - generation_task.py: remove intent_model_setting DB lookup and get_setting import; history summarization and research pipeline use the primary model directly - research.py: remove intent_model parameter from run_research_pipeline() and _generate_sub_queries(); both use the model param throughout - routes/settings.py: remove intent_model from model-key validation and response - app.py: remove intent model pre-warming at startup - SettingsView.vue: remove Intent Model selector and related refs/state Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/views/SettingsView.vue | 15 +- src/fabledassistant/app.py | 10 +- src/fabledassistant/config.py | 3 - src/fabledassistant/routes/quick_capture.py | 9 +- src/fabledassistant/routes/settings.py | 16 +- .../services/generation_task.py | 17 +- src/fabledassistant/services/intent.py | 170 +----------------- src/fabledassistant/services/research.py | 9 +- 8 files changed, 26 insertions(+), 223 deletions(-) diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index f55d30c..e27e31c 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -10,10 +10,8 @@ const authStore = useAuthStore(); const toastStore = useToastStore(); const assistantName = ref(""); const defaultModel = ref(""); -const intentModel = ref(""); const installedModels = ref([]); const defaultChatModel = ref(""); -const defaultIntentModel = ref(""); const newEmail = ref(""); const emailPassword = ref(""); const changingEmail = ref(false); @@ -80,10 +78,9 @@ onMounted(async () => { // Load installed models and configured defaults try { - const modelsData = await apiGet<{ models: string[]; default_chat_model: string; default_intent_model: string }>("/api/settings/models"); + const modelsData = await apiGet<{ models: string[]; default_chat_model: string }>("/api/settings/models"); installedModels.value = modelsData.models; defaultChatModel.value = modelsData.default_chat_model; - defaultIntentModel.value = modelsData.default_intent_model; } catch { // Ollama unreachable — dropdowns will be empty } @@ -91,7 +88,6 @@ onMounted(async () => { // Load notification preferences from user settings const allSettings = await apiGet>("/api/settings"); defaultModel.value = allSettings.default_model ?? ""; - intentModel.value = allSettings.intent_model ?? ""; if (allSettings.notify_task_reminders !== undefined) { notifyTaskReminders.value = allSettings.notify_task_reminders !== "false"; } @@ -190,7 +186,6 @@ async function saveAssistant() { await store.updateSettings({ assistant_name: assistantName.value.trim() || "Fable", default_model: defaultModel.value, - intent_model: intentModel.value, }); saved.value = true; setTimeout(() => (saved.value = false), 2000); @@ -414,14 +409,6 @@ function hostname(url: string): string {

Model used for new conversations.

-
- - -

Smaller/faster model for intent routing before the main model.

-