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 <noreply@anthropic.com>
This commit is contained in:
2026-03-02 18:41:49 -05:00
parent 53e54ea761
commit 3d7be5888e
8 changed files with 26 additions and 223 deletions
+2 -8
View File
@@ -131,15 +131,9 @@ def create_app() -> Quart:
except Exception:
logger.warning("Failed to warm model '%s'", model, exc_info=True)
# Pull main model and (if configured) a separate intent model concurrently,
# then warm them into VRAM so the first user request doesn't cold-load both
# simultaneously (which causes Ollama 500 races).
# Fire-and-forget so pulls/warming don't block startup.
# Pull and warm the main model into VRAM at startup so the first request is fast.
asyncio.create_task(_pull_model(Config.OLLAMA_MODEL, warm=True))
models_to_warm = {Config.OLLAMA_MODEL}
if Config.OLLAMA_INTENT_MODEL and Config.OLLAMA_INTENT_MODEL != Config.OLLAMA_MODEL:
models_to_warm.add(Config.OLLAMA_INTENT_MODEL)
for _model in models_to_warm:
asyncio.create_task(_pull_model(_model, warm=True))
# Also pull the embedding model (nomic-embed-text by default), but no need to warm it.
if Config.EMBEDDING_MODEL not in models_to_warm:
asyncio.create_task(_pull_model(Config.EMBEDDING_MODEL, warm=False))