mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-18 12:46:56 +02:00
Presets externes : vision, compactage, bench et badge pour une API distante
La reprise faite en parallèle sur l'autre branche (b667fd4, jamais poussée) couvrait des trous de celle-ci. Ses ajouts, posés sur la version en place : - chat_template_kwargs, propre à llama.cpp, ne part plus vers une API distante — ni au chat ni au résumé de compactage. Une API stricte (OpenAI) répond 400 à un argument inconnu : toute compaction échouait. - Vision : case « le modèle accepte les images » (EXTERNAL_VISION) dans la fenêtre API externe. Elle remplace, en externe, MMPROJ et la sonde /props : un modèle distant multimodal ne pouvait jamais recevoir d'image. - Le benchmark refuse de tourner sur un preset externe : healthCheck le dit prêt sans moteur, et la mesure tapait un port arrêté ou un moteur resté en vie, attribuée à tort à ce preset. - Le badge de modèle des réponses porte le nom du modèle distant. - Éditer le preset en service l'applique aussitôt (SavePresetApplying). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
48b8193dca
commit
2db0ecd431
12 files changed
+124
-17
No files matched your search
@@ -49,6 +49,7 @@ func handlePresetExternal(w http.ResponseWriter, r *http.Request) {
|
||||
"model": strings.TrimSpace(cfg[extKeyModel]),
|
||||
"ctx": strings.TrimSpace(cfg["CTX"]),
|
||||
"hasKey": strings.TrimSpace(cfg[extKeyToken]) != "",
|
||||
"vision": strings.TrimSpace(cfg[extKeyVision]) == "1",
|
||||
})
|
||||
}
|
||||
|
||||
@@ -63,6 +64,7 @@ type externalSaveReq struct {
|
||||
Key string `json:"key"`
|
||||
Ctx string `json:"ctx"` // taille de contexte (clé CTX), optionnelle
|
||||
KeyTouched bool `json:"keyTouched"` // l'utilisateur a modifié le champ clé
|
||||
Vision bool `json:"vision"` // le modèle distant accepte les images
|
||||
}
|
||||
|
||||
func handlePresetExternalSave(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -94,13 +96,15 @@ func handlePresetExternalSave(w http.ResponseWriter, r *http.Request) {
|
||||
key = strings.TrimSpace(parseEnv(content)[extKeyToken])
|
||||
}
|
||||
}
|
||||
content := externalPresetContent(req.URL, req.Model, key, req.Ctx)
|
||||
newID, err := SavePreset(req.ID, req.Name, content)
|
||||
content := externalPresetContent(req.URL, req.Model, key, req.Ctx, req.Vision)
|
||||
// Éditer le preset EN SERVICE l'applique tout de suite : sans ça, une URL ou
|
||||
// une clé corrigée ne servait qu'après une bascule aller-retour.
|
||||
newID, applied, err := SavePresetApplying(req.ID, req.Name, content)
|
||||
if err != nil {
|
||||
sendJSON(w, 400, map[string]any{"ok": false, "error": err.Error()})
|
||||
return
|
||||
}
|
||||
sendJSON(w, 200, map[string]any{"ok": true, "id": newID, "name": req.Name})
|
||||
sendJSON(w, 200, map[string]any{"ok": true, "id": newID, "name": req.Name, "applied": applied})
|
||||
}
|
||||
|
||||
// handlePresetExternalTest tente un appel de complétion minimal vers l'endpoint
|
||||
|
||||
Reference in new issue
Block a user