feat: architecture multi-modèles LLM + quality engine + benchmark
- Multi-modèles : 4 rôles LLM (coding=gemma3:27b-cloud, cpam=gemma3:27b-cloud, validation=deepseek-v3.2:cloud, qc=gemma3:12b) avec get_model(role) - Prompts externalisés : 7 templates dans src/prompts/templates.py - Cache Ollama : modèle stocké par entrée (migration auto ancien format) - call_ollama() : paramètre role= (priorité: model > role > global) - Quality engine : veto_engine + decision_engine + rules_router (YAML) - Benchmark qualité : scripts/benchmark_quality.py (A/B, métriques CIM-10) - Fix biologie : valeurs qualitatives (troponine négative) non filtrées - Fix CPAM : gemma3:27b-cloud au lieu de deepseek (JSON tronqué par thinking) - CPAM max_tokens 4000→6000, viewer admin multi-modèles - Benchmark 10 dossiers : 100% DAS valides, 10/10 CPAM, 243s/dossier Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
82
config/rules/base.yaml
Normal file
82
config/rules/base.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
version: 1
|
||||
|
||||
# Catalogue "socle" de règles.
|
||||
#
|
||||
# Objectif : piloter (sans toucher au code) :
|
||||
# - l'activation/désactivation de règles (vetos + décisions)
|
||||
# - éventuellement un forçage de sévérité pour un VETO
|
||||
#
|
||||
# Important : si une règle n'est pas listée ici, elle est considérée activée.
|
||||
# (=> comportement historique conservé)
|
||||
|
||||
packs:
|
||||
vetos_core:
|
||||
enabled: true
|
||||
rules:
|
||||
VETO-02:
|
||||
enabled: true
|
||||
description: "Code sans preuve exploitable"
|
||||
VETO-03:
|
||||
enabled: true
|
||||
description: "Conditionnel / négation / contradictions dans la preuve"
|
||||
VETO-06:
|
||||
enabled: true
|
||||
description: "DP dupliqué dans les DAS"
|
||||
VETO-07:
|
||||
enabled: true
|
||||
description: "Doublons DAS"
|
||||
VETO-09:
|
||||
enabled: true
|
||||
description: "Contradiction biologique (plaquettes/créat)"
|
||||
# force_severity: "HARD" # Optionnel : forcer la sévérité globale
|
||||
VETO-12:
|
||||
enabled: true
|
||||
description: "Sur-confiance (high sans preuve)"
|
||||
VETO-15:
|
||||
enabled: true
|
||||
description: "Preuve issue d'un score/test (risque de sur-codage)"
|
||||
VETO-16:
|
||||
enabled: true
|
||||
description: "Heuristique libellé→code (hors-sujet probable)"
|
||||
VETO-17:
|
||||
enabled: true
|
||||
description: "Preuve biologique manquante => NEED_INFO (non bloquant)"
|
||||
|
||||
decisions_core:
|
||||
enabled: true
|
||||
rules:
|
||||
RULE-D50-NEEDS-IRON:
|
||||
enabled: true
|
||||
description: "D50 sans preuve martiale => downgrade D64.9 + NEED_INFO"
|
||||
RULE-D69.6-PLT-NORMAL:
|
||||
enabled: true
|
||||
description: "D69.6 incompatible avec plaquettes normales => ruled_out (barré)"
|
||||
|
||||
bio_electrolytes:
|
||||
enabled: true
|
||||
rules:
|
||||
RULE-E87.1-NA-NORMAL:
|
||||
enabled: true
|
||||
description: "E87.1 suggérée mais Na normal => ruled_out"
|
||||
RULE-E87.1-MISSING-NA:
|
||||
enabled: true
|
||||
description: "E87.1 suggérée mais Na absent => NEED_INFO"
|
||||
RULE-E87.5-K-NORMAL:
|
||||
enabled: true
|
||||
description: "E87.5 suggérée mais K normal => ruled_out"
|
||||
RULE-E87.5-MISSING-K:
|
||||
enabled: true
|
||||
description: "E87.5 suggérée mais K absent => NEED_INFO"
|
||||
RULE-E87.6-K-NORMAL:
|
||||
enabled: true
|
||||
description: "E87.6 suggérée mais K normal => ruled_out"
|
||||
RULE-E87.6-MISSING-K:
|
||||
enabled: true
|
||||
description: "E87.6 suggérée mais K absent => NEED_INFO"
|
||||
|
||||
placeholders_future:
|
||||
enabled: false
|
||||
rules:
|
||||
RULE-PDF-PROTECTED-NEED_INFO:
|
||||
enabled: false
|
||||
description: "PDF protégé => NEED_INFO (à implémenter si besoin)"
|
||||
Reference in New Issue
Block a user