fix(llm): sessionReset natif corrigé (archi hybride) — reset de borne propre — v0.1.8
Bug : sessionReset()+sessionAsk() renvoyait VIDE. Cause = q35-lmq4 est l'archi hybride Qwen3.5 (DeltaNet/SSM) ; llama_memory_seq_rm d'un suffixe « Returns false if a partial sequence cannot be removed » (l'état récurrent ne se rembobine pas partiellement). Le code ignorait ce retour → KV incohérent → tour suivant vide. Fix natif (kazeia-engine dist/jni/kazeia_engine_jni.cpp, .so rebuildé CPU-only, drop-in) : sessionReset teste le retour de seq_rm ; s'il échoue (récurrent/ hybride) → reset COMPLET (llama_memory_clear + re-prefill du system mémorisé) + llama_sampler_reset. sessionStart mémorise désormais les tokens system. App : EngineLlmAdapter.resetSession() rebascule sur le session.reset() natif (au lieu du contournement newSession). Validé device : après reset, le tour n'est plus vide ET la mémoire est effacée (ne connaît plus le prénom), prefill ~285ms, decode ~17 tok/s, tours suivants OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8d548b1ca6
commit
b822974b99
|
|
@ -44,8 +44,8 @@ android {
|
||||||
applicationId = "com.kazeia"
|
applicationId = "com.kazeia"
|
||||||
minSdk = 28
|
minSdk = 28
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 8
|
versionCode = 9
|
||||||
versionName = "0.1.7"
|
versionName = "0.1.8"
|
||||||
|
|
||||||
// WebDAV de distribution — injecté depuis local.properties.
|
// WebDAV de distribution — injecté depuis local.properties.
|
||||||
buildConfigField("String", "WEBDAV_BASE", "\"${localProp("webdav.base")}\"")
|
buildConfigField("String", "WEBDAV_BASE", "\"${localProp("webdav.base")}\"")
|
||||||
|
|
|
||||||
|
|
@ -86,15 +86,12 @@ class EngineLlmAdapter(
|
||||||
GenerationResult(out, n, ms, st.decodeTokPerSec.toFloat())
|
GenerationResult(out, n, ms, st.decodeTokPerSec.toFloat())
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Démarre une conversation VIERGE : recrée la session (re-prefille le system,
|
/** Démarre une conversation VIERGE (garde le system prefillé). À appeler aux
|
||||||
* vide l'historique KV). À appeler aux bornes de conversation (changement de
|
* bornes de conversation (changement de patient, effacement du chat) — sinon
|
||||||
* patient, effacement du chat) — sinon la mémoire d'un patient fuiterait vers
|
* la mémoire d'un patient fuiterait vers le suivant. sessionReset natif corrigé
|
||||||
* le suivant. Recrée plutôt que d'appeler sessionReset() (bug natif : reset+ask
|
* 2026-06-15 (clear + re-prefill system sur archi hybride où le rewind partiel
|
||||||
* renvoie vide, n_past non restauré — à corriger côté engine). */
|
* échoue), donc on l'utilise directement. */
|
||||||
fun resetSession() {
|
fun resetSession() { session?.reset() }
|
||||||
val e = engine ?: return
|
|
||||||
if (!plainChatml) session = e.newSession(systemPrompt)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun release() { session = null; engine?.release(); engine = null }
|
override fun release() { session = null; engine?.release(); engine = null }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ d49b53137f478b7b4ccbd58b9166d83e832c299b681609c70628291c61ae7204 libGenie.so
|
||||||
66ea0c948385d8060a7296285d7a85738c21318a88ef767986444a3d9683aeea libggml-cpu.so
|
66ea0c948385d8060a7296285d7a85738c21318a88ef767986444a3d9683aeea libggml-cpu.so
|
||||||
7aeb209ec5c1da8857779b8f3b4c3e7519ed69c6211491948d3c87349dbced57 libggml.so
|
7aeb209ec5c1da8857779b8f3b4c3e7519ed69c6211491948d3c87349dbced57 libggml.so
|
||||||
77efdb8f4c233009c05f34635ab62a60cfc9e9702d5450397c404c0cca3baf11 libkazeia_cosyvoice.so
|
77efdb8f4c233009c05f34635ab62a60cfc9e9702d5450397c404c0cca3baf11 libkazeia_cosyvoice.so
|
||||||
80d9a9e524da0b32acefaef04e6510234bf1fe6e5ee9547b885f9af0e40993d5 libkazeia_engine.so
|
776f37e43433459a7350dc9d5d15dcb8eb3e17465a28fa78de92559bec3918bd libkazeia_engine.so
|
||||||
fdd730af3daf132d0819b3fc99abd8aae79800aab7a9aad371e117c16bd3a3aa libkazeia_stt.so
|
fdd730af3daf132d0819b3fc99abd8aae79800aab7a9aad371e117c16bd3a3aa libkazeia_stt.so
|
||||||
114795bf0256c380dc87971598707e9e0b745a7fc868f3d1fb460e94cecdd69c libkazeia_tts.so
|
114795bf0256c380dc87971598707e9e0b745a7fc868f3d1fb460e94cecdd69c libkazeia_tts.so
|
||||||
349ba592462113c6e871b9c3ee508727a9e5f154a33905f946bda97535eff586 libllama-common.so
|
349ba592462113c6e871b9c3ee508727a9e5f154a33905f946bda97535eff586 libllama-common.so
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue