Évaluer les LLMs
Le problème : plus de « assert equals »
Un système LLM produit du texte libre, non déterministe, sans réponse unique correcte. Comment savoir si ton nouveau prompt/modèle/RAG est meilleur ? Sans réponse outillée à cette question, tu pilotes à l'aveugle — et chaque « petite amélioration du prompt » peut casser trois cas d'usage en silence.
La boîte à outils, par ordre de rigueur croissante
- Assertions programmatiques : format JSON valide, présence de champs, longueur, absence de mots interdits — tes tests unitaires classiques s'appliquent à la forme ;
- Datasets de référence (golden sets) : 50-500 cas réels avec réponse attendue ou critères ; chaque changement est rejoué dessus (ta suite de non-régression) ;
- LLM-as-judge : un LLM (souvent plus fort) note les réponses sur des critères explicites (exactitude, complétude, ton). Scalable, corrélé à l'humain si les critères sont précis — mais à calibrer contre un échantillon humain, et attention aux biais (il préfère les réponses longues, et celles de sa famille) ;
- Évaluation humaine : l'étalon-or, cher — à réserver à la calibration et aux décisions majeures.
Pour le RAG, on évalue en plus le retrieval seul : les bons passages sont-ils retrouvés (recall@k) ? La réponse est-elle fidèle aux sources (faithfulness — l'anti-hallucination mesurable) ?
Le workflow professionnel
changement (prompt, modèle, chunking…)
→ rejouer le golden set
→ scores (judge + assertions) comparés à la baseline
→ régression ? on n'expédie pas.
Outillage : promptfoo, Langfuse, Braintrust… — mais l'outil compte moins que la discipline : constituer le golden set depuis les vrais cas de prod (dont les échecs !) et l'enrichir à chaque incident, comme tu ajoutes un test à chaque bug corrigé.
Les métriques qui parlent au produit
- Taux de résolution (le user a-t-il eu sa réponse ?), taux d'escalade vers un humain ;
- Faithfulness (RAG) : la réponse ne dit rien que les sources ne disent ;
- Coût et latence par requête — un modèle 2× meilleur mais 10× plus cher est souvent le mauvais choix.
Pourquoi les tests classiques (assert equals) ne suffisent-ils plus avec les LLMs ?