Skip to main content

MLflow 기반 평가

Agent Bricks는 MLflow와 긴밀하게 통합되어 에이전트 품질을 체계적으로 평가합니다.
기능설명
Tracing에이전트 실행의 전체 과정을 추적 (Production Monitoring for MLflow 활성화 필요)
AI JudgeLLM 기반 자동 품질 판정
Synthetic Task Generation합성 데이터로 대규모 테스트
라벨링된 데이터셋UC 테이블로 Import/Export하여 체계적 관리

MLflow Tracing으로 에이전트 동작 추적

Tracing은 에이전트의 각 단계(검색, LLM 호출, 도구 실행 등)를 시각적으로 추적합니다.

활성화 방법

  1. 워크스페이스에서 Production Monitoring for MLflow 활성화
  2. 에이전트 Build 탭에서 질문 입력 후 View Trace 클릭

Trace에서 확인할 수 있는 정보

항목설명
Retrieval어떤 문서/청크가 검색되었는지, 유사도 점수
LLM Call어떤 프롬프트가 전송되었는지, 토큰 사용량
Tool ExecutionUC Function, MCP 서버 호출 결과
Routing DecisionSupervisor가 어떤 서브 에이전트를 선택했는지, 그 이유
Latency각 단계별 소요 시간
참고 디버깅 팁: 에이전트가 엉뚱한 답변을 하면, Trace에서 Retrieval 단계를 먼저 확인하세요. 관련 없는 문서가 검색되고 있다면 Knowledge Source의 Content Description을 조정해야 합니다.

AI Judge (LLM-as-Judge) 설정

AI Judge는 LLM을 평가자로 사용하여 에이전트 응답의 품질을 자동으로 판정합니다.

평가 메트릭

메트릭설명측정 대상
Correctness응답이 기대 답변과 일치하는지라벨링된 기대 답변 대비 정확도
Groundedness응답이 검색된 문서에 근거하는지환각(hallucination) 방지
Relevance질문에 대한 응답의 관련성주제 이탈 방지
Safety유해하거나 부적절한 내용이 없는지안전성 검증
Chunk Relevance검색된 청크가 질문과 관련 있는지RAG 검색 품질

설정 방법

  1. Examples 탭 에서 라벨링된 질문-답변 쌍 추가 (최소 20개 권장)
  2. Evaluate 버튼 클릭
  3. 각 메트릭별 점수와 세부 피드백 확인
  4. 점수가 낮은 항목의 Trace를 분석하여 원인 파악

Synthetic Task Generation — 자동 평가 데이터셋 생성

수동으로 수백 개의 테스트 질문을 작성하는 것은 비현실적입니다. Synthetic Task Generation은 Knowledge Source를 분석하여 자동으로 질문-답변 쌍을 생성합니다.

사용 방법

  1. Examples 탭에서 Generate synthetic tasks 클릭
  2. Knowledge Source 기반으로 다양한 질문이 자동 생성됨
  3. 생성된 질문을 검토하고 필요에 따라 수정
  4. AI Judge로 자동 평가 실행
주의 주의: Synthetic Task는 출발점일 뿐입니다. 반드시 도메인 전문가(SME)가 생성된 질문의 품질을 검토하고, 실제 사용자 질문 패턴을 반영하여 보완해야 합니다.

평가 데이터셋 관리

  • 생성된 데이터셋은 Unity Catalog 테이블 로 Export하여 버전 관리
  • 여러 버전의 에이전트를 동일한 데이터셋으로 비교 평가
  • 프로덕션에서 수집된 사용자 질문을 Import하여 데이터셋 보강

평가 워크플로우

1. 에이전트 생성 후 Build 탭에서 수동 테스트 (5~10개 질문)

2. AI Playground에서 View Trace로 실행 과정 확인

3. Examples 탭에서 라벨링된 질문/가이드라인 추가 (20개 이상)

4. Synthetic Task Generation으로 테스트 질문 자동 생성 (50개 이상)

5. AI Judge로 전체 평가 실행 → 메트릭 점수 확인

6. SME에게 공유 링크 전달 → 전문가 피드백 수집

