
🐢 LLMエージェント向けのオープンソース評価・テストライブラリ
[!IMPORTANT] Giskard v3 は、AIエージェントの動的なマルチターンテストのために設計された、新たな書き直し版です。このリリースでは、より高い効率性のために重量級の依存関係を削除しつつ、より強力なAI脆弱性スキャナーと強化されたRAG評価を導入しています。これらは現在、v2への依存なしに
giskard-scanにネイティブに搭載されています。表形式/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+ が必要です。
| Extra | 追加されるもの |
|---|---|
| (なし) | giskard-checks と依存関係 |
scan | giskard-scan |
openai / anthropic / … | プロバイダー SDK(pyproject.toml のオプション依存関係を参照) |
テレメトリー: giskard-core による任意の集計分析。プロンプトや出力は送信されません。
export DO_NOT_TRACK=1 または export GISKARD_TELEMETRY_DISABLED=1(あるいは作業ディレクトリの .env ファイルに同じキーを設定)でオプトアウトできます。~/.giskard/id の作成をスキップするにはインポート前に設定してください。後から設定した場合でも以降の送信は停止します。
詳細: giskard-core README。
Giskard は エージェント型システムのテストと評価 を行うオープンソースの Python ライブラリです。v3 アーキテクチャは、それぞれが必要な依存関係のみを持つ、焦点を絞ったモジュール式パッケージ群であり、LLM、ブラックボックスエージェント、多段階パイプラインなどあらゆるものをラップできるようゼロから構築されています。
| ステータス | パッケージ | 説明 |
|---|---|---|
| ✅ 安定 | giskard-checks | テストと評価 — シナリオ API、組み込みチェック、LLM-as-judge |
| ✅ 安定 | giskard-scan | エージェント脆弱性スキャナー + RAG/品質評価 — レッドチーミング、プロンプトインジェクション、ジェイルブレイク、有害コンテンツ(vulnerability_scan、v2 Scan の後継)、およびナレッジベース品質評価(quality_scan、v2 RAGET の後継) |
これらは 3 つの基盤ライブラリ — giskard-core(共有ユーティリティとテレメトリー)、giskard-llm(プロバイダー非依存の LLM ルーティング)、giskard-agents(エージェントとワークフローのオーケストレーション)— の上に構築されており、これらは自動的に取り込まれ、直接使用されることはほとんどありません。
pip install giskard-checks
Giskard Checks は、LLMベースのシステムをテストする評価(evals)を作成するための軽量ライブラリです — 単純なアサーションからLLM-as-judgeによる評価まで対応します。従来のユニットテストとは異なり、evalsは非決定的な出力(同じ入力でも異なる有効な応答が生成されうる)向けに設計されています。
Giskard Checks の用途:
組み込みのevalsには、文字列マッチング、比較、正規表現、意味的類似度、LLM-as-judgeチェック(Groundedness、Conformity、LLMJudge)が含まれます。
(inputs) -> outputs(オプションで trace 付き)giskard.agents.Generator はワークフロー/ジャッジ用のLLMクライアントであり、
ユーザーメッセージを合成する giskard.checks の入力ジェネレーター(LLMGenerator)とは異なります。
イベントループが実行されていないスクリプト内で:
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()
ノートブックのセル内、または非同期関数内では、代わりにシナリオを await してください:
result = await scenario.run()
result.print_report()
Groundedness は LLM ジャッジです — プロバイダーの extra をインストールし(例: 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プロバイダーのextraとAPIキーが必要です(上記のChecksのジャッジと同じです)。
Giskard v2にはScan(自動脆弱性検出)とRAGET(RAG評価テストセット生成)が含まれていました。
LLMエージェントについては、v3では両方ともgiskard-scanに取って代わられています。v2のLLMスキャンの代わりにvulnerability_scanを、RAGETの代わりにquality_scan(KnowledgeBaseと併用)を使用してください。
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