mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 13:44:42 +02:00
feat(stt): Asa agentique — boucle d'outils (function calling, Phase 1) (#48)
Asa ne répondait qu'à partir d'un contexte figé (RAG doc ou blocs live pré-câblés, à présélectionner) → les questions à état live (« gpu-01 tourne bien ? ») tombaient sur « la doc ne le précise pas ». Bascule vers une boucle de function-calling : le modèle décide quels outils appeler puis répond à partir de leurs résultats. - Nouveau contexte `asa` (STT_DEFAULT_CONTEXT=asa, défaut prod) + tools.py (registre schémas OpenAI + exécuteurs) + brain.ask_with_tools (boucle bornée STT_TOOL_MAX_ITERS=4, réponse forcée au-delà ; _post factorisé + retry). - Outils Phase 1, LECTURE SEULE : search_docs (RAG funk-docs), host_health (gpu-01|storage-01 : up/charge/RAM + llama-server), cluster_status, prometheus_query (PromQL arbitraire). Réutilisent sources.py / knowledge.py. - Trace des outils renvoyée dans `context` → visualiseur HUD (un bloc par appel). - 100 % local (Qwen3-8B) : tool-calling natif llama.cpp validé, survit au /no_think. LiteLLM transmet bien les tools. PromQL validés contre le vrai Prometheus in-cluster. 3 tests unitaires de la boucle (hors-ligne). Web search (SearXNG in-cluster) = Phase 2 ; actions admin pilotées par le LLM (hermes-exec comme outil) = Phase 3. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
de1cd6c407
commit
7cafc06069
11 changed files with 566 additions and 42 deletions
|
|
@ -64,8 +64,30 @@ et le **fix du batch embed** (`llama-embed` ubatch 512 → 2048). Détail : `pro
|
|||
IaC** : `rocm_rhel_version` 9.4 → 9.7, `llama_server_commit` pinné, pièges documentés dans les
|
||||
README de rôle. (PR `fix/gpu-apply-amdgpu-repo-and-commit-pin`.)
|
||||
|
||||
## Asa agentique — boucle d'outils / function calling (Phase 1)
|
||||
|
||||
Asa ne répondait qu'à partir d'un contexte **figé** (RAG doc ou blocs live pré-câblés, à
|
||||
présélectionner) → « gpu-01 tourne bien ? » tombait sur « la doc ne le précise pas » (état live
|
||||
absent de la doc). Bascule vers une **boucle de function-calling** : le modèle décide quels outils
|
||||
appeler, puis répond à partir des résultats.
|
||||
|
||||
- **Validé empiriquement avant de coder** : Qwen3-8B via llama.cpp fait du tool-calling natif
|
||||
(pas besoin de `--jinja`), LiteLLM transmet bien les `tools`, et le tool-calling **survit au
|
||||
`/no_think`**. → 100 % local, pas d'escalade Claude (choix utilisateur).
|
||||
- **Nouveau contexte `asa`** (`STT_DEFAULT_CONTEXT=asa`, défaut prod) + `tools.py` (registre
|
||||
schémas + exécuteurs) + `brain.ask_with_tools` (boucle bornée `STT_TOOL_MAX_ITERS=4`, réponse
|
||||
forcée au-delà). Outils **Phase 1, lecture seule** : `search_docs`, `host_health`,
|
||||
`cluster_status`, `prometheus_query`. Trace des outils → visualiseur HUD.
|
||||
- **PromQL validés** contre le vrai Prometheus in-cluster (labels `gpu-01-node`/`storage-01`/
|
||||
`llama-server-gpu` confirmés ; up/load/mem renvoient des données réelles). 3 tests unitaires de
|
||||
la boucle (hors-ligne). (PR `feat/asa-tool-loop`.)
|
||||
- **Choix** : web search = **SearXNG in-cluster** (Phase 2) ; modèle = **local uniquement**.
|
||||
|
||||
## Prochaines étapes
|
||||
|
||||
- **Phase 2** — outil `web_search` (SearXNG self-host in-cluster, namespace `ai`, ArgoCD).
|
||||
- **Phase 3** — outil `admin_action` (écriture) : brancher `hermes-exec` comme outil piloté par le
|
||||
LLM, avec le handshake de confirmation vocale existant.
|
||||
- Enrichir `host_health`/`cluster_status` (GPU via `rocm_scraper`, fs, températures) si utile.
|
||||
- Si le wake word « asa » génère des faux positifs/négatifs, ajuster `wake_aliases`.
|
||||
- **1er test d'action vocale** (#43, contexte 🤖 Agent → `hermes-exec`).
|
||||
- Vérifier qu'un `make apply-gpu` **complet** repasse vert (repo amdgpu sain) à la prochaine occasion.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue