开发与工程 llm-evaluationred-teamingprompt-injectionrag-evaluationtest-generationllm-as-judge

Giskard

为 LLM 与多轮智能体执行评测、红队测试和测试生成。

FollowAgents 评估 · FARS-2.0
待评估
查看完整评分方法 →

这个 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() 输出报告。内置检查包括字符串匹配、比较、正则、语义相似度,以及 GroundednessConformityLLMJudge 等 LLM 判审。vulnerability_scan(target=..., description=..., languages=...) 接收一个异步目标和自然语言描述,自动生成覆盖提示注入、有害内容、刻板印象与错误信息等范围的对抗测试;也可向 generate_suite 传入自定义 ScenarioGenerator,或注册至 vulnerability_suite_generator_registry。对于 RAG,v3 的 giskard-scan 提供 quality_scanKnowledgeBase 路径;旧版 v2 的 generate_testset 可从知识库生成问题、参考答案和上下文。

  1. 正在迭代客服智能体的 Python 团队,可将多轮 `Scenario` 放入测试流程,检查改动后是否出现行为回归。
  2. 维护 RAG 问答系统的团队,可用 `Groundedness` 检查回答是否基于给定检索上下文。
  3. 上线前需要安全评估的智能体开发者,可用 `vulnerability_scan` 根据产品描述生成提示注入和有害内容等对抗测试。
  4. 有内部攻击样本的安全团队,可实现自定义 `ScenarioGenerator` 并传给 `generate_suite` 扩展扫描覆盖范围。
  5. 仍在运行 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=1export 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-scanvulnerability_scan,将 RAGET 路径迁移为 quality_scanKnowledgeBase。但 v2 的自动表格/ML 扫描(基于 giskard.Modelgiskard.Dataset 的性能、偏差和鲁棒性检测)、giskard.testing ML 测试套件及 Giskard Hub 不计划迁移到 v3。

常见问题

使用 Giskard 是否必须调用外部模型?
不是所有检查都必须。字符串匹配、比较、正则和语义相似度属于内置评测;`Groundedness`、`Conformity`、`LLMJudge` 以及扫描生成器需要提供商额外依赖和 API 密钥。
Giskard 能测试什么形式的目标?
Target 可以是任意同步或异步的 `(inputs) -> outputs` 可调用对象,并可选提供 trace;README 明确列出 LLM、黑盒智能体和多步流水线。
它会上传提示词和模型输出吗?
README 说明 `giskard-core` 的聚合遥测是可选的,且不发送 prompts 或 outputs。可在导入前通过 `DO_NOT_TRACK=1` 或 `GISKARD_TELEMETRY_DISABLED=1` 退出。
从 v2 迁移时有哪些边界?
LLM Scan 和 RAGET 有对应的 v3 路径,但自动表格/ML 扫描、`giskard.testing` ML 测试和 Giskard Hub 仍是 v2 专属,未计划进入 v3。

相关 Agents