🐢 Libreria open-source di valutazione e testing per agenti LLM
[!IMPORTANT] Giskard v3 è una riscrittura completa progettata per test dinamici e multi-turno degli agenti AI. Questa versione elimina le dipendenze pesanti per una maggiore efficienza, introducendo al contempo uno scanner di vulnerabilità AI più potente e una valutazione RAG migliorata — entrambi ora inclusi nativamente in
giskard-scan, senza dipendenza dalla v2. Solo lo scan legacy per modelli tabulari/ML rimane esclusivo della v2. Giskard v2 rimane disponibile ma non è più mantenuto attivamente. Segui i progressi → Leggi l'annuncio della v3 · Roadmap
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + vulnerability / quality scan
pip install "giskard[openai]" # provider SDK per LLM judges / generators
Richiede Python 3.12+.
| Extra | Aggiunge |
|---|---|
| (nessuno) | giskard-checks e dipendenze |
scan | giskard-scan |
openai / anthropic / … | provider SDK (vedi dipendenze opzionali in pyproject.toml) |
Telemetria: analisi aggregate opzionali tramite giskard-core. Nessun prompt o output viene inviato.
Per disattivare prima di importare Giskard: export DO_NOT_TRACK=1 oppure export GISKARD_TELEMETRY_DISABLED=1.
Dettagli: giskard-core README.
Giskard è una libreria Python open-source per testare e valutare sistemi agentici. L'architettura v3 è un insieme modulare di pacchetti mirati — ciascuno con solo le dipendenze di cui ha bisogno — costruita da zero per avvolgere qualsiasi cosa: un LLM, un agente black-box o una pipeline multi-step.
| Stato | Pacchetto | Descrizione |
|---|---|---|
| ✅ Stabile | giskard-checks | Test e valutazione — API per scenari, check integrati, LLM-as-judge |
| ✅ Stabile | giskard-scan | Scanner di vulnerabilità per agenti + valutazione RAG/qualità — red teaming, prompt injection, jailbreak e contenuti dannosi (vulnerability_scan, successore dello Scan v2), oltre alla valutazione della qualità della knowledge base (quality_scan, successore di RAGET v2) |
Questi si basano su tre librerie fondamentali — giskard-core (utilità condivise e telemetria), giskard-llm (routing LLM indipendente dal provider) e giskard-agents (orchestrazione di agenti e workflow) — che vengono installate automaticamente e raramente usate direttamente.
pip install giskard-checks
Giskard Checks è una libreria leggera per creare valutazioni (eval) che testano sistemi basati su LLM — dalle semplici asserzioni alle valutazioni LLM-as-judge. A differenza dei test unitari tradizionali, gli eval sono progettati per output non deterministici in cui lo stesso input può produrre risposte valide diverse.
Usa Giskard Checks per:
Gli eval integrati includono corrispondenza di stringhe, confronti, regex, similarità semantica e check LLM-as-judge (Groundedness, Conformity, LLMJudge).
(inputs) -> outputs (opzionalmente con trace)giskard.agents.Generator è un client LLM per workflow/giudici — non è la stessa cosa dei generatori di input di giskard.checks (LLMGenerator) che sintetizzano messaggi utente.
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # sostituisci con il tuo modello / 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 è un giudice LLM — installa un extra del provider (es. pip install "giskard[openai]") e imposta la chiave API corrispondente. Modello predefinito: openai/gpt-4o-mini.
Consulta la documentazione completa per Suites, LLMJudge, scenari multi-turno e altro.
pip install "giskard[scan]" # oppure: pip install giskard-scan
Giskard Scan è il livello di red teaming e scansione delle vulnerabilità per sistemi agentici. Genera automaticamente suite di test avversariali a partire da una descrizione in linguaggio naturale del tuo agente, coprendo prompt injection, contenuti dannosi, stereotipi, disinformazione e altro.
Usa Giskard Scan per:
ScenarioGenerator a generate_suite, oppure registrale su vulnerability_suite_generator_registryimport asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Sostituisci con la chiamata al tuo agente / modello
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())
Anche i generatori di scan richiedono un extra del provider LLM e una chiave API (come i giudici di Checks sopra).
Giskard v2 includeva Scan (rilevamento automatico delle vulnerabilità) e RAGET (generazione di test set per la valutazione RAG).
Per agenti LLM, entrambi sono sostituiti nella v3 da giskard-scan: usa vulnerability_scan al posto dello scan LLM v2, e quality_scan (con KnowledgeBase) al posto di RAGET.
La v3 funziona anche con modelli ML — avvolgi uno come target e valutalo con giskard-checks o giskard-scan. Ciò che gli esempi seguenti coprono è lo scan tabulare automatico esclusivo della v2 — la suite di rilevatori che ispeziona un giskard.Model + giskard.Dataset per rilevare automaticamente problemi di performance, bias e robustezza — insieme alla suite di test ML giskard.testing e al Giskard Hub. Questi non sono previsti per la v3.
pip install "giskard[llm]>2,<3"
Avvolgi il tuo modello ed esegui lo scan:
import giskard
import pandas as pd
# Sostituisci my_llm_chain con la tua logica effettiva di catena LLM o inferenza del modello
def model_predict(df: pd.DataFrame):
"""La funzione accetta un DataFrame e deve restituire una lista di output (uno per riga)."""
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 automaticamente domande, risposte di riferimento e contesto dalla tua knowledge base:
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Carica i documenti della tua knowledge base
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",
)
Accogliamo con piacere i contributi della community AI! Leggi questa guida per iniziare e unisciti alla nostra vivace community su Discord.
Segui i progressi e condividi feedback: Annuncio v3 · Roadmap
🌟 Lasciaci una stella, aiuta il progetto a essere scoperto da altri e ci motiva a creare fantastici strumenti open-source! 🌟
❤️ Se trovi utile il nostro lavoro, considera di sostenerci su GitHub. Con una sponsorizzazione mensile puoi ottenere un badge da sponsor, mostrare la tua azienda in questo readme e far dare priorità alle tue segnalazioni di bug. Offriamo anche sponsorizzazioni una tantum se vuoi che ci coinvolgiamo in un progetto di consulenza, organizziamo un workshop o teniamo un talk presso la tua azienda.