본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 5장: Inspect AI - 에이전트 수준 평가
2026년 3월 10일·AI / ML·

5장: Inspect AI - 에이전트 수준 평가

UK AISI의 Inspect AI를 분석합니다. 에이전트 벤치마크 GAIA, SWE-Bench, Cybench의 실행, 샌드박싱 환경, 태스크/솔버/스코러 아키텍처, 멀티에이전트 평가까지 다룹니다.

17분578자10개 섹션
aievaluationmlops
공유
ai-eval-harness5 / 10
12345678910
이전4장: HELM - 종합적 모델 평가 프레임워크다음6장: 평가 도구 생태계 비교와 선택 기준

이 장에서 배울 내용

  • Inspect AI의 탄생 배경과 설계 철학
  • 태스크(Task)/솔버(Solver)/스코러(Scorer) 아키텍처
  • 에이전트 벤치마크: GAIA, SWE-Bench, Cybench
  • 샌드박싱을 통한 안전한 평가 환경
  • 멀티에이전트 평가와 외부 에이전트 연동
  • Inspect Cyber: 사이버 보안 영역 평가

벤치마크에서 에이전트 평가로

3장과 4장에서 살펴본 lm-evaluation-harness와 HELM은 모델의 지식과 추론 능력을 평가하는 데 탁월합니다. 그러나 현대 AI 시스템은 단순히 질문에 답하는 것을 넘어, 도구를 사용하고, 파일을 수정하고, 웹을 탐색하고, 코드를 실행하는 **에이전트(Agent)**로 진화하고 있습니다.

에이전트 평가는 전통적 벤치마크와 근본적으로 다른 도전을 제시합니다.

  • 에이전트는 여러 단계에 걸쳐 **도구 호출(Tool Use)**을 수행합니다
  • 동일한 문제에 대해 여러 가지 유효한 해결 경로가 존재합니다
  • 평가 과정에서 에이전트가 외부 시스템과 상호작용해야 합니다
  • 안전하지 않은 행동(파일 삭제, 네트워크 공격 등)을 격리된 환경에서 수행해야 합니다

UK AISI(AI Safety Institute)가 개발한 Inspect AI는 바로 이러한 에이전트 수준의 평가를 위해 설계된 프레임워크입니다.


태스크/솔버/스코러 아키텍처

Inspect AI의 핵심 아키텍처는 세 가지 구성요소의 조합으로 이루어집니다.

Task: 무엇을 평가할 것인가

태스크는 데이터셋, 솔버, 스코러를 하나로 묶는 최상위 단위입니다.

basic_task.py
python
from inspect_ai import Task, task
from inspect_ai.dataset import Sample, MemoryDataset
from inspect_ai.scorer import match
from inspect_ai.solver import generate, system_message
 
 
@task
def math_reasoning() -> Task:
    """수학 추론 능력을 평가하는 태스크입니다."""
    
    dataset = MemoryDataset(
        samples=[
            Sample(
                input="127과 83의 합에서 45를 빼면 얼마입니까?",
                target="165",
            ),
            Sample(
                input="한 변의 길이가 7cm인 정사각형의 넓이는?",
                target="49",
            ),
        ]
    )
    
    return Task(
        dataset=dataset,
        solver=[
            system_message("당신은 수학 문제를 단계적으로 풀어주는 전문가입니다. 최종 답은 숫자만 작성하세요."),
            generate(),
        ],
        scorer=match(numeric=True),
    )

Solver: 어떻게 문제를 해결할 것인가

솔버는 모델이 문제를 해결하는 전략을 정의합니다. 단순한 한 번의 생성부터 복잡한 멀티스텝 에이전트 루프까지 다양한 전략을 조합할 수 있습니다.

