From d9823081377d3ee8d8a457a6c41ee6bb5f26ef69 Mon Sep 17 00:00:00 2001 From: ALI YESILKAYA Date: Sat, 20 Jun 2026 12:17:29 +0200 Subject: [PATCH] =?UTF-8?q?feat(stt-server):=20grounding=20strict=20?= =?UTF-8?q?=E2=80=94=20dire=20"doc=20ne=20le=20pr=C3=A9cise=20pas"=20au=20?= =?UTF-8?q?lieu=20d'inventer=20(#29)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sur un sujet absent de la doc Funk, le 8B comblait le vide en devinant (« j'ai un switch ? » → tantôt « Oui » tantôt « Non », fausse assurance). Le grounding marche (docs=6) mais la doc n'a rien à ancrer. - config.py : system_prompt durci — si la doc ne mentionne PAS explicitement l'élément, répondre « la doc Funk ne le précise pas », ne jamais affirmer oui/non par déduction ni inventer de détail (modèle, marque, nombre, nom). - admin/infra/reseau.md : section « Topologie physique — switch cluster » (switch présent, modèle à confirmer) → comble le gap doc qui causait l'hallucination sur le matériel réseau. - bump 0.3.0 → 0.3.1 Co-authored-by: Claude Opus 4.8 --- admin/infra/reseau.md | 31 +++++++++++++++++++++++++++++++ stt/server/pyproject.toml | 2 +- stt/server/stt_server/__init__.py | 2 +- stt/server/stt_server/config.py | 8 +++++--- 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/admin/infra/reseau.md b/admin/infra/reseau.md index 659974e..71e1b12 100644 --- a/admin/infra/reseau.md +++ b/admin/infra/reseau.md @@ -16,6 +16,37 @@ Tout ce qui suit s'exécute sur **storage-01** sauf mention contraire. --- +## Topologie physique — switch cluster + +Le LAN cluster `192.168.10.0/24` repose sur **un switch Ethernet physique**. storage-01 +n'a qu'une seule interface côté cluster (`enp6s0f3u2c2`, `192.168.10.1`) : elle ne peut +pas relier 4 machines en direct, donc un switch fait le fan-out. + +``` +Freebox (192.168.1.0/24, WAN domestique) + │ enp4s0 (192.168.1.200) +storage-01 ── enp6s0f3u2c2 (192.168.10.1) + │ +[ SWITCH cluster ] ← switch physique (modèle à confirmer) + ├── gpu-01 192.168.10.20 + ├── compute-01 192.168.10.11 + ├── compute-02 192.168.10.12 + └── compute-03 192.168.10.13 +``` + +| Élément | Valeur | +|---|---| +| Présence d'un switch | **Oui** — indispensable au câblage (1 NIC cluster sur storage-01 ↔ 4 machines) | +| Modèle / marque | ⚠️ **non documenté** — à relever physiquement (étiquette au dos) | +| Type (managé / non-managé) | à confirmer | +| Nb de ports utilisés | ≥ 5 (storage-01 + gpu-01 + 3 compute) | +| Managé ? | inconnu — pas de VLAN ni LACP configuré côté Talos/storage-01 à ce jour | + +> À compléter : noter la référence exacte du switch (mod. + ports) lors d'un prochain +> passage physique au cluster. Le reste de la topologie L3 (routage, NAT) est ci-dessous. + +--- + ## Route statique poste perso Pour atteindre le LAN cluster depuis le poste (`192.168.1.10`) : diff --git a/stt/server/pyproject.toml b/stt/server/pyproject.toml index b8e5fc2..9c1b21b 100644 --- a/stt/server/pyproject.toml +++ b/stt/server/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "stt-server" -version = "0.3.0" +version = "0.3.1" description = "STT-server — orchestrateur AI du homelab Funk (API pour les clients STT)" requires-python = ">=3.11" diff --git a/stt/server/stt_server/__init__.py b/stt/server/stt_server/__init__.py index 9e6f9b0..5e37c1d 100644 --- a/stt/server/stt_server/__init__.py +++ b/stt/server/stt_server/__init__.py @@ -1,3 +1,3 @@ """STT-server — orchestrateur AI in-cluster pour les clients STT.""" -__version__ = "0.3.0" +__version__ = "0.3.1" diff --git a/stt/server/stt_server/config.py b/stt/server/stt_server/config.py index ae7f3aa..2718901 100644 --- a/stt/server/stt_server/config.py +++ b/stt/server/stt_server/config.py @@ -27,9 +27,11 @@ class Settings: "Tu es Hermes, l'assistant vocal du homelab Funk. " "Réponds toujours en français, de façon concise (2-3 phrases maximum), " "sans markdown ni listes. " - "Pour toute question sur Funk (cluster, machines, services, configuration), appuie-toi " - "EXCLUSIVEMENT sur la documentation fournie ci-dessous ; si l'information ne s'y " - "trouve pas, dis-le franchement plutôt que d'inventer.", + "Pour toute question sur Funk (cluster, machines, services, matériel, configuration), " + "appuie-toi EXCLUSIVEMENT sur la documentation fournie ci-dessous. " + "Règle stricte : si la doc ne mentionne pas explicitement l'élément demandé, réponds " + "« la doc Funk ne le précise pas » — n'affirme JAMAIS un oui ni un non par déduction, " + "et n'invente aucun détail (modèle, marque, nombre, nom).", ) max_tokens: int = int(os.getenv("STT_MAX_TOKENS", "200")) temperature: float = float(os.getenv("STT_TEMPERATURE", "0.7"))