🐢 Bibliothèque open source d'évaluation et de test pour agents LLM
[!IMPORTANT] Giskard v3 est une réécriture complète conçue pour les tests dynamiques multi-tours des agents IA. Cette version abandonne les dépendances lourdes pour une meilleure efficacité tout en introduisant un scanner de vulnérabilités IA plus puissant et une évaluation RAG améliorée — désormais tous deux inclus nativement dans
giskard-scan, sans dépendance à la v2. Seul l'ancien scan pour les modèles tabulaire/ML reste exclusif à la v2. Giskard v2 reste disponible mais n'est plus activement maintenu. Suivez la progression → Lire l'annonce de la v3 · Feuille de route
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + scan de vulnérabilité / qualité
pip install "giskard[openai]" # SDK fournisseur pour les juges / générateurs LLM
Nécessite Python 3.12+.
| Extra | Ajoute |
|---|---|
| (aucun) | giskard-checks et dépendances |
scan | giskard-scan |
openai / anthropic / … | SDK fournisseurs (voir les dépendances optionnelles dans pyproject.toml) |
Télémétrie : analyses agrégées optionnelles via giskard-core. Aucun prompt ni sortie n'est envoyé.
Désactivation avant d'importer Giskard : export DO_NOT_TRACK=1 ou export GISKARD_TELEMETRY_DISABLED=1.
Détails : giskard-core README.
Giskard est une bibliothèque Python open-source pour tester et évaluer les systèmes agentiques. L'architecture v3 est un ensemble modulaire de paquets ciblés — chacun ne portant que les dépendances dont il a besoin — construits de zéro pour encapsuler n'importe quoi : un LLM, un agent boîte noire, ou un pipeline multi-étapes.
| Statut | Paquet | Description |
|---|---|---|
| ✅ Stable | giskard-checks | Tests et évaluation — API de scénarios, checks intégrés, LLM-as-judge |
| ✅ Stable | giskard-scan | Scanner de vulnérabilités d'agents + évaluation RAG/qualité — red teaming, injection de prompts, jailbreaks et contenus nuisibles (vulnerability_scan, successeur du Scan v2), plus évaluation de la qualité de la base de connaissances (quality_scan, successeur du RAGET v2) |
Ces paquets reposent sur trois bibliothèques fondamentales — giskard-core (utilitaires partagés et télémétrie), giskard-llm (routage LLM indépendant du fournisseur) et giskard-agents (orchestration d'agents et de workflows) — qui sont installées automatiquement et rarement utilisées directement.
pip install giskard-checks
Giskard Checks est une bibliothèque légère pour créer des évaluations (evals) qui testent les systèmes basés sur LLM — des assertions simples aux évaluations LLM-as-judge. Contrairement aux tests unitaires traditionnels, les évaluations sont conçues pour des sorties non déterministes où la même entrée peut produire différentes réponses valides.
Utilisez Giskard Checks pour :
Les évaluations intégrées incluent la correspondance de chaînes, les comparaisons, les expressions régulières, la similarité sémantique et les checks LLM-as-judge (Groundedness, Conformity, LLMJudge).
(entrées) -> sorties (optionnellement avec trace)giskard.agents.Generator est un client LLM pour les workflows/juges — à ne pas confondre avec les générateurs d'entrées de giskard.checks (LLMGenerator) qui synthétisent les messages utilisateur.
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # remplacez par votre modèle / agent
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 est un juge LLM — installez un extra fournisseur (par ex. pip install "giskard[openai]") et définissez la clé API correspondante. Modèle par défaut : openai/gpt-4o-mini.
Consultez la documentation complète pour les Suites, LLMJudge, les scénarios multi-tours, et plus encore.
pip install "giskard[scan]" # ou : pip install giskard-scan
Giskard Scan est la couche de red teaming et de scan de vulnérabilités pour les systèmes agentiques. Il génère automatiquement des suites de tests adversariales à partir d'une description en langage naturel de votre agent, couvrant l'injection de prompts, les contenus nuisibles, les stéréotypes, la désinformation, et plus encore.
Utilisez Giskard Scan pour :
ScenarioGenerator à generate_suite, ou enregistrez-les sur vulnerability_suite_generator_registryimport asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Remplacez par votre appel agent / modèle
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())
Les générateurs de scan nécessitent également un extra fournisseur LLM et une clé API (comme les juges Checks ci-dessus).
Giskard v2 incluait Scan (détection automatique de vulnérabilités) et RAGET (génération de jeux de tests pour l'évaluation RAG).
Pour les agents LLM, les deux sont remplacés dans la v3 par giskard-scan : utilisez vulnerability_scan à la place du scan LLM v2, et quality_scan (avec KnowledgeBase) à la place de RAGET.
La v3 fonctionne aussi avec les modèles ML — encapsulez-en un comme cible et évaluez-le avec giskard-checks ou giskard-scan. Ce que couvrent les exemples ci-dessous est le scan tabulaire automatique exclusif à la v2 — la suite de détecteurs qui inspecte un giskard.Model + giskard.Dataset pour détecter automatiquement les problèmes de performance, de biais et de robustesse — ainsi que la suite de tests ML giskard.testing et le Giskard Hub. Ceux-ci ne sont pas prévus pour la v3.
pip install "giskard[llm]>2,<3"
Encapsulez votre modèle et lancez le scan :
import giskard
import pandas as pd
# Remplacez my_llm_chain par votre logique réelle de chaîne LLM ou d'inférence de modèle
def model_predict(df: pd.DataFrame):
"""La fonction prend un DataFrame et doit retourner une liste de sorties (une par ligne)."""
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)
Générez automatiquement des questions, des réponses de référence et du contexte à partir de votre base de connaissances :
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Chargez vos documents de base de connaissances
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",
)
Nous accueillons volontiers les contributions de la communauté IA ! Lisez ce guide pour commencer, et rejoignez notre communauté florissante sur Discord.
Suivez la progression et partagez vos retours : Annonce v3 · Feuille de route
🌟 Laissez-nous une étoile, cela aide le projet à être découvert par d'autres et nous motive à créer d'excellents outils open-source ! 🌟
❤️ Si vous trouvez notre travail utile, merci de considérer nous sponsoriser sur GitHub. Avec un sponsoring mensuel, vous pouvez obtenir un badge de sponsor, afficher votre entreprise dans ce readme, et faire prioriser vos rapports de bugs. Nous proposons également un sponsoring ponctuel si vous souhaitez que nous participions à un projet de conseil, animions un atelier, ou donnions une conférence dans votre entreprise.