agent_solver.py
python
from inspect_ai.solver import (
    Solver,
    TaskState,
    generate,
    solver,
    system_message,
    use_tools,
)
from inspect_ai.tool import bash, python
 
 
@solver
def coding_agent() -> Solver:
    """코드를 작성하고 실행하여 문제를 해결하는 에이전트 솔버입니다."""
    
    return chain(
        system_message(
            "당신은 Python 코드를 작성하고 실행하여 문제를 해결하는 에이전트입니다. "
            "bash()와 python() 도구를 사용하여 코드를 실행할 수 있습니다. "
            "문제를 단계적으로 분석하고, 코드를 작성하여 검증하세요."
        ),
        use_tools([bash(), python()]),
        generate(),
    )

Scorer: 결과를 어떻게 채점할 것인가

스코러는 모델의 출력을 정답과 비교하여 점수를 산출합니다. 단순 문자열 매칭부터 LLM 기반 채점까지 다양한 방식을 지원합니다.

custom_scorer.py
python
from inspect_ai.scorer import Score, Scorer, Target, scorer, CORRECT, INCORRECT
 
 
@scorer(metrics=["accuracy"])
def code_execution_scorer() -> Scorer:
    """코드 실행 결과를 기반으로 채점합니다."""
    
    async def score(state: TaskState, target: Target) -> Score:
        # 모델이 생성한 코드의 실행 결과를 확인
        last_output = state.messages[-1].content
        
        if target.text.strip() in last_output:
            return Score(value=CORRECT, explanation="실행 결과가 정답과 일치합니다.")
        
        return Score(value=INCORRECT, explanation=f"기대: {target.text}, 실제: {last_output}")
    
    return score

에이전트 벤치마크

Inspect AI는 100개 이상의 사전 빌드 평가를 제공하며, 특히 에이전트 벤치마크에서 강점을 보입니다.

GAIA: 범용 에이전트 평가

GAIA(General AI Assistants)는 실제 세계의 복잡한 질문에 답하기 위해 웹 검색, 파일 처리, 계산 등 다양한 도구를 복합적으로 사용해야 하는 벤치마크입니다.

gaia_eval.py
python
from inspect_ai import eval
from inspect_ai.model import get_model
 
# GAIA 벤치마크 실행
results = eval(
    tasks=["gaia"],
    model=get_model("openai/gpt-4o"),
    max_messages=30,      # 에이전트 루프 최대 메시지 수
    max_tool_calls=20,    # 최대 도구 호출 수
)

GAIA의 문제는 난이도에 따라 3단계로 구분됩니다.

레벨설명필요 도구 수인간 정답률
Level 1단일 도구로 해결 가능1-2개92%
Level 2복수 도구 조합 필요3-5개86%
Level 3복잡한 다단계 추론 + 도구 사용5개 이상79%

SWE-Bench: 소프트웨어 엔지니어링 평가

SWE-Bench는 실제 오픈소스 프로젝트의 GitHub 이슈를 해결하는 능력을 평가합니다. 에이전트는 코드베이스를 탐색하고, 버그를 찾고, 패치를 작성하고, 테스트를 통과시켜야 합니다.

swe_bench_eval.py
python
from inspect_ai import Task, task
from inspect_ai.dataset import hf_dataset
from inspect_ai.scorer import includes
from inspect_ai.solver import generate, use_tools
from inspect_ai.tool import bash
 
 
@task
def swe_bench_lite() -> Task:
    """SWE-Bench Lite 벤치마크를 실행합니다."""
    
    return Task(
        dataset=hf_dataset(
            "princeton-nlp/SWE-bench_Lite",
            split="test",
        ),
        solver=[
            use_tools([bash(timeout=120)]),
            generate(),
        ],
        scorer=includes(),
        sandbox="docker",  # Docker 샌드박스에서 실행
    )

Cybench: 사이버 보안 평가

Cybench는 CTF(Capture The Flag) 스타일의 사이버 보안 도전 과제를 통해 에이전트의 보안 관련 능력을 평가합니다.

Warning

Cybench와 같은 보안 관련 벤치마크는 반드시 격리된 샌드박스 환경에서 실행해야 합니다. 에이전트가 네트워크 스캔, 취약점 공격 등의 행동을 수행하므로, 호스트 시스템이나 외부 네트워크에 영향을 미치지 않도록 해야 합니다.


샌드박싱

에이전트 평가에서 샌드박싱(Sandboxing)은 선택이 아닌 필수입니다. Inspect AI는 Docker 기반 샌드박스를 네이티브로 지원합니다.

sandbox_config.py
python
from inspect_ai import Task, task
from inspect_ai.solver import generate, use_tools
from inspect_ai.tool import bash, python
 
 
@task
def sandboxed_coding_eval() -> Task:
    """샌드박스된 환경에서 코딩 평가를 수행합니다."""
    
    return Task(
        dataset="my_coding_dataset",
        solver=[
            use_tools([
                bash(timeout=60),
                python(timeout=60),
            ]),
            generate(),
        ],
        scorer=code_execution_scorer(),
        sandbox="docker",
        sandbox_config={
            "image": "python:3.12-slim",
            "memory_limit": "2g",
            "cpu_limit": 2,
            "network_mode": "none",  # 네트워크 격리
        },
    )

샌드박스의 격리 수준은 평가 목적에 따라 조정합니다.

격리 수준설정사용 사례
최소파일시스템만 격리일반 코딩 태스크
중간파일시스템 + 네트워크 제한웹 스크래핑 관련 태스크
최대완전 격리 + 리소스 제한보안 관련 태스크

멀티에이전트 평가

Inspect AI는 단일 모델 평가를 넘어 멀티에이전트 시스템의 평가도 지원합니다.

외부 에이전트 연동

Inspect AI의 특별한 기능 중 하나는 외부 에이전트 시스템을 직접 평가할 수 있다는 점입니다. Claude Code, Codex CLI, Gemini CLI 등 외부 에이전트를 Inspect AI의 평가 파이프라인에 연결하여 동일한 벤치마크에서 비교할 수 있습니다.

external_agent.py
python
from inspect_ai import Task, task
from inspect_ai.solver import Solver, TaskState, solver
 
 
@solver
def external_agent_solver(agent_command: str) -> Solver:
    """외부 에이전트를 솔버로 래핑합니다."""
    
    async def solve(state: TaskState) -> TaskState:
        import subprocess
        
        # 외부 에이전트에게 태스크 전달
        result = subprocess.run(
            [agent_command, "--task", state.input_text],
            capture_output=True,
            text=True,
            timeout=300,
        )
        
        state.output = result.stdout
        return state
    
    return solve

에이전트 간 상호작용 평가

멀티에이전트 시나리오에서는 에이전트 간의 협력이나 경쟁을 평가할 수 있습니다. 예를 들어, 한 에이전트가 문제를 분석하고 다른 에이전트가 해결하는 분업 구조의 효과를 측정할 수 있습니다.

Tip

멀티에이전트 평가에서는 전체 시스템의 결과뿐 아니라 각 에이전트의 개별 기여도도 함께 측정하는 것이 좋습니다. 이를 통해 병목이 되는 에이전트를 식별하고 시스템을 최적화할 수 있습니다.


Inspect Cyber

Inspect Cyber는 Inspect AI의 사이버 보안 평가 전문 확장입니다. CTF 도전 과제를 에이전트에게 부여하고, 해결 과정과 결과를 체계적으로 평가합니다.

terminal
bash
# Inspect Cyber 설치
pip install inspect-cyber
 
# CTF 벤치마크 실행
inspect eval inspect_cyber/ctf \
    --model openai/gpt-4o \
    --sandbox docker \
    --max-messages 50

Inspect Cyber가 평가하는 영역은 다음과 같습니다.

  • 취약점 분석: 코드에서 보안 취약점을 발견하는 능력
  • 리버스 엔지니어링: 바이너리를 분석하여 동작을 이해하는 능력
  • 암호학: 암호화된 데이터를 해독하는 능력
  • 웹 보안: 웹 애플리케이션의 취약점을 찾는 능력

CLI를 통한 실행과 결과 확인

기본 실행

terminal
bash
# 단일 태스크 실행
inspect eval my_task.py --model openai/gpt-4o
 
# 여러 모델로 동일 태스크 실행
inspect eval my_task.py \
    --model openai/gpt-4o \
    --model anthropic/claude-3-5-sonnet \
    --model google/gemini-1.5-pro
 
# 결과를 특정 디렉토리에 저장
inspect eval my_task.py \
    --model openai/gpt-4o \
    --log-dir ./eval_logs/

결과 확인

terminal
bash
# 평가 로그 조회
inspect log list
 
# 특정 실행 결과 상세 보기
inspect log read <log-id>
 
# 웹 뷰어로 결과 시각화
inspect view

Inspect AI의 웹 뷰어는 각 태스크 인스턴스에 대한 모델의 전체 대화 기록, 도구 호출 내역, 점수를 시각적으로 보여줍니다. 에이전트가 어떤 경로로 문제를 해결했는지 추적할 수 있어, 디버깅과 분석에 매우 유용합니다.


핵심 요약

  • Inspect AI는 에이전트 수준의 복잡한 평가에 특화된 프레임워크로, UK AISI가 개발했습니다.
  • 태스크/솔버/스코러의 3요소 아키텍처를 통해 평가의 각 측면을 독립적으로 구성할 수 있습니다.
  • GAIA, SWE-Bench, Cybench 등 에이전트 벤치마크를 기본 지원합니다.
  • Docker 기반 샌드박싱으로 에이전트의 행동을 안전하게 격리합니다.
  • 외부 에이전트(Claude Code, Codex CLI 등)와의 연동을 통해 다양한 에이전트 시스템을 비교 평가할 수 있습니다.
  • Inspect Cyber는 사이버 보안 영역의 전문 평가를 제공합니다.

다음 장 예고

6장에서는 지금까지 살펴본 주요 프레임워크 외에 평가 도구 생태계 전체를 조망합니다. DeepEval, promptfoo, Evidently AI, W&B Weave, LangSmith, Ragas 등 실무 도구들을 비교하고, 학술 평가와 실무 평가의 차이점, 그리고 상황에 맞는 프레임워크 선택 기준을 제시합니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#ai#evaluation#mlops

관련 글

AI / ML

6장: 평가 도구 생태계 비교와 선택 기준

DeepEval, promptfoo, Evidently AI, W&B Weave, LangSmith, Ragas 등 실무 평가 도구를 비교합니다. 학술 vs 실무 평가의 차이점과 프레임워크 선택 의사결정 트리를 제시합니다.

2026년 3월 12일·17분
AI / ML

4장: HELM - 종합적 모델 평가 프레임워크

Stanford CRFM의 HELM을 분석합니다. 7가지 메트릭 차원, 16가지 핵심 시나리오, HELM Lite와 MedHELM 변형, 실행 방법과 결과 분석까지 종합적 평가 접근법을 탐구합니다.

2026년 3월 8일·16분
AI / ML

7장: 커스텀 평가 하네스 설계와 구축

도메인 특화 평가 하네스를 처음부터 설계하고 구축합니다. 평가 태스크 설계, 메트릭 정의, LLM-as-Judge 구현, 인간 평가 통합, Golden Dataset 관리를 코드와 함께 실습합니다.

2026년 3월 14일·19분
이전 글4장: HELM - 종합적 모델 평가 프레임워크
다음 글6장: 평가 도구 생태계 비교와 선택 기준

댓글

목차

약 17분 남음
  • 이 장에서 배울 내용
  • 벤치마크에서 에이전트 평가로
  • 태스크/솔버/스코러 아키텍처
    • Task: 무엇을 평가할 것인가
    • Solver: 어떻게 문제를 해결할 것인가
    • Scorer: 결과를 어떻게 채점할 것인가
  • 에이전트 벤치마크
    • GAIA: 범용 에이전트 평가
    • SWE-Bench: 소프트웨어 엔지니어링 평가
    • Cybench: 사이버 보안 평가
  • 샌드박싱
  • 멀티에이전트 평가
    • 외부 에이전트 연동
    • 에이전트 간 상호작용 평가
  • Inspect Cyber
  • CLI를 통한 실행과 결과 확인
    • 기본 실행
    • 결과 확인
  • 핵심 요약
  • 다음 장 예고