Zum Inhalt springen

Giskard - ML & LLM Testing Framework Cheatsheet

Giskard - ML & LLM Testing Framework Cheatsheet

Giskard ist ein Open-Source-Testing-Framework für ML- und LLM-Anwendungen. Sein Signaturen-Feature ist ein automatisierter Scan, der ein Modell auf Anfälligkeiten prüft — Halluzination, Prompt Injection, schädliche Inhalte, Robustness-Fehler, Bias und Datenlecks — und erzeugt einen Bericht, den du direkt in eine wiederverwendbare Test Suite umwandeln kannst. Dieser Scan-Then-Testify-Workflow ist das, was es unterscheidet: du musst nicht im Voraus wissen, was zu testen ist.

Installation

MethodeBefehl
pippip install giskard
LLM Extraspip install "giskard[llm]"
Model-Schlüsselexport OPENAI_API_KEY=... (verwendet für LLM-basierte Detektoren)
Verifikationpython -c "import giskard; print(giskard.__version__)"

Ein LLM-App verpacken

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,
)
FeldWarum es wichtig ist
descriptionGiskard nutzt das, um relevante Probes zu generieren
model_typetext_generation, classification, regression
feature_namesInput Spalten

Die description ist nicht kosmetisch — der Scanner generiert domain-spezifische adversariale Eingaben davon.

Scanning

report = giskard.scan(model, dataset)
report.to_html("scan_report.html")
DetektorFindet
HallucinationUnbegründete oder inkohärente Behauptungen
Prompt InjectionAnweisungsüberschreibung
HarmfulnessUnsichere Content-Generierung
RobustnessEmpfindlichkeit gegenüber trivialen Input-Änderungen
Sensitive DisclosureSecrets/PII-Leaks
StereotypesBias in Outputs
Performance BiasUngleiche Accuracy über Slices (Tabular/NLP)
# Scanne nur bestimmte Detektor-Gruppen
report = giskard.scan(model, dataset, only=["hallucination", "jailbreak"])

Scan → Test Suite

suite = report.generate_test_suite("Support Assistant tests")
suite.run()

Das ist der Schlüssel-Workflow: Befunde werden zu Regression Tests, daher bleibt ein behobenes Problem behoben und kann in CI gegattet werden.

Custom Tests

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()

RAG Evaluation (RAGET)

Giskard includes a RAG evaluation toolkit that generates a question set from your knowledge base and scores each pipeline component.

Komponente gepunktetSagt dir
GeneratorIst die Antwort des LLM gut gegeben den Kontext?
RetrieverHat Retrieval die richtigen Chunks geopfert?
RewriterHilft Query Rewriting?
RouterWurde die Query richtig geroutet?
Knowledge BaseIst das Quellmaterial ausreichend?

Komponenten-Level-Scoring ist actionabler als eine einzelne End-to-End-Zahl — es sagt dir, welche Stage zu fixieren ist.

Giskard vs verwandte Tools

AspektGiskardDeepEvalgarak
Core-IdeeAuto-Scan → Test SuiteUnit-Test-Style-MetrikenModell-Probe-Scanner
ScopeML + LLM + RAGLLM App EvalsLLM Modell-Anfälligkeiten
ReportRich HTML Scan ReportCI Output/DashboardCLI Report
Am besten fürEntdeckung unbekannter ProblemeGating bekannter MetrikenBreite Modell-Probes

Paare mit DeepEval für Metric-Gating und Ragas für RAG-Scoring; Giskards Vorteil ist das Finden von Problemen, die du nicht dachtest zu testen.

Ressourcen