[!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-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(エージェントとワークフローのオーケストレーション)という3つの基盤ライブラリの上に構築されています。これらは自動的に導入され、直接使用されることはほとんどありません。
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)とは異なります。
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())
スキャンのジェネレーターにも、上記のChecksジャッジと同様に、LLMプロバイダーのエクストラとAPIキーが必要です。
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
# 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 の活気あるコミュニティにもぜひ参加してください。
進捗をフォローしてフィードバックをお寄せください: v3アナウンス · ロードマップ
🌟 スターを残してください。プロジェクトが他の人にも見つけてもらいやすくなり、私たちが素晴らしいオープンソースツールを作り続ける原動力になります! 🌟
❤️ 私たちの活動がお役に立つようでしたら、GitHubでのスポンサーをご検討ください。月次スポンサーになると、スポンサーバッジを取得でき、このreadmeに会社を掲載でき、バグ報告を優先的に処理してもらえます。また、コンサルティングプロジェクトへの参加、ワークショップの実施、貴社での講演をご希望の場合には、単発のスポンサーにも対応しています。
giskard-checksscan | giskard-scan |
openai / anthropic / … | プロバイダーSDK(pyproject.toml のオプション依存関係を参照) |
| ステータス | パッケージ | 説明 |
|---|
| ✅ ベータ | giskard-checks | テストと評価 — シナリオAPI、組み込みチェック、LLM-as-judge |
| ✅ ベータ | giskard-scan | エージェント脆弱性スキャナー + RAG/品質評価 — レッドチーミング、プロンプトインジェクション、脱獄、有害コンテンツ(vulnerability_scan、v2 Scan の後継)、およびナレッジベース品質評価(quality_scan、v2 RAGET の後継) |