mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 07:28:13 +02:00
Raisonnement : NUDGE_IN_TOOL décide sur le verdict de la forme de la requête
La sonde de gabarit gardait le verdict de la DERNIÈRE forme sondée (outils, chat_template_kwargs, reasoning_effort), quelle qu'elle soit. NUDGE_IN_TOOL pouvait donc glisser le rappel de budget dans un résultat d'outil sur la foi d'un « préfixe instable » conclu pour une autre forme — un autre jeu d'outils, la réflexion coupée, un autre niveau — dont le rendu n'a rien à voir. - Les verdicts sont aussi rangés par forme (empreinte tplShape, au plus 16, la plus ancienne cède) ; tplCapsFor rend celui de la forme demandée. - NUDGE_IN_TOOL calcule la forme de la requête courante (mêmes outils, kwargs et niveau que ceux envoyés) et ne place le rappel dans le résultat que si CETTE forme est « instable » pour ce modèle ; forme jamais sondée ou inconnue : message à part, comme sans la clé. Une relance outils coupés ou tool_choice « none » (forme que la sonde ne voit jamais) se replie aussi. - L'affichage (/api/perf/summary) et REASONING_ECHO gardent le dernier verdict, comme avant. Sans la clé, rien ne change. - Tests : verdict par forme dans la sonde, autre forme / autres kwargs / autre niveau refusés, bout à bout avec le verdict d'une autre forme (échouait sur l'ancien code). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ac40a2556a
commit
4b659ac186
6 files changed
+154
-20
No files matched your search
@@ -174,9 +174,11 @@ func withTrailingHint(msgs []Message, hint string) []Message {
|
||||
// l'opt-in, à n'activer qu'après avoir comparé l'obéissance aux rappels.
|
||||
//
|
||||
// Moteur local seulement, et seulement si la sonde de gabarit
|
||||
// (chat_tplprobe.go) a conclu « préfixe instable » pour CE modèle : « inconnu »
|
||||
// ou un autre modèle laissent le message à part.
|
||||
func nudgeInToolOn(cfg map[string]string, ep chatEndpoint) bool {
|
||||
// (chat_tplprobe.go) a conclu « préfixe instable » pour CE modèle et pour la
|
||||
// forme de CETTE requête (outils, chat_template_kwargs, reasoning_effort : le
|
||||
// rendu en dépend). « inconnu », un autre modèle ou une forme jamais sondée
|
||||
// laissent le message à part.
|
||||
func nudgeInToolOn(cfg map[string]string, ep chatEndpoint, tools []Tool, kwargs map[string]any, effort string) bool {
|
||||
switch strings.ToLower(strings.TrimSpace(cfg["NUDGE_IN_TOOL"])) {
|
||||
case "on", "1", "true", "yes", "oui":
|
||||
default:
|
||||
@@ -185,7 +187,7 @@ func nudgeInToolOn(cfg map[string]string, ep chatEndpoint) bool {
|
||||
if ep.External {
|
||||
return false
|
||||
}
|
||||
r, ok := tplCapsCurrent()
|
||||
r, ok := tplCapsFor(newTplShape(tools, kwargs, effort))
|
||||
return ok && r.PrefixStable == tplNo && r.Model != "" && r.Model == reasoningEchoModel(cfg)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user