
🐢 LLM 에이전트용 오픈소스 평가 및 테스트 라이브러리
[!IMPORTANT] Giskard v3은 동적 다중 턴(multi-turn) 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를 import하기 전에 비활성화할 수 있습니다: 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)를 생성하기 위한 경량 라이브러리입니다. 단순한 단언(assertion)부터 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은 에이전트 시스템을 위한 레드 팀 및 취약점 스캐닝 계층입니다. 에이전트를 평문으로 설명하면 프롬프트 인젝션, 유해 콘텐츠, 고정관념, 허위 정보 등을 포괄하는 적대적(adversarial) 테스트 스위트를 자동으로 생성합니다.
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에 회사를 표시하며, 버그 보고의 우선 처리를 받을 수 있습니다. 컨설팅 프로젝트 참여, 워크숍 진행, 또는 회사에서의 발표를 원하신다면 일회성 후원도 가능합니다.
scan | giskard-scan |
openai / anthropic / … | 공급자 SDK (pyproject.toml 선택적 의존성 참조) |
| 상태 | 패키지 | 설명 |
|---|
| ✅ 베타 | giskard-checks | 테스트 및 평가 — 시나리오 API, 내장 체크, LLM-as-judge |
| ✅ 베타 | giskard-scan | 에이전트 취약점 스캐너 + RAG/품질 평가 — 레드 팀(red teaming), 프롬프트 인젝션, 탈옥(jailbreak) 및 유해 콘텐츠 (vulnerability_scan, v2 Scan의 후속), 지식 기반 품질 평가 (quality_scan, v2 RAGET의 후속) |