7. 가이드라인/Knowledge Source 조정 → 재테스트 → 반복

8. 목표 점수 달성 시 배포 진행

프로덕션 모니터링 포인트

배포 후 지속적으로 모니터링해야 할 항목:
카테고리모니터링 항목기준
품질AI Judge 점수 추이Correctness 80% 이상 유지
품질인용 정확도 (KA)출처가 올바르게 참조되는 비율
라우팅라우팅 정확도 (Supervisor)올바른 서브 에이전트로 위임되는 비율
사용자좋아요/싫어요 비율부정 피드백 20% 초과 시 즉시 개선
성능응답 지연 (Latency)P95 기준 10초 이내
안정성오류율실패한 쿼리 비율 5% 미만
비용토큰 사용량일별 DBU 소비량 추적
참고 알림 설정: Databricks SQL Alert 또는 외부 모니터링 도구(Datadog, PagerDuty 등)와 연동하여 임계값 초과 시 자동 알림을 받도록 설정하세요.

배포 절차: Review App → Model Serving → REST API

Step 1: Review App으로 SME 검증

  1. 에이전트 설정 페이지에서 Share 클릭
  2. 공유 링크를 도메인 전문가에게 전달
  3. SME가 직접 질문하고 피드백 제출
  4. 피드백을 반영하여 에이전트 개선

Step 2: Model Serving 엔드포인트 배포

  1. 에이전트 페이지에서 Deploy 클릭
  2. 엔드포인트 이름, 컴퓨트 사이즈 설정
  3. 배포 완료 후 엔드포인트 상태가 Ready인지 확인

Step 3: REST API로 연동

REST API (curl) 예시:
curl -X POST \
  https://<workspace-url>/serving-endpoints/<endpoint-name>/invocations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "이번 달 매출 현황 알려줘"}
    ]
  }'
Python SDK 예시:
from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

response = w.serving_endpoints.query(
    name="<endpoint-name>",
    messages=[
        {"role": "user", "content": "이번 달 매출 현황 알려줘"}
    ]
)

print(response.choices[0].message.content)

배포 아키텍처

┌─────────────────────────────────────────────────┐
│                 Model Serving                     │
│  ┌───────────────────────────────────────────┐   │
│  │         Supervisor Agent Endpoint          │   │
│  │                                           │   │
│  │  ┌─────────────┐  ┌─────────────────────┐│   │
│  │  │ KA Endpoint  │  │ Genie Space (API)   ││   │
│  │  └──────┬──────┘  └──────────┬──────────┘│   │
│  │         │                     │           │   │
│  │  ┌──────┴──────┐  ┌──────────┴──────────┐│   │
│  │  │Vector Search│  │  SQL Warehouse      ││   │
│  │  │   Index     │  │  (UC Tables)        ││   │
│  │  └─────────────┘  └─────────────────────┘│   │
│  └───────────────────────────────────────────┘   │
│                                                   │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐ │
│  │ UC Functions│  │ MCP Servers│  │  MLflow    │ │
│  └────────────┘  └────────────┘  │  Monitoring │ │
│                                   └────────────┘ │
└─────────────────────────────────────────────────┘

워크스페이스 간 마이그레이션

Knowledge Assistant를 다른 워크스페이스로 복제해야 할 경우:
  1. 타겟 워크스페이스에 필요한 리소스를 먼저 생성 (Vector Search Index, Volume 등)
  2. 소스 워크스페이스에서 SDK로 설정 정보 조회
  3. 타겟 워크스페이스에서 create_knowledge_source API로 재생성
  4. Instructions, Examples 데이터도 Export/Import하여 이전
  5. 타겟 워크스페이스에서 AI Judge로 동일한 품질 수준인지 검증

평가가 Agent Bricks에서 특히 중요한 이유

일반적인 소프트웨어에서는 유닛 테스트와 통합 테스트로 품질을 보장합니다. 하지만 AI 에이전트는 비결정적(non-deterministic) 시스템이므로, 동일한 입력에도 다른 출력이 나올 수 있습니다. 이 특성이 Agent Bricks에서 평가를 특히 중요하게 만드는 이유입니다.

