🐢 Librería de código abierto para la evaluación y pruebas de agentes de LLM
[!IMPORTANT] Giskard v3 es una reescritura completamente nueva diseñada para pruebas dinámicas y de múltiples turnos de agentes de IA. Esta versión elimina dependencias pesadas para una mayor eficiencia, al tiempo que introduce un escáner de vulnerabilidades de IA más potente y una evaluación RAG mejorada — ambos ahora incluidos de forma nativa en
giskard-scan, sin dependencia de v2. Solo el escaneo heredado para modelos tabulares/ML sigue siendo exclusivo de v2. Giskard v2 sigue disponible pero ya no se mantiene activamente. Sigue el progreso → Lee el anuncio de v3 · Hoja de ruta
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + escaneo de vulnerabilidades / calidad
pip install "giskard[openai]" # SDK del proveedor para jueces / generadores LLM
Requiere Python 3.12+.
| Extra | Añade |
|---|---|
| (ninguno) | giskard-checks y dependencias |
scan | giskard-scan |
openai / anthropic / … | SDKs de proveedores (ver dependencias opcionales en pyproject.toml) |
Telemetría: análisis agregados opcionales vía giskard-core. No se envían prompts ni salidas.
Para desactivarla antes de importar Giskard: export DO_NOT_TRACK=1 o export GISKARD_TELEMETRY_DISABLED=1.
Detalles: giskard-core README.
Giskard es una biblioteca Python de código abierto para probar y evaluar sistemas agénticos. La arquitectura v3 es un conjunto modular de paquetes enfocados — cada uno con solo las dependencias que necesita — construidos desde cero para envolver cualquier cosa: un LLM, un agente de caja negra o un pipeline de múltiples pasos.
| Estado | Paquete | Descripción |
|---|---|---|
| ✅ Estable | giskard-checks | Pruebas y evaluación — API de escenarios, checks integrados, LLM-como-juez |
| ✅ Estable | giskard-scan | Escáner de vulnerabilidades de agentes + evaluación RAG/calidad — red teaming, inyección de prompts, jailbreaks y contenido dañino (vulnerability_scan, sucesor del Scan v2), además de evaluación de calidad de base de conocimiento (quality_scan, sucesor del RAGET v2) |
Estos se construyen sobre tres bibliotecas fundamentales — giskard-core (utilidades compartidas y telemetría), giskard-llm (enrutamiento LLM independiente del proveedor) y giskard-agents (orquestación de agentes y flujos de trabajo) — que se instalan automáticamente y rara vez se usan directamente.
pip install giskard-checks
Giskard Checks es una biblioteca ligera para crear evaluaciones (evals) que prueban sistemas basados en LLM — desde aserciones simples hasta evaluaciones LLM-como-juez. A diferencia de las pruebas unitarias tradicionales, los evals están diseñados para salidas no deterministas donde la misma entrada puede producir diferentes respuestas válidas.
Usa Giskard Checks para:
Los evals integrados incluyen coincidencia de cadenas, comparaciones, regex, similitud semántica y checks LLM-como-juez (Groundedness, Conformity, LLMJudge).
(inputs) -> outputs (opcionalmente con trace)giskard.agents.Generator es un cliente LLM para flujos de trabajo/jueces — no es lo mismo que
los generadores de entrada de giskard.checks (LLMGenerator) que sintetizan mensajes de usuario.
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # reemplaza con tu modelo / agente
async def main() -> None:
scenario = (
Scenario("test_france_capital")
.interact(inputs="What is the capital of France?", outputs=get_answer)
.check(
Groundedness(
name="answer is grounded",
context="France is in Western Europe. Its capital is Paris.",
)
)
)
result = await scenario.run()
result.print_report()
asyncio.run(main())
Groundedness es un juez LLM — instala un extra de proveedor (p. ej. pip install "giskard[openai]") y configura la clave API correspondiente. Modelo predeterminado: openai/gpt-4o-mini.
Consulta la documentación completa para Suites, LLMJudge, escenarios de múltiples turnos y más.
pip install "giskard[scan]" # o: pip install giskard-scan
Giskard Scan es la capa de red teaming y escaneo de vulnerabilidades para sistemas agénticos. Genera automáticamente suites de pruebas adversariales a partir de una descripción en lenguaje natural de tu agente, cubriendo inyección de prompts, contenido dañino, estereotipos, desinformación y más.
Usa Giskard Scan para:
ScenarioGenerator a generate_suite, o regístralas en vulnerability_suite_generator_registryimport asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Reemplaza con tu llamada de agente / modelo
return f"Echo: {inputs}"
async def main() -> None:
await vulnerability_scan(
target=my_agent,
description="A customer support chatbot for an e-commerce platform.",
languages=["en"],
)
asyncio.run(main())
Los generadores de escaneo también necesitan un extra de proveedor LLM y una clave API (igual que los jueces de Checks anteriores).
Giskard v2 incluía Scan (detección automática de vulnerabilidades) y RAGET (generación de conjuntos de pruebas de evaluación RAG).
Para agentes LLM, ambos están superados en v3 por giskard-scan: usa vulnerability_scan en lugar del escaneo LLM de v2, y quality_scan (con KnowledgeBase) en lugar de RAGET.
v3 también funciona con modelos ML — envuelve uno como target y evalúalo con giskard-checks o giskard-scan. Lo que cubren los ejemplos a continuación es el escaneo tabular automático exclusivo de v2 — la suite de detectores que inspecciona un giskard.Model + giskard.Dataset para detectar automáticamente problemas de rendimiento, sesgo y robustez — junto con la suite de pruebas ML giskard.testing y el Giskard Hub. Estos no están planificados para v3.
pip install "giskard[llm]>2,<3"
Envuelve tu modelo y ejecuta el escaneo:
import giskard
import pandas as pd
# Reemplaza my_llm_chain con tu lógica real de cadena LLM o inferencia de modelo
def model_predict(df: pd.DataFrame):
"""La función toma un DataFrame y debe devolver una lista de salidas (una por fila)."""
return [my_llm_chain.run({"query": question}) for question in df["question"]]
giskard_model = giskard.Model(
model=model_predict,
model_type="text_generation",
name="My LLM Application",
description="A question answering assistant",
feature_names=["question"],
)
scan_results = giskard.scan(giskard_model)
display(scan_results)
Genera automáticamente preguntas, respuestas de referencia y contexto desde tu base de conocimiento:
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Carga los documentos de tu base de conocimiento
df = pd.read_csv("path/to/your/knowledge_base.csv")
knowledge_base = KnowledgeBase.from_pandas(df, columns=["column_1", "column_2"])
testset = generate_testset(
knowledge_base,
num_questions=60,
language="en",
agent_description="A customer support chatbot for company X",
)
¡Damos la bienvenida a contribuciones de la comunidad de IA! Lee esta guía para comenzar y únete a nuestra próspera comunidad en Discord.
Sigue el progreso y comparte comentarios: Anuncio de v3 · Hoja de ruta
🌟 Déjanos una estrella, ayuda a que el proyecto sea descubierto por otros y nos mantiene motivados para construir increíbles herramientas de código abierto. 🌟
❤️ Si encuentras útil nuestro trabajo, considera patrocinarnos en GitHub. Con un patrocinio mensual, puedes obtener una insignia de patrocinador, mostrar tu empresa en este readme y hacer que tus informes de errores tengan prioridad. También ofrecemos patrocinio único si quieres que participemos en un proyecto de consultoría, realicemos un taller o demos una charla en tu empresa.