단일 턴 테스트 케이스
단일 턴 테스트 케이스
DeepEval에서 평가의 가장 기본 단위는 LLM 테스트 케이스(LLMTestCase)예요. 테스트 케이스가 어떤 LLM 상호작용을 담고, 메트릭은 그 상호작용을 기준에 맞춰 점수 내죠. 이 페이지에서는 단건(단일 턴) 상호작용을 다루는 LLMTestCase를 구성하는 각 파라미터를 하나씩 살펴볼게요.
LLM "상호작용"이란
LLMTestCase를 정의하고 싶은 지점이 바로 상호작용이에요. 예를 들어 RAG 전용 메트릭인 AnswerRelevancyMetric, FaithfulnessMetric, ContextualRelevancyMetric을 쓸 때는 상호작용 범위를 RAG 파이프라인 레벨로 잡는 게 가장 좋아요. 그러면 파이프라인 전체의 입출력을 하나의 테스트 케이스로 평가할 수 있죠.
LLM 테스트 케이스
메트릭마다 요구하는 LLMTestCase 파라미터 조합은 다르지만, input과 actual_output은 예외 없이 필수예요. 평가에 쓰든 아니든 마찬가지고요.
한 가지 주의할 점이 있어요. 대화형 메트릭(conversational metrics)은 개별 LLM 응답이 아니라 대화 전체를 평가하는 메트릭이라서 LLMTestCase를 평가하는 데는 쓸 수 없어요. 다행히 deepeval의 대부분 메트릭은 대화형이 아니라서, 편리하게 LLMTestCase에 그대로 적용할 수 있어요.
Input
사용자가 애플리케이션에 넣는 입력값이에요. 테스트 파일의 예시를 보면 이렇게 구성해요.
import deepeval
from deepeval.metrics import AnswerRelevancyMetric
from deepeval.test_case import LLMTestCase
from deepeval import assert_test
def test_llm():
test_case = LLMTestCase(input="...", actual_output="...")
answer_relevancy_metric = AnswerRelevancyMetric()
Expected Output
expected_output은 선택 파라미터로, 이상적인 출력이 무엇일지 나타내요. 다만 이 파라미터가 필요한지 여부는 평가하려는 메트릭에 따라 달라져요. 기억할 점은, 테스트 케이스가 통과하려고 expected_output이 actual_output과 정확히 일치해야 하는 건 아니라는 점이에요. deepeval은 비결정적(non-deterministic)인 LLM 출력을 평가하기 위해 다양한 방법을 쓰거든요.
Retrieval Context
retrieval_context는 선택 파라미터로, 런타임에 RAG 파이프라인이 검색한 결과를 담아요. 이 값을 제공하면 context를 기준 삼아 리트리버가 얼마나 잘 작동하는지 평가할 수 있어요.
Token cost
토큰 비용은 다음 두 경우에 유용해요.
token_cost에 의존하는 커스텀 메트릭을 만들 때- Confident AI에
token_cost를 로깅할 때
from deepeval.test_case import LLMTestCase
test_case = LLMTestCase(token_cost=1.32, ...)
Completion Time
완료 시간도 비슷하게 두 가지 상황에서 써요.
completion_time에 의존하는 커스텀 메트릭을 만들 때- Confident AI에
completion_time을 로깅할 때
from deepeval.test_case import LLMTestCase
test_case = LLMTestCase(completion_time=7.53, ...)
이미지 포함하기
LLMTestCase는 이미지도 담을 수 있어요. 멀티모달을 지원하는 메트릭, 이를테면 RAG 메트릭이나 멀티모달 전용 메트릭과 함께 쓰면 되죠. 케이스 안에 이미지가 있어야만 동작하는 메트릭도 따로 있어요.
테스트 케이스를 플래키로 표시하기
메트릭도 플래키로 표시할 수 있어요. 플래키 메트릭의 실패는 테스트 케이스의 통과/실패 상태를 절대 결정하지 않아요. 그래서 모든 평가에는 threshold를 가진 비플래키 메트릭이 적어도 하나 필요하죠.
테스트 케이스로 평가 실행하기
테스트 케이스를 평가에 활용하는 방식은 여러 가지예요. 그중 하나는 원샷 독립형(One-Off Standalone) 실행인데, 개별 메트릭을 단일 테스트 케이스에 실행해 디버깅하거나 커스텀 평가 파이프라인을 구성할 때 써요.
더 알아보기
- LLM 평가 소개 — 테스트 실행·메트릭·데이터셋 전체 흐름
- LLM 평가 메트릭 소개 —
LLMTestCase에 적용 가능한 메트릭들 - Confident AI LLM 평가 문서 — 클라우드 기반 평가 워크플로