AI 에이전트 평가의 고유한 어려움

어려움설명Agent Bricks 대응
비결정적 출력같은 질문에 다른 답변이 생성될 수 있음AI Judge가 “의미적 동등성”으로 평가 (단어 일치가 아닌 의미 일치)
주관적 품질”좋은 답변”의 기준이 도메인마다 다름Guidelines로 도메인별 품질 기준 정의 가능
다단계 파이프라인검색 실패 vs 생성 실패를 구분해야 함Tracing으로 각 단계별 품질을 개별 추적
멀티 에이전트 복잡성라우팅 오류, 컨텍스트 전달 실패 등 다양한 실패 모드Supervisor Trace에서 라우팅 판단 과정 확인
시간 경과에 따른 변화데이터 업데이트, 모델 변경으로 품질이 변동자동 최적화 + 정기 평가 루프

평가하지 않으면 발생하는 문제

에이전트 배포 → 사용자 불만 접수 → 원인 파악 불가 → 긴급 패치 →
다른 질문 품질 저하 → 사용자 신뢰 상실 → 프로젝트 폐기

vs.

에이전트 구축 → 평가 데이터셋 준비 → AI Judge 자동 평가 →
목표 미달 항목 개선 → 재평가 통과 → 배포 → 정기 모니터링 →
지속적 품질 유지
위험 평가 없이 배포하는 것은 테스트 없이 코드를 프로덕션에 배포하는 것과 같습니다. Agent Bricks의 AI Judge는 이 과정을 자동화해주므로, 반드시 활용하세요. 최소 50개 이상의 테스트 케이스로 평가한 후 배포하는 것을 권장합니다.

평가 데이터셋 설계 전략

평가의 품질은 평가 데이터셋의 품질 에 의해 결정됩니다. 좋은 평가 데이터셋을 설계하는 전략을 상세히 알아봅니다.

데이터셋 구성 원칙

원칙설명예시
대표성실제 사용자 질문 패턴을 반영단순 조회, 비교 질문, 복합 질문을 균등 배분
다양성다양한 주제, 난이도, 형식을 포함쉬운 FAQ + 어려운 분석 질문 + 에지 케이스
균형긍정/부정 케이스를 모두 포함답변 가능한 질문 + “문서에 없는” 질문
현실성인위적이지 않은 자연스러운 질문오타, 약어, 구어체 포함
추적 가능성각 테스트 케이스의 출처와 의도 기록태그: “FAQ”, “에지케이스”, “다국어” 등

질문 카테고리별 비율 권장사항

카테고리비율설명예시 질문
직접 조회30%문서/데이터에 명확한 답이 있는 질문”연차 일수는 몇 일인가요?”
추론 필요20%여러 정보를 종합해야 하는 질문”3년차 직원의 연차 + 특별 휴가 합계는?”
비교/분석15%두 가지 이상을 비교하는 질문”A 정책과 B 정책의 차이점은?”
범위 외 질문15%에이전트가 답변할 수 없어야 하는 질문”내일 날씨는?” (HR봇에 대한 질문)
모호한 질문10%의도가 불명확한 질문”그거 알려줘”
에지 케이스10%극단적이거나 예외적인 질문매우 긴 질문, 특수문자 포함, 다국어 혼합

Synthetic Task Generation 활용 전략

Synthetic Task Generation은 Knowledge Source를 분석하여 질문을 자동 생성합니다. 그러나 이것만으로는 충분하지 않습니다. 효과적인 활용 방법:
1단계: Synthetic Task Generation으로 50~100개 초기 질문 생성

2단계: SME가 생성된 질문을 검토
    - 부자연스러운 질문 삭제 (약 20~30%)
    - 실제 사용자 질문 패턴에 맞게 수정

3단계: SME가 누락된 카테고리의 질문 수동 추가
    - 범위 외 질문 (Synthetic에서 잘 생성되지 않음)
    - 모호한 질문
    - 에지 케이스

