Ir al contenido

Giskard - Marco de Pruebas ML y LLM Hoja de Trucos

Giskard - Marco de Pruebas ML y LLM Hoja de Trucos

Giskard es un marco de pruebas de código abierto para aplicaciones ML y LLM. Su característica distintiva es un escaneo automatizado que prueba un modelo en busca de vulnerabilidades — alucinación, inyección de prompts, contenido dañino, fallos de robustez, sesgo y fuga de datos — y produce un reporte que puedes convertir directamente en un suite de pruebas reutilizable. Ese flujo de escaneo-luego-testificar es lo que lo distingue: no tienes que saber qué probar de antemano.

Instalación

MétodoComando
pippip install giskard
Extras de LLMpip install "giskard[llm]"
Clave de modeloexport OPENAI_API_KEY=... (usado para detectores basados en LLM)
Verificarpython -c "import giskard; print(giskard.__version__)"

Envolviendo una Aplicación 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,
)
CampoPor qué importa
descriptionGiskard lo usa para generar sondas relevantes
model_typetext_generation, classification, regression
feature_namesColumnas de entrada

La description no es cosmética — el escáner genera entradas adversariales específicas del dominio a partir de ella.

Escaneo

report = giskard.scan(model, dataset)
report.to_html("scan_report.html")
DetectorEncuentra
AlucinaciónAfirmaciones no soportadas o incoherentes
Inyección de promptsOverride de instrucciones
DañosidadGeneración de contenido inseguro
RobustezSensibilidad a cambios triviales en entrada
Divulgación sensibleFuga de secretos/PII
EstereotiposSesgo en salidas
Sesgo de rendimientoPrecisión desigual en segmentos (tabular/NLP)
# Escanear solo grupos de detectores específicos
report = giskard.scan(model, dataset, only=["hallucination", "jailbreak"])

Escaneo → Suite de Pruebas

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

Este es el flujo de trabajo clave: los hallazgos se convierten en pruebas de regresión, por lo que un problema corregido se mantiene corregido y puede ser gatillado en CI.

Pruebas Personalizadas

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

Evaluación de RAG (RAGET)

Giskard incluye un kit de evaluación de RAG que genera un conjunto de preguntas de tu base de conocimiento y califica cada componente del pipeline.

Componente calificadoTe dice
Generador¿Es buena la respuesta del LLM dado el contexto?
Recuperador¿Recuperó la recuperación los fragmentos correctos?
Reescritor¿Está ayudando la reescritura de consultas?
Router¿Fue la consulta enrutada correctamente?
Base de conocimiento¿Es adecuado el material de origen?

La puntuación a nivel de componente es más accionable que un único número de extremo a extremo — te dice en qué etapa enfocarse.

Giskard vs Herramientas Relacionadas

AspectoGiskardDeepEvalgarak
Idea centralEscaneo automático → suite de pruebasEstilo pruebas unitarias métricasEscáner de sondas de modelo
AlcanceML + LLM + RAGEvals de apps LLMVulnerabilidades de modelos LLM
ReporteReporte de escaneo HTML ricoSalida/dashboard de CIReporte de CLI
Mejor paraDescubrir problemas desconocidosGatillar métricas conocidasSondas amplias de modelos

Se empareja con DeepEval para gatillar métrica y Ragas para puntuación de RAG; la ventaja de Giskard es encontrar problemas que no pensaste probar.

Recursos