需 Python 3.12+,低版本环境无法安装;LLM 判官和扫描生成器要额外装 provider extra(如 giskard[openai])并配置对应 API key;v2 的表格/ML 模型自动扫描与 giskard.testing 在 v3 中不再提供,需装 giskard[llm]>2,<3。
giskard-oss
Giskard-AIApache-2.0活跃维护开源的 LLM Agent 评测与测试库,能自动扫描模型和智能体的安全、公平性、幻觉等风险,帮团队在上线前发现并修复问题。
🐢 Open-Source Evaluation & Testing library for LLM Agents
pip install giskard
pip install "giskard[scan]"README 未说明显存或 GPU 要求;仅要求 Python 3.12+,LLM 判官与扫描生成器通过 provider SDK 调用外部 API。
面向 LLM Agent 的开源评测与红队测试库,用场景化 eval 和漏洞扫描验证非确定性输出
开源的 LLM Agent 评测与测试库,能自动扫描模型和智能体的安全、公平性、幻觉等风险,帮团队在上线前发现并修复问题。
核心能力
- 用 Scenario 组合交互与 Check 编写 eval,支持同步与异步目标
- 内置 Groundedness、Conformity、LLMJudge 等 LLM-as-judge 检查
- 按自然语言描述自动生成对抗测试集,覆盖 OWASP LLM Top-10 威胁
- 内置提示注入载荷数据集,可注册自定义 ScenarioGenerator 扩展
- 用 quality_scan 配合 KnowledgeBase 评估 RAG 知识库质量
容易踩的坑
- giskard-agents/v1.0.6giskard-agents v1.0.6最新正式版2026-10-25 · 2026-10-25 07:34 UTC
What's Changed
- fix(deps): bump certifi, filelock and setuptools to clear pip-audit advisories by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2898
- [Security] Exclude litellm compromised version by @pierlj in https://github.com/Giskard-AI/giskard-oss/pull/2896
Full Changelog: https://github.com/Giskard-AI/giskard-oss/compare/giskard-agents/v1.0.5...giskard-agents/v1.0.6
- giskard-agents/v1.0.5giskard-agents v1.0.52026-10-20 · 2026-10-20 11:30 UTC
- giskard-llm/v1.0.3giskard-llm v1.0.32026-10-20 · 2026-10-20 11:27 UTC
- giskard-core/v1.0.3giskard-core v1.0.32026-10-20 · 2026-10-20 11:24 UTC
查看更新说明
What's Changed
- fix(core): resolve kind for parametrized generic subclasses by @MohammadHijjawi97 in https://github.com/Giskard-AI/giskard-oss/pull/2858
- chore(deps): drop unused deps and add deptry check-deps gate by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2875
- fix(ci): regenerate THIRD_PARTY_NOTICES.md for opentelemetry-api by @cursor[bot] in https://github.com/Giskard-AI/giskard-oss/pull/2878
- chore(deps): update astral-sh/setup-uv action to v10.3.0 by @renovate[bot] in https://github.com/Giskard-AI/giskard-oss/pull/2882
- chore(agents): remove unused giskard.agents.config module by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2887
- fix(deps): bump aiohttp to 3.14.5 for CVE-2026-111063/111064 by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2892
- fix(llm): map Anthropic thinking blocks without crashing Foundry completions by @Hartorn in https://github.com/Giskard-AI/giskard-oss/pull/2888
- feat(agents): add opt-in strict template policy by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2885
Full Changelog: https://github.com/Giskard-AI/giskard-oss/compare/giskard-checks/v1.0.6...giskard-core/v1.0.3
- giskard-llm/v1.0.2giskard-llm v1.0.22026-10-09 · 2026-10-09 02:12 UTC
查看更新说明
What's Changed
- chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 by @dependabot[bot] in https://github.com/Giskard-AI/giskard-oss/pull/2855
- fix(checks): escape Rich markup in progress bar and result reports by @MohammadHijjawi97 in https://github.com/Giskard-AI/giskard-oss/pull/2852
- fix(agents): prevent TypeSafe secret exfiltration by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2860
- chore(deps): bump fsspec and multidict for pip-audit by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2862
- fix(llm): normalize nested structured output schemas in translators by @kevinmessiaen in https://github.com/Giskard-AI/giskard-oss/pull/2861
- chore(deps): bump langgraph-sdk from 0.4.2 to 0.4.4 in the uv group across 1 directory by @dependabot[bot] in https://github.com/Giskard-AI/giskard-oss/pull/2866
Full Changelog: https://github.com/Giskard-AI/giskard-oss/compare/v3.0.1...giskard-llm/v1.0.2
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
[!IMPORTANT] Giskard v3 is a fresh rewrite designed for dynamic, multi-turn testing of AI agents. This release drops heavy dependencies for better efficiency while introducing a more powerful AI vulnerability scanner and enhanced RAG evaluation — both now shipping natively in
giskard-scan, with no dependency on v2. Only the legacy scan for tabular/ML models remains v2-only. Giskard v2 remains available but is no longer actively maintained. Follow progress → Read the v3 Announcement · Roadmap
Install
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + vulnerability / quality scan
pip install "giskard[openai]" # provider SDK for LLM judges / generators
Requires Python 3.12+.
| Extra | Adds |
|---|---|
| (none) | giskard-checks and dependencies |
scan | giskard-scan |
openai / anthropic / … | provider SDKs (see pyproject.toml optional deps) |
Telemetry: optional aggregated analytics via giskard-core. No prompts or outputs are sent.
Opt out with export DO_NOT_TRACK=1 or export GISKARD_TELEMETRY_DISABLED=1 (or the same keys in a .env file in the working directory). Set them before import to skip creating ~/.giskard/id; setting them later still stops further sends.
Details: giskard-core README.
Giskard is an open-source Python library for testing and evaluating agentic systems. The v3 architecture is a modular set of focused packages — each carrying only the dependencies it needs — built from scratch to wrap anything: an LLM, a black-box agent, or a multi-step pipeline.
| Status | Package | Description |
|---|---|---|
| ✅ Stable | giskard-checks | Testing & evaluation — scenario API, built-in checks, LLM-as-judge |
| ✅ Stable | giskard-scan | Agent vulnerability scanner + RAG/quality evaluation — red teaming, prompt injection, jailbreaks & harmful content (vulnerability_scan, successor of v2 Scan), plus knowledge-base quality eval (quality_scan, successor of v2 RAGET) |
These build on three foundational libraries — giskard-core (shared utilities & telemetry), giskard-llm (provider-agnostic LLM routing), and giskard-agents (agent & workflow orchestration) — which are pulled in automatically and rarely used directly.
Giskard Checks — create and apply evals for testing agents
pip install giskard-checks
Giskard Checks is a lightweight library for creating evaluations (evals) that test LLM-based systems — from simple assertions to LLM-as-judge assessments. Unlike traditional unit tests, evals are designed for non-deterministic outputs where the same input can produce different valid responses.
Use Giskard Checks to:
- Catch regressions — verify your system still behaves correctly after changes
- Validate RAG quality — check if answers are grounded in retrieved context
- Enforce safety rules — ensure outputs conform to your content policies
- Evaluate multi-turn agents — test full conversations, not just single exchanges
Built-in evals include string matching, comparisons, regex, semantic similarity, and LLM-as-judge checks (Groundedness, Conformity, LLMJudge).
Concepts
- Target — your system under test: any sync/async callable
(inputs) -> outputs(optionally withtrace) - Scenario — one eval: interactions + checks
- Check — assertion or LLM judge over the trace
- Suite — many scenarios run together
giskard.agents.Generator is an LLM client for workflows/judges — not the same as
giskard.checks input generators (LLMGenerator) that synthesize user messages.
Quickstart
In a script without a running event loop:
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # replace with your model / agent
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 = scenario.run_sync()
result.print_report()
In a notebook cell or inside an async function, await the scenario instead:
result = await scenario.run()
result.print_report()
Groundedness is an LLM judge — install a provider extra (e.g. pip install "giskard[openai]") and set the matching API key. Default model: openai/gpt-4o-mini.
See the full docs for Suites, LLMJudge, multi-turn scenarios, and more.
Giskard Scan — vulnerability scanner for AI agents
pip install "giskard[scan]" # or: pip install giskard-scan
Giskard Scan is the red-teaming and vulnerability scanning layer for agentic systems. It generates adversarial test suites automatically from a plain-language description of your agent, covering prompt injection, harmful content, stereotypes, misinformation, and more.
Use Giskard Scan to:
- Red-team your agent — automatically generate adversarial inputs across OWASP LLM Top-10 threat categories
- Run prompt-injection probes — built-in dataset of injection payloads ready to use
- Extend with custom generators — pass your own
ScenarioGeneratorinstances togenerate_suite, or register them onvulnerability_suite_generator_registry
Quickstart
import asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Replace with your agent / model call
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 generators also need an LLM provider extra and API key (same as Checks judges above).
Looking for Giskard v2?
Giskard v2 included Scan (automatic vulnerability detection) and RAGET (RAG evaluation test set generation).
For LLM agents, both are superseded in v3 by giskard-scan: use vulnerability_scan in place of the v2 LLM scan, and quality_scan (with KnowledgeBase) in place of RAGET.
v3 works with ML models too — wrap one as a target and evaluate it with giskard-checks or giskard-scan. What the examples below cover is the v2-only automatic tabular scan — the detector suite that introspects a giskard.Model + giskard.Dataset to auto-detect performance, bias, and robustness issues — along with the giskard.testing ML test suite and the Giskard Hub. These are not planned for v3.
pip install "giskard[llm]>2,<3"
Scan — automatically detect performance, bias & security issues
Wrap your model and run the scan:
import giskard
import pandas as pd
# Replace my_llm_chain with your actual LLM chain or model inference logic
def model_predict(df: pd.DataFrame):
"""The function takes a DataFrame and must return a list of outputs (one per row)."""
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)
RAGET — generate evaluation datasets for RAG applications
Automatically generate questions, reference answers, and context from your knowledge base:
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Load your knowledge base documents
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",
)
We welcome contributions from the AI community! Read this guide to get started, and join our thriving community on Discord.
Follow the progress and share feedback: v3 Announcement · Roadmap
🌟 Leave us a star, it helps the project to get discovered by others and keeps us motivated to build awesome open-source tools! 🌟
❤️ If you find our work useful, please consider sponsoring us on GitHub. With a monthly sponsoring, you can get a sponsor badge, display your company in this readme, and get your bug reports prioritized. We also offer one-time sponsoring if you want us to get involved in a consulting project, run a workshop, or give a talk at your company.