3. 에이전트 호출 함수 정의
mlflow.genai.evaluate()에 전달할 predict 함수를 정의합니다. 이 함수는 inputs dict를 받아서 에이전트의 응답 문자열을 반환해야 합니다.
Serving Endpoint 호출 방식
배포된 엔드포인트를 호출하는 방식입니다. 프로덕션 환경의 실제 성능을 측정할 때 사용합니다.response.choices[0].message.content 구조 설명
Serving Endpoint는 OpenAI ChatCompletion API와 동일한 응답 구조를 따릅니다:
Agent 직접 호출 방식 (개발 중 테스트)
배포 전에 로컬에서 에이전트 코드를 직접 호출하여 빠르게 테스트할 때 사용합니다.4. 평가 실행
기본 실행 (내장 스코어러 3종)
아래 코드는 평가 데이터셋의 각 질문에 대해predict_fn을 호출하고, 3가지 내장 스코어러로 응답 품질을 채점합니다. 결과는 자동으로 현재 MLflow Experiment에 기록됩니다.
결과 테이블 확인
개별 질문별 점수를 DataFrame으로 확인할 수 있습니다. 낮은 점수를 받은 항목을 집중적으로 분석하세요.5. 내장 스코어러 상세
Faithfulness 사용 (RAG 평가)
retrieved_context가 있어야 동작합니다. RAG 파이프라인에서 검색된 문서를EvaluationResult에 함께 반환해야 합니다.
커스텀 Guidelines 스코어러
조직별 답변 규칙(한국어 작성, SQL 포함 등)을Guidelines로 정의하면 자동으로 채점됩니다.
6. 커스텀 스코어러 작성
내장 스코어러로 부족할 때 직접 만들 수 있습니다.@scorer 데코레이터 동작 원리
@scorer 데코레이터를 붙인 함수는 MLflow 평가 프레임워크가 자동으로 호출합니다. 함수의 파라미터 이름에 따라 자동으로 값이 주입됩니다:
inputs: 평가 데이터셋의 입력 값 (eval_dataset[i]["inputs"])outputs:predict_fn이 반환한 에이전트 응답 문자열expectations: 평가 데이터셋의 기대 값 (eval_dataset[i]["expectations"])
{"score": 숫자, "justification": "이유 문자열"} 형식의 dict입니다.
7. Lakeflow Job으로 자동화
평가를 주기적으로 실행하려면 노트북을 만들어 Lakeflow Job에 등록합니다. 이렇게 하면 모델 변경이나 데이터 업데이트 후에도 품질을 지속적으로 모니터링할 수 있습니다.평가 노트북 (eval_notebook.py)
아래 노트북은 평가 데이터셋 로드 -> 에이전트 호출 -> 평가 실행 -> 결과를 Delta 테이블에 기록하는 전 과정을 자동화합니다.Job 등록 (Databricks CLI)
아래 명령은 매일 오전 9시(한국 시간)에 평가 노트북을 자동 실행하는 Lakeflow Job을 생성합니다.Cron 표현식 해석: 0 0 9 * * ?
즉, **매일 오전 9시 0분 0초 (Asia/Seoul 시간대)**에 실행됩니다.
트러블슈팅
인증 실패: PERMISSION_DENIED 또는 401 Unauthorized
타임아웃: TimeoutError 또는 응답이 매우 느림
점수가 비정상적으로 낮을 때
correctness/mean이 0.3 이하로 나온다면 에이전트 문제가 아니라 평가 데이터셋 문제일 수 있습니다:
expected_response가 너무 구체적이면 의미는 맞지만 표현이 다른 답변에 낮은 점수를 줌- 핵심 키워드 중심으로 기대 답변을 작성하고, 세부 표현은 유연하게 허용하세요