Giskard - Framework de test pour ML et LLM
Giskard - Framework de test pour ML et LLM
Giskard est un framework open-source de test pour les applications ML et LLM. Sa caractéristique distinctive est un scan automatisé qui teste un modèle pour les vulnérabilités — hallucination, injection de prompt, contenu nuisible, défaillances de robustesse, biais, et fuite de données — et produit un rapport que vous pouvez convertir directement en une suite de test réutilisable. Ce flux de travail scan-puis-tester est ce qui le distingue : vous ne devez pas savoir d’avance ce qu’il faut tester.
Installation
| Méthode | Commande |
|---|---|
| pip | pip install giskard |
| Extras LLM | pip install "giskard[llm]" |
| Clé de modèle | export OPENAI_API_KEY=... (utilisée par les détecteurs basés sur LLM) |
| Vérifier | python -c "import giskard; print(giskard.__version__)" |
Enrober une application LLM
import giskard
import pandas as pd
def predict(df: pd.DataFrame):
return [my_llm_app(q) for q in df["question"]]
model = giskard.Model(
model=predict,
model_type="text_generation",
name="Support Assistant",
description="Answers customer questions using our docs",
feature_names=["question"],
)
dataset = giskard.Dataset(
pd.DataFrame({"question": ["How do I reset my password?"]}),
target=None,
)
| Champ | Pourquoi c’est important |
|---|---|
description | Giskard l’utilise pour générer des sondes pertinentes |
model_type | text_generation, classification, regression |
feature_names | Colonnes d’entrée |
La description n’est pas cosmétique — le scanner génère des entrées adverses spécifiques au domaine à partir d’elle.
Scan
report = giskard.scan(model, dataset)
report.to_html("scan_report.html")
| Détecteur | Trouve |
|---|---|
| Hallucination | Affirmations non soutenues ou incohérentes |
| Injection de prompt | Surcharge d’instructions |
| Nuisibilité | Génération de contenu non sécurisé |
| Robustesse | Sensibilité aux modifications triviales d’entrée |
| Divulgation sensible | Fuite de secrets/PII |
| Stéréotypes | Biais dans les sorties |
| Biais de performance | Précision inégale entre les tranches (tabulaire/NLP) |
# Scanner uniquement des groupes de détecteurs spécifiques
report = giskard.scan(model, dataset, only=["hallucination", "jailbreak"])
Scan → Suite de test
suite = report.generate_test_suite("Support Assistant tests")
suite.run()
C’est le flux de travail clé : les découvertes deviennent des tests de régression, afin qu’un problème corrigé reste corrigé et puisse être contrôlé en CI.
Tests personnalisés
from giskard import test, TestResult
@test(name="No refund promises")
def no_refund_promise(model, dataset):
outputs = model.predict(dataset).prediction
bad = [o for o in outputs if "guaranteed refund" in o.lower()]
return TestResult(passed=len(bad) == 0, metric=len(bad))
suite.add_test(no_refund_promise).run()
Évaluation RAG (RAGET)
Giskard inclut un kit d’évaluation RAG qui génère un ensemble de questions à partir de votre base de connaissances et note chaque composant du pipeline.
| Composant noté | Vous dit |
|---|---|
| Générateur | La réponse du LLM est-elle bonne étant donné le contexte ? |
| Retriever | La récupération a-t-elle fait remonter les bons morceaux ? |
| Rewriter | La réécriture de la requête aide-t-elle ? |
| Router | La requête a-t-elle été acheminée correctement ? |
| Base de connaissances | Le matériel source est-il adéquat ? |
La notation au niveau des composants est plus exploitable qu’un seul nombre end-to-end — elle vous dit quelle étape corriger.
Giskard vs outils connexes
| Aspect | Giskard | DeepEval | garak |
|---|---|---|---|
| Idée clé | Scan auto → suite de test | Métriques de style unit-test | Scanner de sondes de modèle |
| Portée | ML + LLM + RAG | Évals d’app LLM | Vulnérabilités de modèle LLM |
| Rapport | Rapport de scan HTML riche | Sortie/tableau de bord CI | Rapport CLI |
| Meilleur pour | Découverte de problèmes inconnus | Gating de métriques connus | Large sondage de modèle |
S’associe avec DeepEval pour le gating des métriques et Ragas pour la notation RAG ; l’avantage de Giskard est de découvrir les problèmes que vous n’aviez pas pensé à tester.