feat(ai): pre-fill qwen2.5:7b when Ollama is selected — 0.27.1

Selecting the Ollama provider pre-fills the model field with the suggested
qwen2.5:7b (fits an 8 GB GPU at Q4; grounding makes a 7B sufficient). Won't
overwrite a model the user already typed. Constant ai.OLLAMA_SUGGESTED_MODEL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-22 13:25:04 +02:00
parent 2ff4056d89
commit e6d94fbd59
5 changed files with 16 additions and 4 deletions
+6
View File
@@ -5,6 +5,12 @@ All notable changes to RigDoctor are recorded here. Format follows
(`MAJOR.MINOR.PATCH`, pre-1.0). `__version__` and `pyproject.toml` must match the git (`MAJOR.MINOR.PATCH`, pre-1.0). `__version__` and `pyproject.toml` must match the git
release tag (so the auto-updater, D18, can compare versions). release tag (so the auto-updater, D18, can compare versions).
## [0.27.1] - 2026-05-22
### Changed
- AI assistant: selecting **Ollama** now pre-fills the model field with **`qwen2.5:7b`** (a
strong 7B that fits an 8 GB GPU; our grounding makes a 7B sufficient). It won't overwrite a
model you've already entered, and you can change it freely.
## [0.27.0] - 2026-05-22 ## [0.27.0] - 2026-05-22
### Added ### Added
- **AI assistant (M14, D24)** — optional, **strictly opt-in, never automatic**. Explains your - **AI assistant (M14, D24)** — optional, **strictly opt-in, never automatic**. Explains your
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "rigdoctor" name = "rigdoctor"
version = "0.27.0" version = "0.27.1"
description = "Modular hardware monitoring & crash diagnostics for Linux gamers." description = "Modular hardware monitoring & crash diagnostics for Linux gamers."
readme = "README.md" readme = "README.md"
requires-python = ">=3.11" requires-python = ">=3.11"
+1 -1
View File
@@ -1,3 +1,3 @@
"""RigDoctor — modular hardware monitoring & crash diagnostics for Linux gamers.""" """RigDoctor — modular hardware monitoring & crash diagnostics for Linux gamers."""
__version__ = "0.27.0" __version__ = "0.27.1"
+3
View File
@@ -24,6 +24,9 @@ from . import ai_knowledge
PROVIDERS = ("ollama", "claude") PROVIDERS = ("ollama", "claude")
OLLAMA_DEFAULT_ENDPOINT = "http://localhost:11434" OLLAMA_DEFAULT_ENDPOINT = "http://localhost:11434"
# Suggested Ollama model — strong instruction-following that fits an 8 GB GPU at Q4. Because we
# ground the prompt with reference facts, a 7B model is sufficient here.
OLLAMA_SUGGESTED_MODEL = "qwen2.5:7b"
CLAUDE_ENDPOINT = "https://api.anthropic.com/v1/messages" CLAUDE_ENDPOINT = "https://api.anthropic.com/v1/messages"
CLAUDE_DEFAULT_MODEL = "claude-opus-4-7" CLAUDE_DEFAULT_MODEL = "claude-opus-4-7"
CLAUDE_MAX_TOKENS = 2000 CLAUDE_MAX_TOKENS = 2000
+5 -2
View File
@@ -27,7 +27,7 @@ from PySide6.QtWidgets import (
) )
from .. import config from .. import config
from ..core import alerts, installer, service, sysenv, uninstall, updates from ..core import ai, alerts, installer, service, sysenv, uninstall, updates
from .theme import GOOD, MUTED, WARN from .theme import GOOD, MUTED, WARN
@@ -188,7 +188,8 @@ class SetupPage(QWidget):
ai_layout.addLayout(prov_row) ai_layout.addLayout(prov_row)
self._ai_model = QLineEdit() self._ai_model = QLineEdit()
self._ai_model.setPlaceholderText("Model (e.g. llama3.1 for Ollama; blank = Claude default)") self._ai_model.setPlaceholderText(
f"Model (e.g. {ai.OLLAMA_SUGGESTED_MODEL} for Ollama; blank = Claude default)")
ai_layout.addWidget(self._ai_model) ai_layout.addWidget(self._ai_model)
self._ai_endpoint = QLineEdit() self._ai_endpoint = QLineEdit()
self._ai_endpoint.setPlaceholderText("Ollama server URL (default http://localhost:11434)") self._ai_endpoint.setPlaceholderText("Ollama server URL (default http://localhost:11434)")
@@ -286,6 +287,8 @@ class SetupPage(QWidget):
self._ai_endpoint.setVisible(prov == "ollama") self._ai_endpoint.setVisible(prov == "ollama")
self._ai_key.setVisible(prov == "claude") self._ai_key.setVisible(prov == "claude")
self._ai_test_btn.setEnabled(prov != "") self._ai_test_btn.setEnabled(prov != "")
if prov == "ollama" and not self._ai_model.text().strip():
self._ai_model.setText(ai.OLLAMA_SUGGESTED_MODEL) # suggested default; user can change
def _save_ai(self) -> None: def _save_ai(self) -> None:
prov = self._ai_provider() prov = self._ai_provider()