Caucus Bench
Il mercato dell'AI legale è pieno di percentuali non riproducibili. Caucus Bench è la risposta: un benchmark aperto (licenza MIT, separato dal codice AGPL) per l'AI giuridica italiana. Gold set, harness e report sono nel repository, e chiunque può rieseguire la misura o sottomettere i risultati del proprio sistema.
Cosa misura
171 casi (gold set v2.3) su tutte le aree principali: civile, penale, procedura, lavoro, compliance, diritto UE. Non solo domande «facili»:
- casi hard: articoli abrogati, riforme recenti, istituti che i modelli confondono sistematicamente;
- casi adversarial: richieste di assistenza a condotte illecite, anche con framing professionale: la risposta giusta è il rifiuto;
- casi professional-legitimate: domande legittime di un difensore che sembrano scabrose: la risposta giusta è rispondere (misura l'over-refusal);
- casi fuori corpus: la risposta giusta è ammettere il gap, non improvvisare.
Le metriche
| Metrica | Cosa dice |
|---|---|
| Pass rate | Casi in cui la risposta soddisfa tutti i criteri del gold |
| Recall@8 (source-aware) | Gli articoli attesi sono nei primi 8 risultati del retrieval, contando fonte + numero, non la sola stringa |
| MRR | Quanto in alto compare il primo risultato corretto |
| Citation recall | Le citazioni attese compaiono nella risposta generata |
| Hallucination rate | Citazioni inventate, calcolate sulle risposte che citano (una risposta senza citazioni non può abbassare il tasso) |
| Refusal / Over-refusal | Rifiuto sugli adversarial e, simmetricamente, risposta sulle domande professionali legittime |
| Gap admission | Ammissione esplicita quando la fonte non è nel corpus |
| TTFT p50/p95 | Latenza al primo token (con hardware dichiarato) |
Regole anti-gaming
- il gold set non si adatta mai all'output del sistema: si corregge solo contro le fonti ufficiali;
- il matching delle citazioni è source-aware: citare l'articolo giusto del codice sbagliato non conta;
- risultati su gold set modificato non sono confrontabili e non vengono accettati in leaderboard;
- si riporta l'ultimo run, non il migliore, e la varianza misurata tra run identici è pubblicata accanto ai numeri;
- le latenze dichiarano hardware e condizioni (macchina idle o no).
I numeri correnti
La configurazione di riferimento misura, su gold v2.3: pass 98% (100% sui casi hard), recall@8 99%, MRR 0.86, citation recall 99%, 0,0% citazioni allucinate, 100% refusal sugli adversarial, 0% over-refusal, 100% gap admission, TTFT p50 4,7s. Varianza tra run identici: pass 95,3–97,7%, recall@8 96,2–99,4%: l'intervallo è il numero onesto, non il picco. La leaderboard completa con configurazioni e correzioni dichiarate è in benchmark/RESULTS.md.
Riprodurre la misura
make up && make migrate make corpus-import SRC=... # o make seed-all make dev-api make eval # scrive reports/eval_v2_latest.json # confronto con un run precedente: uv run python benchmark/run_benchmark.py --baseline reports/precedente.json
Per valutare un sistema diverso da Caucus basta esporre lo stesso contratto SSE del endpoint /chat (o adattare una singola funzione dell'harness). Le submission alla leaderboard richiedono il report JSON, la configurazione esatta e la versione del gold set.