mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 06:54:41 +02:00
docs(stt): fix /no_think Qwen3 + instance embeddings :1238 (doc complète) (#14)
* feat(stt): mémoire long-terme sémantique via Qdrant (5b) Serveur : longterm.py — collection Qdrant stt-memory (embeddings Qwen3 gpu-01, dim auto, Cosine), recall top-k injecté au prompt, remember des tours user. Tout dégrade proprement si Qdrant/embeddings injoignables (la mémoire court-terme tient). Env STT_MEMORY_LONGTERM, STT_QDRANT_URL, STT_EMBED_URL, STT_MEMORY_TOPK. Testé en process : dégradation OK (Qdrant down → mem=0, pas de crash, court-terme tient). Qdrant réparé le 17/06 (5c). Recherche sémantique réelle à valider sur cluster. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT * feat(stt): endpoint /v1/memory/health + upsert Qdrant synchrone - /v1/memory/health sonde activement embeddings + Qdrant + collection et expose les erreurs (recall/remember dégradent en silence → indébogables). Permet de diagnostiquer la mémoire long-terme sans kubectl exec. - remember() : upsert avec ?wait=true → le souvenir est immédiatement cherchable (sans wait, Qdrant met l'écriture en file → un recall cross-session immédiat pouvait le rater). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT * docs(stt): 5b mémoire long-terme validée en prod + backlog nomic-embed-text - Rappel cross-session confirmé (« Felix » retrouvé dans une nouvelle session), points_count vérifié via /v1/memory/health. - Note du fix upsert ?wait=true et de l'endpoint de diagnostic. - Roadmap : 5d (nomic-embed-text dim 768) en backlog qualité ; états haut/bas du doc mis à jour (déployé + validé sur cible). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT * feat(stt): embeddings dédiés nomic-embed-text sur gpu-01 (:1238) + migration auto Remplace Qwen3 (chat réutilisé, dim 4096, peu discriminant) par un modèle d'embedding spécialisé nomic-embed-text (dim 768) pour la mémoire long-terme. Ansible (rôle llama_server) : - nouvelle instance optionnelle `llama-embed` (llama_embed_enabled) servant un modèle d'embedding dédié sur :1238, GPU ; télécharge le GGUF si absent. - activée sur gpu-01 (host_vars) : nomic-embed-text-v1.5 f16. STT-server : - STT_EMBED_URL → :1238, STT_EMBED_MODEL → nomic-embed-text (deployment + config). - _ensure_collection détecte le changement de dimension (4096→768) et recrée automatiquement la collection stt-memory (anciens vecteurs incomparables) — pas de drop manuel. Docs : llama_server README, rag.md, stt.md (5d ✅), CLAUDE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT * fix(stt): désactiver le mode thinking de Qwen3 (/no_think) — content vide / 502 Qwen3 est un modèle « thinking » : il dépensait tout le budget max_tokens en reasoning_content → content vide, ou partait en raisonnement long → timeout (502 "upstream LiteLLM : " avec message vide). Diagnostic : appel direct LiteLLM en 0.87s mais content="" et tout dans reasoning_content. - brain.py : ajoute le token de contrôle `/no_think` au system prompt (configurable STT_DISABLE_THINKING, défaut true ; inoffensif pour non-Qwen). - brain.py : filet de sécurité — si content vide, récupère reasoning_content au lieu de renvoyer "". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT * docs(stt): documenter le fix /no_think Qwen3 + instance embeddings :1238 - admin/ia/stt.md : caveat « thinking » Qwen3 (content vide / timeout 502) + fix /no_think + fallback reasoning_content ; roadmap 5e ; bannière. - stt/server/README.md : env STT_DISABLE_THINKING + section caveat Qwen3. - admin/ia/llama_server.md : 4e instance llama-embed :1238 (nomic, dim 768), double source d'embeddings (1234 Qwen3 / 1238 nomic), caveat thinking, correction dim Qwen3 (3584 → 4096). - admin/ia/litellm.md : cross-ref caveat thinking (concerne tous les consommateurs de hermes-default/qwen3). - ci : exclure **/*.md du trigger build-stt-server (doc-only ne rebuild plus). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
parent
703d6a9015
commit
870c28b43d
5 changed files with 62 additions and 7 deletions
|
|
@ -10,8 +10,9 @@ Objectif ultérieur : « agir sur le homelab » via les outils de Hermes (phase
|
|||
> technique (FRIDAY, etc.) — c'est juste un identifiant de répertoire/commande.
|
||||
|
||||
> ✅ **2026-06-17** — déployé in-cluster (ArgoCD), mémoire court-terme (5a) + long-terme (5b)
|
||||
> **validées sur cible** (rappel cross-session OK via `/v1/memory/health`). Reste : test audio
|
||||
> bout-en-bout sur le poste (phase 1), HUD avancé (4), auto-start (6), outils Hermes (7).
|
||||
> **validées sur cible**, embeddings dédiés nomic `:1238` (5d) + fix thinking Qwen3 `/no_think`
|
||||
> (5e). Reste : test audio bout-en-bout sur le poste (phase 1), HUD avancé (4), auto-start (6),
|
||||
> outils Hermes (7).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -82,6 +83,14 @@ switch global type `hermes-switch` (pas de restart, chaque client choisit le sie
|
|||
`GET /v1/models` liste le défaut + les alias autorisés. Noms courts client : `hermes`
|
||||
(=hermes-default), `qwen`, `claude` (=claude-sonnet-4-6), `opus`.
|
||||
|
||||
**Caveat Qwen3 — mode « thinking » (corrigé)** : Qwen3 est un modèle de raisonnement. Sans
|
||||
précaution, il dépense tout le budget `max_tokens` (200) dans `reasoning_content` → `content`
|
||||
**vide**, ou réfléchit trop longtemps → **timeout 502** (`upstream LiteLLM : ` au message vide —
|
||||
signature d'un timeout httpx). Diagnostiqué via appel direct LiteLLM : réponse en 0.87s mais
|
||||
`content=""` et tout dans `reasoning_content`. **Fix** : `brain.py` ajoute le token `/no_think`
|
||||
au prompt système (`STT_DISABLE_THINKING`, défaut `true` ; inoffensif hors Qwen) et récupère
|
||||
`reasoning_content` en filet de sécurité si `content` est vide. Caveat partagé : `admin/ia/llama_server.md`.
|
||||
|
||||
### La mémoire — côté serveur
|
||||
|
||||
- **Court-terme (5a, fait)** : le serveur garde l'historique par `session_id` (en mémoire,
|
||||
|
|
@ -155,9 +164,10 @@ Côté client, pilotable depuis `stt/client/config/` + l'écran de réglages du
|
|||
| **3 — Déploiement cluster** | image ghcr + manifests k8s + ArgoCD (LiteLLM en IP directe) | ✅ déployé |
|
||||
| **4 — HUD avancé** | visualiseur arc-reactor + thèmes + écran réglages | ⏳ |
|
||||
| **5a — Mémoire court-terme** | historique de session côté serveur | ✅ |
|
||||
| **5b — Mémoire long-terme** | Qdrant `stt-memory` + embeddings Qwen3 (dégrade si down) | ✅ validé 17/06 (rappel cross-session OK) |
|
||||
| **5b — Mémoire long-terme** | Qdrant `stt-memory` + embeddings (dégrade si down) | ✅ validé 17/06 (rappel cross-session OK) |
|
||||
| **5c — Réparation Qdrant** | drop `funk-docs` corrompu + restart (s01) | ✅ (17/06) |
|
||||
| **5d — Embeddings dédiés** | `nomic-embed-text` (dim 768) sur gpu-01 `:1238` → recherche plus précise | ✅ (rôle llama_server + migration auto collection) |
|
||||
| **5e — Fix thinking Qwen3** | `/no_think` (content vide / timeout 502) + fallback reasoning_content | ✅ (17/06) |
|
||||
| **6 — Auto-start client** | `install-service.sh` (systemd --user) + kiosk | ⏳ |
|
||||
| **7 — Outils Hermes** | « agir sur Funk » via gateway `:8080` (API à spécifier) | ⏳ |
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue