핵심 요약
LLM 평가는 단순 정확도가 아니라 안전성·일관성·비용까지 따지는 복합 측정이다. 3개월간 promptfoo, DeepEval, UK AI Safety Institute의 Inspect를 사내 3개 프로덕트에 모두 적용해 본 결과, CI 통합 빠르기는 promptfoo, 단위 테스트 친화성은 DeepEval, 안전성·red team은 Inspect가 명확히 우세했다.
1. 한 줄 비교
| 도구 | 강점 | 약점 |
|---|---|---|
| promptfoo | YAML로 빠른 회귀 테스트, CI 친화 | 복잡한 평가 흐름 작성이 어색 |
| DeepEval | pytest 통합, 14개 표준 metric | 대규모 평가 셋 관리가 약함 |
| Inspect | 에이전트·red team·다단 평가 | 학습 곡선 있음, Python 전용 |
2. promptfoo — 모델 회귀 5분 셋업
# promptfooconfig.yaml
prompts:
- "다음 텍스트를 한국어로 요약해줘:\n{{text}}"
providers:
- anthropic:messages:claude-sonnet-4-6
- openai:chat:gpt-5
tests:
- vars: {text: file://samples/news_001.txt}
assert:
- type: llm-rubric
value: "주요 사건 3가지 이상 언급, 의견 표현 없음"
promptfoo eval이면 끝. 결과 웹 리포트가 PR 코멘트에 자동 첨부되도록 CI에 묶는 게 가장 큰 효용.
3. DeepEval — pytest로 metric 계산
from deepeval import assert_test
from deepeval.metrics import AnswerRelevancyMetric, HallucinationMetric
def test_rag_answer():
metric = AnswerRelevancyMetric(threshold=0.8)
assert_test(case, [metric, HallucinationMetric(threshold=0.1)])
개발자가 평소 쓰는 pytest 인프라에 그대로 얹는다. pytest -n auto 병렬도 그대로 동작. CI/CD에 가장 자연스러운 통합.
4. Inspect — 에이전트·다단·red team
UK AISI가 만든 도구라 평가 구조 자체가 학술적이다. Task, Solver, Scorer로 분리. 도구 사용·코드 실행·다단 추론까지 평가 가능하고, inspect view로 trace를 자세히 본다. 안전성 평가가 필요하다면 사실상 표준.
5. 평가 데이터셋 관리
도구마다 약점. 결국 사내 표준은 jsonl + git LFS로 통일하고, 도구별 어댑터를 얇게 만드는 게 정답. promptfoo의 file://, DeepEval의 Dataset.from_jsonl, Inspect의 sample_dataset 모두 jsonl 받는다.
6. LLM-as-judge 비용
| 전략 | 1,000건 평가 비용 | 인간 평가 일치율 |
|---|---|---|
| Sonnet 4.6 단독 judge | $3.20 | 84% |
| Haiku 4.5 단독 judge | $0.42 | 78% |
| Sonnet judge + Haiku triage | $0.88 | 83% |
7. 결정 가이드
- PR마다 회귀 — promptfoo
- 유닛 테스트로 metric 강제 — DeepEval
- 안전성·자율 에이전트·다단 — Inspect
- 실서비스 트래픽 모니터링은 Phoenix/LangSmith로 따로 (별도 글 참고)
자주 묻는 질문
Q. 세 도구 동시 사용은? 가능. promptfoo가 PR 게이트, DeepEval이 단위 테스트, Inspect가 분기별 안전성 평가로 분리하면 충돌 없음.

댓글 0