import mlflow
import mlflow.genai
from mlflow.genai.scorers import Guidelines, Correctness, Safety, RetrievalGroundedness
import pandas as pd
# 평가 데이터셋 준비
eval_dataset = pd.DataFrame([
{
"inputs": {"question": "Databricks의 Unity Catalog란 무엇인가요?"},
"expected_outputs": "Unity Catalog는 Databricks의 통합 거버넌스 솔루션입니다.",
},
{
"inputs": {"question": "Delta Lake의 ACID 트랜잭션을 설명해주세요."},
"expected_outputs": "Delta Lake는 ACID 트랜잭션을 지원하여 데이터 일관성을 보장합니다.",
},
])
# 평가할 앱 함수 정의 (이미 배포된 모델이나 로컬 함수 모두 가능)
def my_rag_app(inputs):
question = inputs["question"]
# 실제 앱 호출 로직
answer = call_rag_pipeline(question)
return {"answer": answer}
# 평가 실행
with mlflow.start_run(run_name="rag_eval_v1"):
results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=my_rag_app,
scorers=[
Guidelines(guidelines="답변은 한국어로 작성되어야 합니다."),
Correctness(),
Safety(),
RetrievalGroundedness(),
],
)
print(results.metrics)
# {'correctness/v1/mean': 0.85, 'safety/v1/mean': 1.0,
# 'retrieval_groundedness/v1/mean': 0.78, ...}