fix: max_tokens extraction CPAM et validation adversariale 1500→3000

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 <noreply@anthropic.com>
This commit is contained in:
dom
2026-02-23 10:12:26 +01:00
parent d192af74ec
commit cc642c1143
3 changed files with 6 additions and 6 deletions

View File

@@ -91,9 +91,9 @@ def _extraction_pass(
) )
logger.debug(" Passe 1 — extraction structurée") 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: 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: if result is not None:
logger.info(" Passe 1 OK : %d éléments cliniques extraits", logger.info(" Passe 1 OK : %d éléments cliniques extraits",
len(result.get("elements_cliniques_pertinents", []))) len(result.get("elements_cliniques_pertinents", [])))

View File

@@ -365,9 +365,9 @@ def _validate_adversarial(
) )
logger.debug(" Validation adversariale") 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: 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: if result is None:
logger.warning(" Validation adversariale échouée — LLM indisponible") logger.warning(" Validation adversariale échouée — LLM indisponible")
return None return None

View File

@@ -181,7 +181,7 @@ Réponds avec un JSON :
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# 5. CPAM_EXTRACTION — Passe 1 extraction structurée CPAM # 5. CPAM_EXTRACTION — Passe 1 extraction structurée CPAM
# Source : cpam_response.py _extraction_pass() # 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 = """\ 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 # 7. CPAM_ADVERSARIAL — Validation adversariale de la contre-argumentation
# Source : cpam_response.py _validate_adversarial() # 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 = """\ CPAM_ADVERSARIAL = """\