AI 워크플로 평가하기

AI 워크플로 평가하기 (Evaluate an AI workflow)

이 튜토리얼에서는 Ragas로 AI 워크플로, 여기서는 간단한 커스텀 이메일 지원 티켓 분류(triage) 워크플로를 평가하는 방법을 배워요. 평가 주도 개발(evaluation-driven development)로 워크플로를 평가하고 개선하는 흐름을 익힐 수 있어요.

출처: 문서

본문

flowchart LR
    A["Email Query"] --> B["Rule based Info Extractor"]
    B --> C["Template + LLM Response"]
    C --> D["Email Reply"]

먼저 이메일에서 필요한 정보를 추출하고, 올바른 템플릿으로 라우팅한 뒤 LLM으로 응답을 생성하는 간단한 워크플로를 테스트해요.

python -m ragas_examples.workflow_eval.workflow

다음으로 워크플로를 위한 몇 가지 샘플 이메일 질의와 기대 출력을 적고, 이를 CSV 파일로 변환해요.

import pandas as pd

dataset_dict = [
    {
        "email": "Hi, I'm getting error code XYZ-123 when using version 2.1.4 of your software. Please help!",
        "pass_criteria": "category Bug Report; product_version 2.1.4; error_code XYZ-123; response references both version and error code"
    },

    {
        "email": "I need to dispute invoice #INV-2024-001 for 299.99 dollars. The charge seems incorrect.",
        "pass_criteria": "category Billing; invoice_number INV-2024-001; amount 299.99; response references invoice and dispute process"
    }]
pd.DataFrame(dataset_dict).to_csv("datasets/test_dataset.csv", index=False)

워크플로의 성능을 평가하기 위해, 워크플로의 출력을 통과 기준(pass criteria)과 비교해 pass/fail을 돌려주는 LLM 기반 지표를 정의해요.

from ragas.metrics import DiscreteMetric

my_metric = DiscreteMetric(
    name="response_quality",
    prompt="Evaluate the response based on the pass criteria: {pass_criteria}. Does the response meet the criteria? Return 'pass' or 'fail'.\nResponse: {response}",
    allowed_values=["pass", "fail"],
)

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

from ragas import experiment

@experiment()
async def run_experiment(row):
    response = workflow_client.process_email(
        row["email"]
    )

    score = my_metric.score(
        llm=llm,
        response=response.get("response_template", " "),
        pass_criteria=row["pass_criteria"]
    )

    experiment_view = {
        **row,
        "response": response.get("response_template", " "),
        "score": score.value,
        "score_reason": score.reason,
    }
    return experiment_view

이제 워크플로에 어떤 변경을 가하든 실험을 실행해서 성능에 어떤 영향을 주는지 확인할 수 있어요. 그리고 이전 결과와 비교해서 개선됐는지, 악화됐는지도 확인할 수 있어요.

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

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

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

더 알아보기 (Learn more)