프롬프트 평가하기

프롬프트 평가하기 (Prompt Evaluation)

이 튜토리얼에서는 AI 시스템의 일부인 프롬프트, 여기서는 영화 리뷰 감성 분류 프롬프트를 평가하는 간단한 평가 파이프라인을 작성해 봐요. 평가 주도 개발(evaluation-driven development)로 단일 프롬프트를 평가하고 개선하는 법을 배울 수 있어요.

출처: 문서

본문

flowchart LR
    A["'This movie was amazing!<br/>Great acting and plot.'"] --> B["Classifier Prompt"]
    B --> C["Positive"]

영화 리뷰를 긍정·부정으로 분류하는 간단한 프롬프트를 테스트하는 것부터 시작할게요.

먼저 ragas examples를 설치하고 OpenAI API 키를 설정했는지 확인해요.

pip install ragas[examples]
export OPENAI_API_KEY = "your_openai_api_key"

이제 프롬프트를 테스트해요.

python -m ragas_examples.prompt_evals.prompt

이 명령은 입력 "The movie was fantastic and I loved every moment of it!"를 테스트하고 "positive"를 출력해야 해요.

💡 빠른 시작: 완전한 평가가 바로 보고 싶다면 모든 걸 실행하고 CSV 결과를 자동 생성하는 end-to-end 명령으로 바로 건너뛰어도 돼요.

다음으로 프롬프트를 위한 몇 가지 샘플 입력과 기대 출력을 적고, 이를 CSV 파일로 변환해요.

import pandas as pd

samples = [{"text": "I loved the movie! It was fantastic.", "label": "positive"},
    {"text": "The movie was terrible and boring.", "label": "negative"},
    {"text": "It was an average film, nothing special.", "label": "positive"},
    {"text": "Absolutely amazing! Best movie of the year.", "label": "positive"}]
pd.DataFrame(samples).to_csv("datasets/test_dataset.csv", index=False)

이 작업에서 프롬프트의 성능을 측정할 방법이 필요해요. 프롬프트 출력을 기대 출력과 비교해 pass/fail을 돌려주는 지표를 정의할게요.

from ragas.metrics import discrete_metric
from ragas.metrics.result import MetricResult

@discrete_metric(name="accuracy", allowed_values=["pass", "fail"])
def my_metric(prediction: str, actual: str):
    """Calculate accuracy of the prediction."""
    return MetricResult(value="pass", reason="") if prediction == actual else MetricResult(value="fail", reason="")

이제 테스트 데이터셋에서 프롬프트를 실행하고 지표로 평가한 뒤 결과를 CSV 파일에 저장하는 실험 루프를 작성해요.

from ragas import experiment

@experiment()
async def run_experiment(row):

    response = run_prompt(row["text"])
    score = my_metric.score(
        prediction=response,
        actual=row["label"]
    )

    experiment_view = {
        **row,
        "response":response,
        "score":score.value,
    }
    return experiment_view

이제 프롬프트에 어떤 변경을 가하든 실험을 실행해서 성능에 어떤 영향을 주는지 확인할 수 있어요.

추가 파라미터 전달하기

모델이나 설정 같은 추가 파라미터를 실험 함수에 전달할 수 있어요.

@experiment()
async def run_experiment(row, model):
    response = run_prompt(row["text"], model=model)
    score = my_metric.score(
        prediction=response,
        actual=row["label"]
    )

    experiment_view = {
        **row,
        "response": response,
        "score": score.value,
    }
    return experiment_view

# Run with specific parameters
run_experiment.arun(dataset, "gpt-4")

# Or use keyword arguments
run_experiment.arun(dataset, model="gpt-4o")

예제를 처음부터 끝까지 실행하기

  1. OpenAI API 키 설정하기
export OPENAI_API_KEY = "your_openai_api_key"
  1. 평가 실행하기
python -m ragas_examples.prompt_evals.evals

이 명령은 다음을 수행해요.

  • 샘플 영화 리뷰가 담긴 테스트 데이터셋 생성
  • 각 샘플에서 감성 분류 프롬프트 실행
  • 정확도 지표로 결과 평가
  • 결과를 포함한 모든 것을 CSV 파일로 내보내기

축하해요! Ragas로 첫 평가를 성공적으로 실행했어요. 이제 experiments/experiment_name.csv 파일을 열어 결과를 확인하면 돼요.

더 알아보기 (Learn more)