🐢 Open-Source-Bibliothek für Evaluierung & Tests von LLM-Agenten
[!IMPORTANT] Giskard v3 ist eine vollständige Neuentwicklung, die für dynamische Multi-Turn-Tests von KI-Agenten entwickelt wurde. Diese Version entfernt schwere Abhängigkeiten für mehr Effizienz und führt gleichzeitig einen leistungsfähigeren KI-Schwachstellenscanner und eine verbesserte RAG-Evaluierung ein – beide jetzt nativ in
giskard-scanenthalten, ohne Abhängigkeit von v2. Nur der Legacy-Scan für tabellarische/ML-Modelle bleibt v2-exklusiv. Giskard v2 bleibt verfügbar, wird aber nicht mehr aktiv gewartet. Fortschritt verfolgen → Lies die v3-Ankündigung · Roadmap
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + vulnerability / quality scan
pip install "giskard[openai]" # provider SDK für LLM-Judges / Generatoren
Erfordert Python 3.12+.
| Extra | Fügt hinzu |
|---|---|
| (keines) | giskard-checks und Abhängigkeiten |
scan | giskard-scan |
openai / anthropic / … | Provider-SDKs (siehe optionale Abhängigkeiten in pyproject.toml) |
Telemetrie: optionale aggregierte Analysen über giskard-core. Es werden keine Prompts oder Ausgaben gesendet.
Deaktivieren vor dem Import von Giskard: export DO_NOT_TRACK=1 oder export GISKARD_TELEMETRY_DISABLED=1.
Details: giskard-core README.
Giskard ist eine Open-Source-Python-Bibliothek zum Testen und Evaluieren agentischer Systeme. Die v3-Architektur ist ein modularer Satz fokussierter Pakete – jedes trägt nur die Abhängigkeiten, die es benötigt – von Grund auf neu gebaut, um alles zu umhüllen: ein LLM, einen Black-Box-Agenten oder eine mehrstufige Pipeline.
| Status | Paket | Beschreibung |
|---|---|---|
| ✅ Stabil | giskard-checks | Testen & Evaluierung – Szenario-API, integrierte Checks, LLM-as-Judge |
| ✅ Stabil | giskard-scan | Agent-Schwachstellenscanner + RAG/Qualitäts-Evaluierung – Red Teaming, Prompt Injection, Jailbreaks & schädliche Inhalte (vulnerability_scan, Nachfolger des v2 Scan), plus Wissensbasis-Qualitäts-Evaluierung (quality_scan, Nachfolger von v2 RAGET) |
Diese bauen auf drei grundlegenden Bibliotheken auf – giskard-core (gemeinsame Dienstprogramme & Telemetrie), giskard-llm (provider-agnostisches LLM-Routing) und giskard-agents (Agenten- & Workflow-Orchestrierung) – die automatisch mitinstalliert werden und selten direkt verwendet werden.
pip install giskard-checks
Giskard Checks ist eine leichtgewichtige Bibliothek zum Erstellen von Evaluierungen (Evals), die LLM-basierte Systeme testen – von einfachen Assertions bis hin zu LLM-as-Judge-Bewertungen. Im Gegensatz zu herkömmlichen Unit-Tests sind Evals für nicht-deterministische Ausgaben konzipiert, bei denen dieselbe Eingabe verschiedene gültige Antworten erzeugen kann.
Verwende Giskard Checks, um:
Integrierte Evals umfassen String-Matching, Vergleiche, Regex, semantische Ähnlichkeit und LLM-as-Judge-Checks (Groundedness, Conformity, LLMJudge).
(inputs) -> outputs (optional mit trace)giskard.agents.Generator ist ein LLM-Client für Workflows/Judges – nicht dasselbe wie
die Eingabegeneratoren von giskard.checks (LLMGenerator), die Benutzernachrichten synthetisieren.
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # durch dein Modell / deinen Agenten ersetzen
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 ist ein LLM-Judge – installiere ein Provider-Extra (z. B. pip install "giskard[openai]") und setze den passenden API-Schlüssel. Standardmodell: openai/gpt-4o-mini.
Siehe die vollständige Dokumentation für Suites, LLMJudge, Multi-Turn-Szenarien und mehr.
pip install "giskard[scan]" # oder: pip install giskard-scan
Giskard Scan ist die Red-Teaming- und Schwachstellen-Scanning-Ebene für agentische Systeme. Es generiert automatisch adversarial Test-Suites aus einer Beschreibung deines Agenten in natürlicher Sprache, die Prompt Injection, schädliche Inhalte, Stereotype, Fehlinformationen und mehr abdecken.
Verwende Giskard Scan, um:
ScenarioGenerator-Instanzen an generate_suite übergeben oder sie im vulnerability_suite_generator_registry registrierenimport asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Durch deinen Agenten / Modellaufruf ersetzen
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())
Scan-Generatoren benötigen ebenfalls ein LLM-Provider-Extra und einen API-Schlüssel (wie die Checks-Judges oben).
Giskard v2 enthielt Scan (automatische Schwachstellenerkennung) und RAGET (RAG-Evaluierungs-Testsetgenerierung).
Für LLM-Agenten werden beide in v3 durch giskard-scan ersetzt: Verwende vulnerability_scan anstelle des v2-LLM-Scans und quality_scan (mit KnowledgeBase) anstelle von RAGET.
v3 funktioniert auch mit ML-Modellen – umhülle eines als Target und evaluiere es mit giskard-checks oder giskard-scan. Was die folgenden Beispiele abdecken, ist der nur in v2 verfügbare automatische tabellarische Scan – die Detektor-Suite, die ein giskard.Model + giskard.Dataset untersucht, um automatisch Leistungs-, Bias- und Robustheitsprobleme zu erkennen – zusammen mit der giskard.testing-ML-Testsuite und dem Giskard Hub. Diese sind für v3 nicht geplant.
pip install "giskard[llm]>2,<3"
Umhülle dein Modell und führe den Scan aus:
import giskard
import pandas as pd
# Ersetze my_llm_chain durch deine tatsächliche LLM-Kette oder Modell-Inferenzlogik
def model_predict(df: pd.DataFrame):
"""Die Funktion nimmt einen DataFrame entgegen und muss eine Liste von Ausgaben zurückgeben (eine pro Zeile)."""
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)
Automatisch Fragen, Referenzantworten und Kontext aus deiner Wissensbasis generieren:
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Lade deine Wissensbasis-Dokumente
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",
)
Wir freuen uns über Beiträge aus der KI-Community! Lies diesen Leitfaden, um loszulegen, und tritt unserer lebendigen Community auf Discord bei.
Verfolge den Fortschritt und teile Feedback: v3-Ankündigung · Roadmap
🌟 Hinterlasse uns einen Stern, das hilft dem Projekt, von anderen entdeckt zu werden, und motiviert uns, großartige Open-Source-Tools zu bauen! 🌟
❤️ Wenn du unsere Arbeit nützlich findest, erwäge bitte, uns auf GitHub zu sponsern. Mit einem monatlichen Sponsoring kannst du ein Sponsor-Abzeichen erhalten, dein Unternehmen in dieser README anzeigen lassen und deine Bug-Reports priorisiert bekommen. Wir bieten auch einmaliges Sponsoring an, wenn du möchtest, dass wir uns in ein Beratungsprojekt einbringen, einen Workshop durchführen oder einen Vortrag bei deinem Unternehmen halten.