mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 05:44:43 +02:00
feat(stt): recherche web (SearXNG in-cluster) + fix cluster_status (#49)
Phase 2 d'Asa agentique : nouvel outil web_search adossé à un SearXNG self-host in-cluster, + correction du faux positif de cluster_status. - SearXNG (k8s/apps/searxng/) : Deployment + Service + ConfigMap settings.yml + IngressRoute searxng.lab.local, Application ArgoCD. Namespace ai, interne (l'outil tape http://searxng:8080). use_default_settings + search.formats inclut json (sinon API JSON 403) ; limiter/image_proxy off ; image pinnée ; conf copiée dans un emptyDir via initContainer (contourne le mount RO) ; PodSecurity restricted. - Outil web_search (tools._web_search) ajouté au contexte asa + STT_SEARXNG_URL. - fix(cluster_status) : les pods de CronJob TERMINÉS (Succeeded/Failed, ex. sacrifice-assign-renfort) comptaient comme « non prêts » → fausse alarme. Join kube_pod_status_phase{phase=~"Running |Pending"} (3 faux positifs → 0, validé in-cluster). - Serveur 0.8.0 ; doc stt.md + journal mis à jour. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
c9e89c91b9
commit
73b52cde2c
14 changed files with 270 additions and 16 deletions
|
|
@ -103,13 +103,25 @@ sur un contexte figé, Asa **décide elle-même** quels outils appeler (`tools.p
|
|||
partir de leurs résultats (`brain.ask_with_tools`, boucle bornée par `STT_TOOL_MAX_ITERS=4` ;
|
||||
au-delà, réponse forcée sans outils). C'est ce qui débloque les questions à **état live** sans
|
||||
présélection — ex. « gpu-01 tourne bien ? » → l'outil `host_health` est appelé → réponse réelle
|
||||
(avant : le RAG seul disait « la doc ne le précise pas »). Outils Phase 1, **LECTURE SEULE** :
|
||||
(avant : le RAG seul disait « la doc ne le précise pas »). Outils **LECTURE SEULE** (`tools.py`) :
|
||||
`search_docs` (RAG `funk-docs`), `host_health(gpu-01|storage-01)` (up/charge/RAM + llama-server,
|
||||
Prometheus), `cluster_status` (nœuds/pods), `prometheus_query(expr)` (PromQL arbitraire). Modèle
|
||||
**local** Qwen3-8B (le tool-calling natif de llama.cpp fonctionne, **même avec `/no_think`** —
|
||||
vérifié). Le `trace` des outils appelés est renvoyé dans `context` → visualiseur HUD (un bloc par
|
||||
appel). L'écriture (agir) reste au contexte `agent` ci-dessous (Phase 3 : la brancher comme outil).
|
||||
> Web search (SearXNG in-cluster) = Phase 2 ; actions admin pilotées par le LLM = Phase 3.
|
||||
Prometheus), `cluster_status` (nœuds/pods), `prometheus_query(expr)` (PromQL arbitraire), et
|
||||
**`web_search(query)`** (recherche INTERNET via SearXNG, **Phase 2**). Modèle **local** Qwen3-8B
|
||||
(le tool-calling natif de llama.cpp fonctionne, **même avec `/no_think`** — vérifié). Le `trace`
|
||||
des outils appelés est renvoyé dans `context` → visualiseur HUD (un bloc par appel). L'écriture
|
||||
(agir) reste au contexte `agent` ci-dessous (Phase 3 : la brancher comme outil).
|
||||
|
||||
> **`cluster_status`** filtre les pods **terminés** (CronJob Succeeded/Failed) via un join
|
||||
> `kube_pod_status_phase` → ne signale comme « non prêts » que les pods réellement actifs (sinon
|
||||
> les pods cron finis, ex. `sacrifice-assign-renfort`, déclenchaient une fausse alarme).
|
||||
|
||||
**SearXNG (recherche web in-cluster, Phase 2)** : méta-moteur self-host, manifests
|
||||
`k8s/apps/searxng/` (Deployment + Service + ConfigMap `settings.yml` + IngressRoute
|
||||
`searxng.lab.local`), Application ArgoCD `searxng`. Namespace `ai`, **interne** (l'outil tape
|
||||
`http://searxng:8080`). Points clés : `use_default_settings: true` (hérite des moteurs),
|
||||
**`search.formats` inclut `json`** (sinon l'API JSON renvoie 403), `limiter:false`/`image_proxy:false`
|
||||
(usage interne), image **pinnée**, conf copiée dans un emptyDir via initContainer (évite le mount RO).
|
||||
Outil = `STT_SEARXNG_URL` (`tools._web_search`). Actions admin pilotées par le LLM = **Phase 3**.
|
||||
|
||||
La réponse `/v1/ask` renvoie le **contexte assemblé** (`context`: system prompt + blocs live +
|
||||
extraits RAG + mémoire) → alimente le **visualiseur** du HUD (« voir ce qu'on envoie à Asa »).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue