From cc642c1143468e1a6b18a4f47f7487c67f9f5f10 Mon Sep 17 00:00:00 2001 From: dom Date: Mon, 23 Feb 2026 10:12:26 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20max=5Ftokens=20extraction=20CPAM=20et=20?= =?UTF-8?q?validation=20adversariale=201500=E2=86=923000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les deux appels tronquaient systématiquement (done_reason=length), causant des JSON invalides et des faux positifs adversariaux. num_predict n'a aucun impact sur VRAM ni sur les réponses courtes. Co-Authored-By: Claude Opus 4.6 --- src/control/cpam_response.py | 4 ++-- src/control/cpam_validation.py | 4 ++-- src/prompts/templates.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/control/cpam_response.py b/src/control/cpam_response.py index abef91a..cadc4bc 100644 --- a/src/control/cpam_response.py +++ b/src/control/cpam_response.py @@ -91,9 +91,9 @@ def _extraction_pass( ) logger.debug(" Passe 1 — extraction structurée") - result = call_ollama(prompt, temperature=0.0, max_tokens=1500, role="cpam") + result = call_ollama(prompt, temperature=0.0, max_tokens=3000, role="cpam") if result is None: - result = call_anthropic(prompt, temperature=0.0, max_tokens=1500) + result = call_anthropic(prompt, temperature=0.0, max_tokens=3000) if result is not None: logger.info(" Passe 1 OK : %d éléments cliniques extraits", len(result.get("elements_cliniques_pertinents", []))) diff --git a/src/control/cpam_validation.py b/src/control/cpam_validation.py index 7de4d6a..b466348 100644 --- a/src/control/cpam_validation.py +++ b/src/control/cpam_validation.py @@ -365,9 +365,9 @@ def _validate_adversarial( ) logger.debug(" Validation adversariale") - result = call_ollama(prompt, temperature=0.0, max_tokens=1500, role="validation") + result = call_ollama(prompt, temperature=0.0, max_tokens=3000, role="validation") if result is None: - result = call_anthropic(prompt, temperature=0.0, max_tokens=1500) + result = call_anthropic(prompt, temperature=0.0, max_tokens=3000) if result is None: logger.warning(" Validation adversariale échouée — LLM indisponible") return None diff --git a/src/prompts/templates.py b/src/prompts/templates.py index ab56113..15f8f74 100644 --- a/src/prompts/templates.py +++ b/src/prompts/templates.py @@ -181,7 +181,7 @@ Réponds avec un JSON : # --------------------------------------------------------------------------- # 5. CPAM_EXTRACTION — Passe 1 extraction structurée CPAM # Source : cpam_response.py _extraction_pass() -# Rôle : cpam | Température : 0.0 | max_tokens : 1500 +# Rôle : cpam | Température : 0.0 | max_tokens : 3000 # --------------------------------------------------------------------------- CPAM_EXTRACTION = """\ @@ -311,7 +311,7 @@ Réponds UNIQUEMENT avec un objet JSON au format suivant : # --------------------------------------------------------------------------- # 7. CPAM_ADVERSARIAL — Validation adversariale de la contre-argumentation # Source : cpam_response.py _validate_adversarial() -# Rôle : validation | Température : 0.0 | max_tokens : 800 +# Rôle : validation | Température : 0.0 | max_tokens : 3000 # --------------------------------------------------------------------------- CPAM_ADVERSARIAL = """\