Files
rpa_vision_v3/docs/BENCH_MINI_LLM_NLP.md
Dom 5ea4960e65
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped
backup: snapshot post-démo GHT 2026-05-19
Backup état complet après enregistrement vidéo démo de bout en bout.
À utiliser comme point de référence pour la consolidation post-démo.

Changements majeurs de la session 18-19 mai :
- AIVA-URGENCE : page autonome avec preset URL + auto-focus chain
- Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine
- Bypass LLM (static_result / static_text) dans replay_engine
  pour démos déterministes sans appel Ollama
- Fix api_stream:3013 — replay_paused au premier polling /next
- dag_execute : lift duration_ms vers top-level pour wait runtime
- NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git)
- scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue

Anchors visuels (468) forcés dans le commit pour garantir restorabilité.
DB workflows actuelle + ~12 .bak DB de la journée incluses.

Sujets identifiés pour consolidation post-démo (TODO) :
1. Bug VWB recapture anchor ne régénère pas le PNG
2. Léa client accumule état mémoire (restart périodique requis)
3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel)
4. Bug coord client mss tronqué 2560x60 → mapping Y cassé
5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:55:06 +02:00

54 lines
2.3 KiB
Markdown

# Bench mini-LLM NLP fr pour Léa
Test : 14 commandes représentatives (traite N, code N, traite tous, IPP spécifique, stop, questions).
## Résultats
| Modèle | Accuracy | Parse JSON | p50 latence | p95 latence |
|---|---|---|---|---|
| `llama3.2:1b` | 29% | 100% | 416 ms | 1548 ms |
| `qwen2.5:0.5b` | 14% | 100% | 400 ms | 1452 ms |
| `gemma3:1b` | 93% | 100% | 377 ms | 1500 ms |
## Verdict
1. **gemma3:1b** — accuracy 93%, p50 377 ms
2. **llama3.2:1b** — accuracy 29%, p50 416 ms
3. **qwen2.5:0.5b** — accuracy 14%, p50 400 ms
**Recommandation : `gemma3:1b`**
## Cas d'échec (top 5 par modèle)
### llama3.2:1b
- `Léa, traite-moi 3 dossiers` → wrong_count: got None expected 3
- `code-moi les 4 premiers dossiers` → wrong_count: got None expected 4
- `Léa peux-tu traiter 2 dossiers s'il te plaît ?` → wrong_count: got None expected 2
- `fais-moi les 3 premiers` → wrong_count: got None expected 3
- `j'aimerais que tu traites 6 dossiers` → wrong_order: got 'all' expected 'first'
### qwen2.5:0.5b
- `Léa, traite-moi 3 dossiers` → wrong_order: got 'all' expected 'first'
- `traite 5 dossiers` → wrong_action: got None expected 'process_patients'
- `code-moi les 4 premiers dossiers` → wrong_count: got 1 expected 4
- `Léa peux-tu traiter 2 dossiers s'il te plaît ?` → wrong_count: got None expected 2
- `fais-moi les 3 premiers` → wrong_count: got 1 expected 3
### gemma3:1b
- `comment tu traites un dossier ?` → wrong_action: got 'process_patients' expected 'unknown'
## Prompt système utilisé
```
Tu es un parseur d'intentions pour Léa, assistant RPA médical.
Réponds UNIQUEMENT en JSON valide, sans texte avant/après, selon ce schéma :
{"action": "process_patients" | "stop" | "unknown", "count": <int|null>, "order": "first" | "last" | "all" | "specific" | null, "ipp": "<string>" | null}
Règles :
- "traite N dossiers" / "code N dossiers" / "fais les N premiers" → action=process_patients, count=N, order="first"
- "traite tous les dossiers" → action=process_patients, count=null, order="all"
- "traite le dossier 25003364" → action=process_patients, count=1, order="specific", ipp="25003364"
- "stop" / "arrête" / "annule" → action=stop
- Question ("comment", "pourquoi") → action=unknown
- Si tu ne comprends pas → action=unknown
```