Chapitre 1 : Test automatisé des LLM
Métriques d'évaluation des LLM
| Metric | Objectif | Outil |
|---|---|---|
| BLEU | Qualité de la traduction | sacreBLEU |
| ROUGE | Résumé | rouge-score |
| BERTScore | Similarité sémantique | bert-score |
| Fidélité | Ancré dans le contexte | RAGAS |
| Pertinence de la réponse | Répond à la question | RAGAS |
Évaluation RAGAS
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
# Préparer le jeu de données d'évaluation
eval_data = {
"question": ["What is MLOps?", "What are feature stores?"],
"answer": ["MLOps is...", "Feature stores are..."],
"contexts": [["Context 1", "Context 2"], ["Context 3"]],
"ground_truths": [["MLOps stands for..."], ["Feature stores are centralized..."]]
}
# Exécuter l'évaluation
results = evaluate(
dataset=eval_data,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print(results)
# {'faithfulness': 0.85, 'answer_relevancy': 0.90, 'context_precision': 0.88}
Test avec un jeu de données de référence
import json
def test_against_golden_dataset():
with open("golden_dataset.json") as f:
golden = json.load(f)
results = []
for item in golden:
response = llm.generate(item["prompt"])
# Vérifier par rapport aux modèles/mots-clés attendus
score = evaluate_response(
response=response,
expected_keywords=item["expected_keywords"],
blocked_patterns=item["blocked_patterns"]
)
results.append(score)
avg_score = sum(results) / len(results)
assert avg_score > 0.85, f"Golden dataset score {avg_score} below threshold"
Suivant : Chapitre 2 : Évaluation humaine