Salta ai contenuti

Giskard - Cheatsheet del Framework di Test per ML e LLM

Giskard - Cheatsheet del Framework di Test per ML e LLM

Giskard è un framework di test open-source per applicazioni ML e LLM. La sua caratteristica distintiva è una scansione automatizzata che testa un modello alla ricerca di vulnerabilità — allucinazione, prompt injection, contenuti dannosi, fallimenti di robustezza, bias e perdita di dati — e produce un report che puoi convertire direttamente in una suite di test riutilizzabile. Quel flusso di lavoro scan-then-testify è ciò che lo distingue: non devi sapere in anticipo cosa testare.

Installation

MethodCommand
pippip install giskard
LLM extraspip install "giskard[llm]"
Model keyexport OPENAI_API_KEY=... (usato per i rilevatori basati su LLM)
Verifypython -c "import giskard; print(giskard.__version__)"

Wrapping an LLM App

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,
)
FieldWhy it matters
descriptionGiskard l”usa per generare probe rilevanti
model_typetext_generation, classification, regression
feature_namesColonne di input

La description non è cosmetica — lo scanner genera input avversariali specifici del dominio da essa.

Scanning

report = giskard.scan(model, dataset)
report.to_html("scan_report.html")
DetectorFinds
HallucinationAffermazioni non supportate o incoerenti
Prompt injectionOverride di istruzioni
HarmfulnessGenerazione di contenuti non sicuri
RobustnessSensibilità a triviali cambiamenti di input
Sensitive disclosurePerdita di segreti/PII
StereotypesBias negli output
Performance biasAccuratezza non uniforme tra slice (tabular/NLP)
# Scan only specific detector groups
report = giskard.scan(model, dataset, only=["hallucination", "jailbreak"])

Scan → Test Suite

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

Questo è il flusso di lavoro chiave: i risultati diventano test di regressione, quindi un problema risolto rimane risolto e può essere gated in CI.

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 include un toolkit di valutazione RAG che genera una serie di domande dalla tua knowledge base e valuta ogni componente della pipeline.

Component scoredTells you
GeneratorLa risposta dell”LLM è buona dato il contesto?
RetrieverIl recupero ha fatto emergere i chunk giusti?
RewriterLa riscrittura delle query sta aiutando?
RouterLa query è stata instradata correttamente?
Knowledge baseIl materiale di origine è adeguato?

La valutazione a livello di componente è più attuabile di un singolo numero end-to-end — ti dice quale fase correggere.

AspectGiskardDeepEvalgarak
Core ideaAuto-scan → suite di testMetriche in stile unit-testScanner di probe del modello
ScopeML + LLM + RAGValutazioni di app LLMVulnerabilità del modello LLM
ReportReport di scansione HTML riccoOutput CI/dashboardReport CLI
Best forScoperta di problemi sconosciutiGating di metriche noteProbing ampio dei modelli

Si integra con DeepEval per il gating di metriche e Ragas per il punteggio RAG; il vantaggio di Giskard è trovare problemi che non avevi pensato di testare.

Resources