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étodo | Comando |
|---|---|
| pip | pip install giskard |
| Extras de LLM | pip install "giskard[llm]" |
| Clave de modelo | export OPENAI_API_KEY=... (usado para detectores basados en LLM) |
| Verificar | python -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,
)
| Campo | Por qué importa |
|---|---|
description | Giskard lo usa para generar sondas relevantes |
model_type | text_generation, classification, regression |
feature_names | Columnas 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")
| Detector | Encuentra |
|---|---|
| Alucinación | Afirmaciones no soportadas o incoherentes |
| Inyección de prompts | Override de instrucciones |
| Dañosidad | Generación de contenido inseguro |
| Robustez | Sensibilidad a cambios triviales en entrada |
| Divulgación sensible | Fuga de secretos/PII |
| Estereotipos | Sesgo en salidas |
| Sesgo de rendimiento | Precisió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 calificado | Te 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
| Aspecto | Giskard | DeepEval | garak |
|---|---|---|---|
| Idea central | Escaneo automático → suite de pruebas | Estilo pruebas unitarias métricas | Escáner de sondas de modelo |
| Alcance | ML + LLM + RAG | Evals de apps LLM | Vulnerabilidades de modelos LLM |
| Reporte | Reporte de escaneo HTML rico | Salida/dashboard de CI | Reporte de CLI |
| Mejor para | Descubrir problemas desconocidos | Gatillar métricas conocidas | Sondas 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.