mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
- module github.com/R0m1k3/Loki, cmd/loki, internal/loki (package loki) - LOKI_HOME, LOKI_MODEL_DIRS, LOKI_SERVICE, LOKI_DL_CONNS ; /etc/loki ; units loki-engine / loki-ui ; binaire et aide CLI - updateRepo pointe sur R0m1k3/Loki (l'auto-update ne tirera plus les binaires AJEAN amont) Conservé à l'identique : le domaine ajean.link (service de tunnel amont), les littéraux de migration 0.7.x (migrate_07.go), RELEASE_NOTES.md et LICENSE (historique et licence de l'amont). go build/vet/test : verts.
48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
// web_sysprompt.go — prompt système personnalisé de l'utilisateur, persisté
|
|
// CÔTÉ SERVEUR (en base) et partagé entre appareils, comme la conversation
|
|
// elle-même. Historique : avant la conversation serveur (v0.4.x),
|
|
// l'UI envoyait son prompt système dans chaque requête /api/chat ; depuis,
|
|
// /api/chat/send ne porte que le message → le champ de l'UI n'avait plus aucun
|
|
// effet. Il est maintenant lu ici par la génération (chat_conversation.go), et
|
|
// InjectSkills (llm_client.go) le fusionne avec le préambule agent.
|
|
package loki
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
// readSysPrompt renvoie le prompt système personnalisé ("" si absent).
|
|
func readSysPrompt() string { return getStr(bkState, "sysprompt") }
|
|
|
|
func saveSysPrompt(text string) error {
|
|
return putStr(bkState, "sysprompt", strings.TrimSpace(text))
|
|
}
|
|
|
|
// handleSysPrompt :
|
|
//
|
|
// GET → {ok, text}
|
|
// POST {text} → enregistre ("" = efface) puis renvoie {ok, text}
|
|
func handleSysPrompt(w http.ResponseWriter, r *http.Request) {
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
sendJSON(w, 200, map[string]any{"ok": true, "text": readSysPrompt()})
|
|
case http.MethodPost:
|
|
var body struct {
|
|
Text string `json:"text"`
|
|
}
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
sendJSON(w, 400, map[string]any{"ok": false, "error": err.Error()})
|
|
return
|
|
}
|
|
if err := saveSysPrompt(body.Text); err != nil {
|
|
sendJSON(w, 500, map[string]any{"ok": false, "error": err.Error()})
|
|
return
|
|
}
|
|
sendJSON(w, 200, map[string]any{"ok": true, "text": readSysPrompt()})
|
|
default:
|
|
sendJSON(w, 405, map[string]any{"ok": false, "error": "méthode non autorisée"})
|
|
}
|
|
}
|