mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-23 06:58:14 +02:00
Chat : les images ne sont plus réécrites en base64 à chaque tour
Repris d'AJEAN 0.15.7 (chat_images.go et son test), adapté. Une image jointe (ou une capture de web_screenshot) vivait en base64 dans les messages de la conversation, et persist() réécrit la conversation ENTIÈRE à chaque fin de tour : une photo de téléphone, c'étaient des Mo remis sur disque à chaque réponse. Elle est désormais rangée une fois sous $LOKI_HOME/chatimg/<empreinte>.<ext> (hors du dossier de travail, que l'IA peut vider) ; l'historique n'en garde que « loki-img:<nom> ». Juste avant l'envoi, expandImageRefs remet les octets exacts (cache mémoire borné à 64 Mo) : pour le modèle, rien ne change. DEUX ÉCARTS AVEC L'AMONT - Copie à l'écriture : l'amont remplace l'URL en place. Chez nous, persist peut tourner pendant qu'un runChat sérialise ces mêmes maps (compactage en vol, bascule de projet) — « concurrent map read and map write », fatal. Les parties modifiées sont donc recopiées. - Le rechargement reste éphémère : stripImageParts retire toujours les images d'une conversation rouverte (garde-fou contre un modèle sans vision qui lirait le base64 comme du texte). L'amont, lui, les garde ; on pourra le suivre plus tard si l'on veut. Pas de migration des archives : une conversation rouverte est allégée par stripImageParts, comme avant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1db987844e
commit
f7a4ee71e7
4 files changed
+283
-1
No files matched your search
@@ -960,7 +960,9 @@ func runChat(ctx context.Context, messages []Message, temperature float64, caps
|
||||
"model": ep.Model,
|
||||
// Normalisé juste avant l'envoi : un seul système, en tête. Les gabarits
|
||||
// stricts (Qwen3.x) refusent un système ailleurs qu'en position 0.
|
||||
"messages": normalizeSystemMessages(messages),
|
||||
// Les images de l'historique y sont rangées par référence
|
||||
// (chat_images.go) : on remet leurs octets juste avant l'envoi.
|
||||
"messages": expandImageRefs(normalizeSystemMessages(messages)),
|
||||
"stream": true,
|
||||
"temperature": temperature,
|
||||
// include_usage → chunk final avec `usage.prompt_tokens` = taille TOTALE
|
||||
|
||||
Reference in new issue
Block a user