v0.5.2 : robustesse appels d'outils + nettoyage UI

- Chat : valide le JSON des arguments d'outil avant de les stocker dans
  l'historique. Un modèle très quantifié pouvait émettre des arguments
  tronqués/non-JSON (non vides) qui, persistés, faisaient échouer le template
  de chat de llama.cpp à chaque requête → 500 en boucle jusqu'au reset.
  json.Valid remplace le simple test != "" (llm_client.go).
- UI : section « Accès OpenAI » remise au propre (adresses locale/publique
  groupées, clé API), sans émojis ; « Accès distant » sans émojis. Classes
  .io-input/.io-cap partagées.
This commit is contained in:
nathaninline committed 2026-07-24 17:06:13 +02:00
1 parent d8b08dbb89
commit 142dd87299
9 files changed
+73 -51

No files matched your search

+9 -1
View File
@@ -679,7 +679,15 @@ func runChat(ctx context.Context, messages []Message, temperature float64, caps
if tc.ID == "" {
tc.ID = fmt.Sprintf("call_%d_%d", iter, i)
}
if tc.Function.Arguments == "" {
// Les arguments DOIVENT être du JSON valide : ils sont rangés dans
// l'historique vu par le modèle, et le template de chat de llama.cpp les
// re-parse à CHAQUE requête suivante. Un modèle très quantifié peut sortir
// des arguments vides OU tronqués/non-JSON (ex: `{"command":"python3 …`) ;
// stockés tels quels, ils font échouer le parsing du template → 500 en
// boucle jusqu'au reset. On neutralise tout ce qui n'est pas du JSON valide
// en objet vide (l'appel a de toute façon déjà été exécuté). json.Valid("")
// étant faux, ça couvre aussi le cas vide d'origine.
if !json.Valid([]byte(tc.Function.Arguments)) {
tc.Function.Arguments = "{}"
}
tcs = append(tcs, tc)