Giskard Scan (자동 레드팀 테스트)

Giskard Scan (자동 레드팀 테스트)

Giskard Scan은 테스트를 대신 작성해 주는 기능이에요. 에이전트를 문장 한 줄로 설명하면, 그 설명에 맞는 테스트 케이스를 만들고 에이전트에 실행해서 어떤 시나리오가 에이전트를 깨뜨리는지 보고해요. 대부분의 테스트 케이스는 레드팀(red teaming)으로, 사용자나 공격자가 공격하기 전에 일부러 스스로를 공격해서 실패 지점을 찾는 방식이에요.

스캔 결과가 "아무것도 못 찾음"이어도 그건 해당 시나리오가 에이전트를 깨뜨리지 않았다는 뜻이지, 에이전트가 안전하다는 뜻은 아니에요.

설치

스캔 기능은 별도 extras로 설치해요. Giskard v3는 Python 3.12 이상이 필요해요.

pip install --pre "giskard[scan,openai]"

취약점 스캔 예제

에이전트를 감싸고, 취약점 스캔을 실행하는 흐름은 이렇게 생겼어요. 대상(target)은 Python에서 호출 가능한 어떤 것이든 가능해요 — RAG 파이프라인, 에이전트, 원격 API 전부 그렇게 감쌀 수 있어요.

from pydantic import BaseModel

class AgentInput(BaseModel):
    question: str

class AgentOutput(BaseModel):
    answer: str

async def my_agent(inputs: AgentInput) -> AgentOutput:
    # Call your own LLM app, chain, or agent here
    answer = await my_llm_app(inputs.question)
    return AgentOutput(answer=answer)

그다음 에이전트 설명과 언어를 지정해 vulnerability_scan을 실행하면, 적대적(adversarial) 스위트를 생성해 모든 시나리오를 실행하고 리포트를 출력해요.

from giskard.scan import vulnerability_scan

suite_result = await vulnerability_scan(
    target=my_agent,
    description="A Q&A agent that answers questions about our product.",
    languages=["en"],
)

스캔이 다루는 위협

스캔은 프롬프트 인젝션, 유해 콘텐츠 생성, 고정관념, 잘못된 정보 등 다양한 공격 표면을 커버해요. LLM을 이용해 적대적 시나리오를 생성하고, 또 다른 LLM이 판사(judge)가 되어 각 응답이 취약점을 드러내는지 판단해요.

더 알아보기