Giskard
为 LLM 与多轮智能体执行评测、红队测试和测试生成。
按维度查看评分与理由
证据显示:telemetry 可禁用(DO_NOT_TRACK/GISKARD_TELEMETRY_DISABLED),且声明不发送 prompts 或 outputs;CI 工作流使用最小权限(permissions: {} 或 contents: read),并固定 action 版本;集成测试对外部 PR 有授权门控(authorize job)和 'safe for build' 标签。扣分:未发现用户确认机制(如执行前确认);数据流透明度仅部分(telemetry 说明但未详述数据流向);敏感数据处理未明确(如 API key 处理);依赖安全仅通过 pip-audit 在 dev 组中提及,未显示在 CI 中;外部影响(如网络调用)未明确说明;回滚机制未提及;来源归属仅通过作者字段和版权声明,未验证。
证据显示:README 和 pyproject.toml 中版本号一致(3.0.0b1),依赖声明明确(giskard-checks>=1.0.2b6,<2),CI 测试覆盖多 Python 版本和包。扣分:失败消息未在文档中明确说明(如错误处理指南);依赖可用性未完全验证(如外部 provider SDK 未在 CI 中全部测试)。
证据显示:README 明确目标受众(开发者、研究人员),提供多种使用场景(回归测试、RAG 验证、安全规则、多轮 agent);能力边界通过模块划分(checks, scan, core, llm, agents)清晰;触发精度通过 Scenario 和 Check 概念明确;环境适配通过 Python 3.12+ 和可选 extras 支持多种 provider。扣分:未发现针对不同环境的详细配置指南(如 Docker、云部署)。
证据显示:README 结构清晰,包含安装、快速开始、概念解释;安装说明详细(pip install 和 extras);命名稳定(giskard-checks, giskard-scan 等);示例和 FAQ 通过快速开始和文档链接提供;已知限制在 README 中提及(v2 不再维护,v3 为 beta);许可证为 Apache-2.0;版本号在 pyproject.toml 中明确,但未发现 CHANGELOG 文件;维护责任通过 CONTRIBUTING.md 和社区链接体现。扣分:命名稳定性未完全验证(v3 重写可能改变 API);版本变更日志未提供。
证据显示:输出可用性通过 result.print_report() 和文档中的示例体现;边际价值通过提供自动化扫描和测试生成功能体现;成本效益未明确讨论(如资源消耗、API 成本)。扣分:成本效益未量化。
证据显示:README 中的声明(如功能、架构)有文档链接支持;CI 测试提供部分验证;但未发现独立的第三方验证或交叉来源。扣分:声明可追溯性仅部分(文档链接但未提供具体测试结果);交叉来源验证不足;事实与推断分离不明确。
- 该仓库为 beta 版本,API 可能变化,生产使用需谨慎。
- telemetry 虽可禁用,但默认可能启用,需在导入前设置环境变量。
- 依赖外部 LLM provider,需自行管理 API key 和成本。
- 未发现明确的回滚机制,升级前需备份。
这个 Agent 能做什么,适合哪些场景?
Giskard 是面向智能体系统的开源 Python 测试与评估库,v3 采用模块化、轻量级且 async-first 的架构。主要可直接使用的包是 `giskard-checks`(评测与测试)和 `giskard-scan`(漏洞扫描与 RAG/质量评估,均为 Beta)。它可将同步或异步的 `(inputs) -> outputs` 可调用对象作为 Target,并通过 Scenario、Check 与 Suite 执行多轮或单轮评测。`giskard-checks` 可输出场景运行报告;`giskard-scan` 根据智能体描述生成对抗测试套件并执行漏洞扫描或知识库质量评估。它是嵌入应用代码的 Python 库,而非独立托管的聊天产品;使用 LLM 判审或扫描生成器时需要安装提供商 SDK 并配置相应 API 密钥。
Scenario 先用 .interact(inputs=..., outputs=target) 调用待测系统,再用 .check(...) 对输出或 trace 执行检查,随后通过 await scenario.run() 运行并以 result.print_report() 输出报告。内置检查包括字符串匹配、比较、正则、语义相似度,以及 Groundedness、Conformity、LLMJudge 等 LLM 判审。vulnerability_scan(target=..., description=..., languages=...) 接收一个异步目标和自然语言描述,自动生成覆盖提示注入、有害内容、刻板印象与错误信息等范围的对抗测试;也可向 generate_suite 传入自定义 ScenarioGenerator,或注册至 vulnerability_suite_generator_registry。对于 RAG,v3 的 giskard-scan 提供 quality_scan 与 KnowledgeBase 路径;旧版 v2 的 generate_testset 可从知识库生成问题、参考答案和上下文。
- 正在迭代客服智能体的 Python 团队,可将多轮
Scenario放入测试流程,检查改动后是否出现行为回归。 - 维护 RAG 问答系统的团队,可用
Groundedness检查回答是否基于给定检索上下文。 - 上线前需要安全评估的智能体开发者,可用
vulnerability_scan根据产品描述生成提示注入和有害内容等对抗测试。 - 有内部攻击样本的安全团队,可实现自定义
ScenarioGenerator并传给generate_suite扩展扫描覆盖范围。 - 仍在运行 v2 RAGET 或 LLM Scan 的用户,可评估迁移到 v3 的
quality_scan与vulnerability_scan。
这个 Agent 有哪些优点和局限?
- v3 将评测、扫描、共享核心、LLM 路由和工作流编排拆分为独立包,避免为基础检查引入扫描依赖。
- Scenario API 支持同步或异步 Target、trace 和多轮交互,适合输出非确定性的智能体测试。
giskard-scan可从自然语言智能体描述自动生成对抗测试,并覆盖提示注入、越狱、有害内容等范围。- 既提供常规断言,也提供
Groundedness、Conformity与LLMJudge等 LLM 判审。
giskard-checks与giskard-scan在 README 中均标为 Beta,采用时需接受接口和行为仍可能演进。- LLM 判审与扫描生成器依赖提供商 SDK、匹配 API 密钥及网络连接;并非完全离线的评测方案。
- 运行时要求 Python 3.12+,对较旧的 Python 环境需要升级。
- v2 已不再积极维护;旧版表格/ML 自动扫描仍仅限 v2,且没有迁移到 v3 的计划。
如何安装或部署这个 Agent?
需要 Python 3.12+。基础评测安装:pip install giskard,或仅安装检查包:pip install giskard-checks。扫描功能安装:pip install "giskard[scan]",也可使用 pip install giskard-scan。使用 LLM 判审或扫描生成器时,安装提供商额外依赖,例如 pip install "giskard[openai]",并设置匹配的 API 密钥;README 还列出 anthropic 等提供商额外依赖。若不希望发送可选聚合遥测数据,应在导入前设置 export DO_NOT_TRACK=1 或 export GISKARD_TELEMETRY_DISABLED=1。
如何使用这个 Agent?
最小评测调用可定义 def get_answer(inputs: str) -> str,创建 Scenario("test_france_capital").interact(inputs="What is the capital of France?", outputs=get_answer).check(Groundedness(name="answer is grounded", context="...")),再在 async def main() 中执行 result = await scenario.run() 和 result.print_report()。最小扫描调用可定义 async def my_agent(inputs: str) -> str,然后执行 await vulnerability_scan(target=my_agent, description="A customer support chatbot for an e-commerce platform.", languages=["en"])。Groundedness 默认使用 openai/gpt-4o-mini,因此该示例需相应的提供商额外依赖和 API 密钥。
这个 Agent 与同类方案有什么区别?
相对于已不再积极维护的 Giskard v2,v3 将 LLM 智能体扫描迁移为 giskard-scan 的 vulnerability_scan,将 RAGET 路径迁移为 quality_scan 与 KnowledgeBase。但 v2 的自动表格/ML 扫描(基于 giskard.Model 与 giskard.Dataset 的性能、偏差和鲁棒性检测)、giskard.testing ML 测试套件及 Giskard Hub 不计划迁移到 v3。
常见问题
使用 Giskard 是否必须调用外部模型?
Groundedness、Conformity、LLMJudge 以及扫描生成器需要提供商额外依赖和 API 密钥。Giskard 能测试什么形式的目标?
(inputs) -> outputs 可调用对象,并可选提供 trace;README 明确列出 LLM、黑盒智能体和多步流水线。它会上传提示词和模型输出吗?
giskard-core 的聚合遥测是可选的,且不发送 prompts 或 outputs。可在导入前通过 DO_NOT_TRACK=1 或 GISKARD_TELEMETRY_DISABLED=1 退出。从 v2 迁移时有哪些边界?
giskard.testing ML 测试和 Giskard Hub 仍是 v2 专属,未计划进入 v3。