4단계: 각 질문에 Guidelines 추가
    - "응답에 정책명이 포함되어야 합니다"
    - "수치 데이터가 정확해야 합니다"
    - "인용 출처가 올바르게 매핑되어야 합니다"

5단계: UC 테이블로 Export하여 버전 관리
    - 에이전트 업데이트 시 동일 데이터셋으로 회귀 테스트

Guidelines 작성 가이드

Guidelines는 AI Judge가 응답을 평가할 때 사용하는 도메인 특화 기준 입니다. 잘 작성된 Guidelines는 평가의 정확도를 크게 높입니다.
Guidelines 유형설명예시
내용 기준응답에 포함되어야 할 정보”연차 일수와 사용 기한이 모두 포함되어야 합니다”
형식 기준응답의 형식 요구사항”표 형태로 정리되어야 합니다”
인용 기준출처 인용 요구사항”정책명과 조항 번호가 인용되어야 합니다”
부정 기준포함되면 안 되는 내용”개인적인 의견이나 추측이 포함되면 안 됩니다”
거부 기준답변을 거부해야 하는 조건”문서에 없는 내용이면 ‘확인 불가’로 답해야 합니다”

MLflow Evaluate 통합 패턴

Agent Bricks의 내장 평가 기능 외에, MLflow Evaluate API 를 직접 사용하면 더 세밀하고 자동화된 평가 파이프라인을 구축할 수 있습니다.

Agent Bricks UI vs MLflow Evaluate API

기능Agent Bricks UIMLflow Evaluate API
평가 실행Examples 탭에서 Evaluate 클릭Python 코드로 실행
데이터셋 관리UI에서 수동 관리UC 테이블로 프로그래밍 관리
커스텀 메트릭기본 5가지 메트릭사용자 정의 메트릭 추가 가능
자동화수동 실행CI/CD 파이프라인 연동 가능
비교 평가제한적여러 버전의 에이전트를 동시 비교
이력 관리기본 이력MLflow Experiment로 전체 이력 추적

MLflow Evaluate를 활용한 자동 평가 파이프라인

import mlflow
from databricks.sdk import WorkspaceClient

# 에이전트 엔드포인트 설정
w = WorkspaceClient()
endpoint_name = "customer-support-supervisor"

# 평가 데이터셋 로드 (UC 테이블에서)
eval_df = spark.table("ml.evaluation.agent_eval_dataset").toPandas()

# 에이전트 응답 수집 함수
def get_agent_response(question):
    response = w.serving_endpoints.query(
        name=endpoint_name,
        messages=[{"role": "user", "content": question}]
    )
    return response.choices[0].message.content

# 응답 수집
eval_df["predictions"] = eval_df["request"].apply(get_agent_response)

# MLflow Evaluate 실행
with mlflow.start_run(run_name="agent-eval-v2.1"):
    results = mlflow.evaluate(
        data=eval_df,
        predictions="predictions",
        targets="expected_response",
        model_type="question-answering",
        extra_metrics=[
            mlflow.metrics.genai.relevance(),
            mlflow.metrics.genai.faithfulness(),
        ],
        evaluator_config={
            "col_mapping": {
                "inputs": "request",
                "context": "retrieved_context",
            }
        },
    )

    # 결과 확인
    print(f"Relevance: {results.metrics['relevance/mean']:.2f}")
    print(f"Faithfulness: {results.metrics['faithfulness/mean']:.2f}")

CI/CD 연동 패턴

에이전트 설정 변경(Instructions, Knowledge Source 등) 시 자동으로 평가를 실행하는 파이프라인입니다.
에이전트 설정 변경 (Instructions 수정, Knowledge Source 업데이트)

자동 트리거: MLflow Evaluate 실행 (50개 이상 테스트 케이스)

┌─ 모든 메트릭이 임계값 이상 → 자동 배포 (또는 승인 요청)
└─ 하나라도 임계값 미만 → 알림 + 배포 차단

    임계값 예시:
    - Correctness ≥ 0.80
    - Groundedness ≥ 0.85
    - Relevance ≥ 0.80
    - Safety = 1.00 (안전성은 100% 필수)
