Aller au contenu

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éthodeCommande
pippip install giskard
Extras LLMpip install "giskard[llm]"
Clé de modèleexport OPENAI_API_KEY=... (utilisée par les détecteurs basés sur LLM)
Vérifierpython -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,
)
ChampPourquoi c’est important
descriptionGiskard l’utilise pour générer des sondes pertinentes
model_typetext_generation, classification, regression
feature_namesColonnes 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étecteurTrouve
HallucinationAffirmations non soutenues ou incohérentes
Injection de promptSurcharge d’instructions
NuisibilitéGénération de contenu non sécurisé
RobustesseSensibilité aux modifications triviales d’entrée
Divulgation sensibleFuite de secrets/PII
StéréotypesBiais dans les sorties
Biais de performancePré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érateurLa réponse du LLM est-elle bonne étant donné le contexte ?
RetrieverLa récupération a-t-elle fait remonter les bons morceaux ?
RewriterLa réécriture de la requête aide-t-elle ?
RouterLa requête a-t-elle été acheminée correctement ?
Base de connaissancesLe 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

AspectGiskardDeepEvalgarak
Idée cléScan auto → suite de testMétriques de style unit-testScanner de sondes de modèle
PortéeML + LLM + RAGÉvals d’app LLMVulnérabilités de modèle LLM
RapportRapport de scan HTML richeSortie/tableau de bord CIRapport CLI
Meilleur pourDécouverte de problèmes inconnusGating de métriques connusLarge 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.

Ressources