[!IMPORTANT] Giskard v3 是为 AI 智能体进行动态、多轮测试而做的全新重写。此版本移除了沉重的依赖以提升效率,同时引入了更强大的 AI 漏洞扫描器和增强的 RAG 评估——两者现在都原生随
giskard-scan(测试版)提供,且不依赖 v2。只有针对表格/ML 模型的旧版扫描仍仅由 v2 提供。 Giskard v2 仍然可用,但已不再积极维护。 关注进展 → 阅读 v3 公告 · 路线图
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + vulnerability / quality scan
pip install "giskard[openai]" # provider SDK for LLM judges / generators
需要 Python 3.12+。
| 附加项 | 添加内容 |
|---|---|
| (无) | giskard-checks 及其依赖 |
遥测: 通过 giskard-core 提供可选的聚合分析。不会发送任何提示词或输出。
如需退出,请在导入 Giskard 之前设置:export DO_NOT_TRACK=1 或 export GISKARD_TELEMETRY_DISABLED=1。
详情:giskard-core README。
Giskard 是一个用于测试和评估智能体系统的开源 Python 库。v3 架构由一组模块化的聚焦包组成——每个包只携带其所需的依赖——完全从头构建,可封装任何东西:LLM、黑盒智能体或多步骤流水线。
这些包构建在三个基础库之上——giskard-core(共享工具与遥测)、giskard-llm(与提供商无关的 LLM 路由)以及 giskard-agents(智能体与工作流编排)——它们会被自动引入,极少被直接使用。
pip install giskard-checks
Giskard Checks 是一个轻量级库,用于创建测试基于 LLM 的系统的评估(evals)——从简单的断言到 LLM-as-judge 评估。与传统单元测试不同,evals 专为非确定性输出而设计,即相同的输入可能产生不同的有效响应。
使用 Giskard Checks 可以:
内置评估包括字符串匹配、比较、正则表达式、语义相似度以及 LLM-as-judge 检查(Groundedness、Conformity、LLMJudge)。
(inputs) -> outputs(可选带 trace)giskard.agents.Generator 是用于工作流/评判器的 LLM 客户端——不同于
giskard.checks 中用于合成用户消息的输入生成器(LLMGenerator)。
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # replace with your model / 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 是一个 LLM 评判器——安装一个提供商附加包(例如 pip install "giskard[openai]")并设置相应的 API 密钥。默认模型:openai/gpt-4o-mini。
有关 Suites、LLMJudge、多轮场景等更多信息,请参阅完整文档。
pip install "giskard[scan]" # or: pip install giskard-scan
Giskard Scan 是面向智能体系统的红队测试与漏洞扫描层。它会根据您智能体的自然语言描述自动生成对抗性测试套件,涵盖提示注入、有害内容、刻板印象、错误信息等。
使用 Giskard Scan 可以:
ScenarioGenerator 实例传给 generate_suite,或在 vulnerability_suite_generator_registry 上注册它们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())
扫描生成器同样需要 LLM 提供商附加包和 API 密钥(与上面的 Checks 评判器相同)。
Giskard v2 包含 Scan(自动漏洞检测)和 RAGET(RAG 评估测试集生成)。
对于 LLM 智能体,两者在 v3 中都被 giskard-scan 取代:使用 vulnerability_scan 替代 v2 的 LLM 扫描,使用 quality_scan(配合 KnowledgeBase)替代 RAGET。
v3 也适用于 ML 模型——将一个模型封装为目标,然后用 giskard-checks 或 giskard-scan 进行评估。下面示例所涵盖的是仅限 v2 的自动表格扫描——即通过检查 giskard.Model + giskard.Dataset 来自动检测性能、偏差和鲁棒性问题的检测器套件——以及 giskard.testing ML 测试套件和 Giskard Hub。这些功能未计划在 v3 中提供。
pip install "giskard[llm]>2,<3"
封装您的模型并运行扫描:
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)
从您的知识库中自动生成问题、参考答案和上下文:
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",
)
我们欢迎 AI 社区的贡献!阅读本指南开始参与,并加入我们在 Discord 上蓬勃发展的社区。
🌟 给我们点个 Star,这有助于项目被更多人发现,并激励我们持续构建出色的开源工具!🌟
❤️ 如果您觉得我们的工作有用,请考虑在 GitHub 上赞助我们。通过按月赞助,您可以获得赞助徽章、在此 readme 中展示您的公司,并获得 bug 报告的优先处理。如果您希望我们参与咨询项目、举办工作坊或在贵公司进行演讲,我们也提供一次性赞助。
scan | giskard-scan |
openai / anthropic / … | 提供商 SDK(参见 pyproject.toml 可选依赖) |
| 状态 | 包名称 | 描述 |
|---|
| ✅ 测试版 | giskard-checks | 测试与评估 —— 场景 API、内置检查、LLM-as-judge |
| ✅ 测试版 | giskard-scan | 智能体漏洞扫描器 + RAG/质量评估 —— 红队测试、提示注入、越狱与有害内容(vulnerability_scan,是 v2 Scan 的继任者),以及知识库质量评估(quality_scan,是 v2 RAGET 的继任者) |