참고 임계값 설정 팁: 처음에는 낮은 임계값(예: Correctness 0.70)으로 시작하고, 에이전트 품질이 개선됨에 따라 점진적으로 높이세요. 처음부터 높은 임계값을 설정하면 배포가 계속 차단되어 팀의 개발 속도가 저하됩니다.

에이전트 유형별 평가 전략

각 에이전트 유형에 따라 중점적으로 평가해야 할 메트릭과 전략이 다릅니다.

Knowledge Assistant 평가 전략

메트릭중요도평가 포인트
Groundedness최우선환각 방지가 KA의 핵심 가치 — 문서에 없는 내용을 만들어내지 않는지
Correctness높음기대 답변과 실제 답변의 의미적 일치도
Chunk Relevance높음검색된 청크가 질문과 관련 있는지 — RAG 파이프라인 품질 지표
Relevance중간질문에 대한 답변의 관련성
Safety필수유해 콘텐츠 생성 여부
KA 특화 평가 시나리오:
  • 문서에 있는 내용에 대한 직접 질문 → Correctness + Groundedness
  • 문서에 없는 내용에 대한 질문 → 거부 응답 생성 여부
  • 여러 문서에 걸친 종합 질문 → 올바른 소스 인용 여부
  • 최신 문서 vs 구버전 문서 → 최신 정보 우선 검색 여부

Genie Space 평가 전략

메트릭중요도평가 포인트
SQL 정확도최우선생성된 SQL이 의도한 결과를 반환하는지
결과 정확도높음SQL 실행 결과가 기대값과 일치하는지
응답 시간중간SQL 실행 + 응답 생성까지의 총 소요 시간
에러율필수SQL 문법 오류, 실행 실패 비율

Supervisor Agent 평가 전략

메트릭중요도평가 포인트
라우팅 정확도최우선올바른 서브 에이전트로 위임되는지
종합 응답 품질높음여러 서브 에이전트 응답을 잘 종합하는지
에러 처리중간서브 에이전트 실패 시 적절하게 대응하는지
권한 준수필수권한 없는 에이전트에 접근하지 않는지

평가 결과 분석 및 개선 루프

평가 결과를 분석하고 에이전트를 개선하는 체계적인 프로세스입니다.

점수가 낮은 항목 분석 흐름

AI Judge 평가 결과 확인

[점수가 낮은 질문 식별]

┌─ Groundedness 낮음
│   └→ Trace에서 Retrieval 확인 → 관련 없는 청크가 검색되었는지?
│       ├── 검색 문제 → Content Description 수정, 문서 재구조화
│       └── 생성 문제 → Instructions에 "문서에 없으면 모른다고 답하라" 추가

├─ Correctness 낮음
│   └→ 기대 답변과 실제 답변 비교 → 어디서 차이가 발생하는지?
│       ├── 검색은 올바른데 답변이 부정확 → Instructions 수정, Examples 추가
│       └── 검색 자체가 잘못됨 → Knowledge Source 보강, 동의어 추가

├─ Relevance 낮음
│   └→ 답변이 질문과 무관한 내용을 포함하는지?
│       └── Instructions에 "질문에 직접 관련된 내용만 답변하라" 추가

└─ Chunk Relevance 낮음
    └→ 검색된 청크가 질문과 관련 없는지?
        ├── 문서 구조 문제 → 헤딩/섹션 구조 개선
        ├── 동의어 문제 → Content Description에 동의어 추가
        └── 검색 설정 문제 → Top-K 조정, 유사도 임계값 조정

평가 이력 관리와 트렌드 분석

정기적인 평가를 통해 에이전트 품질의 트렌드를 추적합니다.
주기활동목적
매주AI Judge 자동 평가 실행 (기존 데이터셋)회귀(Regression) 감지
격주프로덕션 로그에서 실패 질문 수집 → 데이터셋 보강데이터셋 현실성 유지
매월SME 리뷰 + 데이터셋 대규모 업데이트도메인 변화 반영
분기전체 평가 보고서 작성 + 목표 재설정장기 품질 트렌드 관리