LLMops

[LLMops] Opik으로 LLM 평가하기

dong_seok 2025. 3. 28. 17:47

이전 포스팅에서 소개한 Opik 프레임워크를 활용하여 실제 LLM 응답을 평가하는 방법에 대해 알아보겠습니다. Opik은 다양한 메트릭을 통해 LLM 출력물의 품질을 체계적으로 평가할 수 있는 프레임워크를 제공합니다.

 

1. Opik 평가의 주요 구성 요소

Opik에서 평가를 진행하기 위해서는 다음 세 가지 핵심 구성요소가 필요합니다:

 

1) 데이터 세트
- LLM 응용 프로그램에 대한 입력과 선택적으로 예상 출력을 나타내는 샘플의 컬렉션
- 각 샘플에 대한 입력 및 예상 출력만 저장하며, LLM 지원서의 출력은 평가 프로세스 중에 계산되고 점수가 매겨집니다.


2) 평가 과제
- 데이터 세트에 저장된 입력을 점수를 매기고 싶은 출력에 매핑합니다. 평가 과제는 일반적으로 프롬프트 템플릿 또는 빌드 중인 LLM 애플리케이션입니다.


3) 메트릭
- LLM 결과물을 채점할 때 사용하려는 메트릭

 

2. 데이터 세트 생성 방법

평가 과제는 직접 만든 LLM 애플리 케이션을 사용하면 되고 메트릭은 이후에 자세히 설명하겠지만 Opik에서 기본적으로 제공해주는 메트릭의 종류가 비교적 다양하기 때문에 이걸 사용해도 됩니다. 그렇다면 문제는 데이터 세트입니다. LLM을 평가하기 위해 필수적으로 요구되는 데이터세트에 대해 Opik은 3가지 생성 방법을 말해주고있습니다.

 

  • Python SDK: Python SDK를 사용하여 데이터 세트를 만들고 여기에 항목을 추가할 수 있습니다.
  • 추적 테이블: 기존에 기록된 추적 내용(예: 프로덕션 애플리케이션의 추적 내용)을 데이터 세트에 추가할 수 있습니다.
  • Opik UI: 수동으로 데이터 세트를 만들고 항목을 추가할 수 있습니다.

 

SDK를 사용해 데이터 세트를 생성하는 방법에 대해 샘플코드를 살펴보겠습니다.

 

from opik import Opik

# Get or create a dataset
client = Opik()
dataset = client.get_or_create_dataset(name="My dataset")

# Add dataset items to it
dataset.insert([
    {"user_question": "Hello, world!", "expected_output": {"assistant_answer": "Hello, world!"}},
    {"user_question": "What is the capital of France?", "expected_output": {"assistant_answer": "Paris"}},
])

 

SDK 활용 시 주요 특징

  • 자동 중복 제거: 동일한 항목을 여러 번 삽입해도 데이터 세트에는 한 번만 저장됩니다.
  • get_or_create_dataset(): 지정된 이름의 데이터 세트가 있으면 가져오고, 없으면 새로 생성합니다.
  • 다양한 형식 지원: JSONL, Pandas 데이터프레임 등 다양한 형식으로 데이터를 추가할 수 있습니다.

3. Online Evaluation 설정 방법

제가 개발하고 있는 에이전트에 평가를 적용하기 위해서는 어떤 방법을 사용하던 retrieval에 사용한 데이터를 기반으로 별도의 dataset을 새롭게 만들어줘야한다는 사실은 변함이 없었습니다. 그래서 dataset 구축에 대해 더 알아볼까하던참에 Opik에서 제공하는 Online Evaluation을 발견했습니다. Online Evaluation 기능을 활용하면 프로덕션 환경에서 실시간으로 LLM을 평가 할 수 있습니다. 이 기능은 별도의 데이터 세트 구축 없이도 실시간 평가가 가능한 장점이 있습니다.

 

먼저 project를 지정하고 online evaluation Tab에 들어가서 Create new rule를 클릭합니다.

 

 

평가 규칙에 필요한 정보를 입력해주겠습니다.

 

 

아직까지 제공하는 Model은 OpenAI, Anthropic, OpenRouter, Ollama, Gemini 처럼 자주 언급되고 활용되는 Modle 위주로 사용이 가능한 것 같았습니다.

 

 

Model을 사용하기 위해서는 해당 LLM의 공급사과 Key를 발급받아 입력해주면 관련 Model을 사용할 수 있게됩니다.

 

 

기본적으로 제공되는 평가지표로는 Hallucination, Moderation, AnswerRelevance가 있고, 기호에 따라 직접 프롬프트를 조정하거나 Custom LLM-as-judge를 만들어서 사용할 수 있습니다.

 

 

기본적으로 제공해주는 Metric이 의미하는 바는 아래와 같습니다.

 

  • Hallucination: LLM 출력에 환각 정보 포함 여부 검사
  • Moderation: LLM 출력에 부적절한 내용 포함 여부 검사
  • AnswerRelevance: LLM 출력이 주어진 맥락과 관련성 검사

 

저는 생성된 답변이 context와 관련이 있는지 확인하고 싶어서 AnswerRelevance를 선택했습니다. 그리고 이제 하단에 input, output, context에 해당하는 값을 mapping을 시켜줘야하는데, 종류가 다양하고 자세한 설명이 없어서 실행 결과값이 계속 0으로 나와서 혼란을 겪었습니다. 여러 시행착오끝에 context는 output.documents를 선택하거나 기본 제공하는 값은 아니지만 input.context라고 입력해도 정상 작동하는 걸 확인했습니다. input은 question이 아닌 query로 하고 output은 answer를 선택하니 정상적으로 작동하였습니다.

 

 

평가가 완료되면 "Feedback scores" 섹션에서 점수와 함께 상세한 평가 이유를 확인할 수 있습니다. 이를 통해 LLM 응답의 품질을 객관적으로 분석할 수 있습니다.

 

 

Opik의 Online Evaluation 기능을 활용하면 배포된 LLM 애플리케이션의 성능을 실시간으로 모니터링하고 평가할 수 있습니다. 현재는 AnswerRelevance 메트릭만 활용했지만, 향후에는 다양한 메트릭과 커스텀 평가 방식을 적용해볼 예정입니다. 또한 별도의 데이터 세트를 구축하여 더 체계적인 평가도 진행할 계획입니다.

'LLMops' 카테고리의 다른 글

[LLMops] 오픈소스 LLM 평가 프레임워크 opik  (0) 2025.03.12