번역 자료 / / 2025. 5. 19. 12:48

챗봇 평가하기 (Evaluate a chatbot)

이 가이드에서는 챗봇에 대한 평가 환경을 설정하는 방법을 안내합니다.
이 과정을 통해 고정된 데이터셋을 기반으로 애플리케이션의 성능을 신속하고 신뢰성 있게 측정할 수 있습니다.
이러한 인사이트를 빠르게 얻으면, 자신 있게 반복 개발할 수 있습니다.

이 튜토리얼에서는 다음을 다룹니다.

  • 성능 측정을 위한 초기 골든 데이터셋(golden dataset) 생성
  • 성능 측정에 사용할 평가 지표(metrics) 정의
  • 다양한 프롬프트 또는 모델로 평가 실행
  • 결과를 수동으로 비교
  • 결과를 시간에 따라 추적
  • CI/CD에서 자동화된 테스트 설정

자세한 평가 워크플로우는 How-to 가이드와 evaluate 및 aevaluate(비동기 평가) 레퍼런스 문서를 참고하세요.


1. 환경 설정(Setup)

필요한 의존성을 설치합니다.
이 튜토리얼에서는 OpenAI를 사용하지만, LangSmith는 어떤 모델과도 함께 사용할 수 있습니다.

pip install -U langsmith openai

LangSmith 트레이싱을 활성화하려면 환경 변수를 설정하세요.

export LANGSMITH_TRACING="true"
export LANGSMITH_API_KEY="<Your LangSmith API key>"
export OPENAI_API_KEY="<Your OpenAI API key>"

2. 데이터셋 생성(Create a dataset)

애플리케이션을 테스트하고 평가하려면 평가할 데이터포인트를 정의해야 합니다.

  • 스키마: 각 데이터포인트는 최소한 애플리케이션의 입력값을 포함해야 하며, 가능하다면 기대 출력값도 정의하는 것이 좋습니다. 완벽한 기대 출력을 정의하지 못해도 괜찮습니다. 평가는 반복적인 과정입니다.
  • 수량: 몇 개를 준비해야 할지에 대한 정답은 없지만, 10~50개만으로도 충분한 가치를 얻을 수 있습니다. 처음에는 소수의 예시로 시작해도 됩니다.
  • 수집 방법: 대부분의 팀은 처음 10~20개 데이터포인트를 수작업으로 만듭니다. 이후 실제 사용자 데이터를 참고해 점차 확장해 나갑니다.

아래는 5개의 QA(질문-답변) 예시 데이터셋을 LangSmith에 업로드하는 코드입니다.

from langsmith import Client

client = Client()

# 데이터셋 정의
dataset_name = "QA Example Dataset"
dataset = client.create_dataset(dataset_name)
client.create_examples(
    dataset_id=dataset.id,
    examples=[
        {
            "inputs": {"question": "What is LangChain?"},
            "outputs": {"answer": "A framework for building LLM applications"},
        },
        {
            "inputs": {"question": "What is LangSmith?"},
            "outputs": {"answer": "A platform for observing and evaluating LLM applications"},
        },
        {
            "inputs": {"question": "What is OpenAI?"},
            "outputs": {"answer": "A company that creates Large Language Models"},
        },
        {
            "inputs": {"question": "What is Google?"},
            "outputs": {"answer": "A technology company known for search"},
        },
        {
            "inputs": {"question": "What is Mistral?"},
            "outputs": {"answer": "A company that creates Large Language Models"},
        }
    ]
)

LangSmith UI의 Datasets & Testing 페이지에서 QA Example Dataset을 확인할 수 있습니다.


3. 평가 지표 정의(Define metrics)

데이터셋을 만든 후, 응답을 평가할 지표(metrics)를 정의할 수 있습니다.
예상 답변이 있다면, 실제 답변과 비교하여 평가할 수 있습니다.

(이하 코드 예시 및 평가자 정의는 원문 참고)


4. 평가 실행(Run Evaluations)

정의한 평가자와 데이터셋을 사용해 다양한 프롬프트, 모델로 평가를 실행할 수 있습니다.

(여러 모델, 프롬프트, 평가자 조합에 대한 코드 예시는 원문 참고)


5. 결과 비교(Comparing results)

여러 번의 평가 결과를 LangSmith UI의 Experiments 탭에서 비교할 수 있습니다.
여러 실험을 나란히 비교하거나, 상세 정보를 확인할 수 있습니다.


6. CI/CD에서 자동화된 테스트 설정(Set up automated testing to run in CI/CD)

이제 평가를 자동화하여 CI/CD 파이프라인에서 실행할 수 있습니다.
예를 들어, 특정 평가 지표(예: concision 점수)가 80% 이상이어야 통과하도록 테스트를 작성할 수 있습니다.

def test_length_score() -> None:
    """Test that the length score is at least 80%."""
    experiment_results = evaluate(
        ls_target, # Your AI system
        data=dataset_name, # The data to predict and grade over
        evaluators=[concision, correctness], # The evaluators to score the results
    )
    # This will be cleaned up in the next release:
    feedback = client.list_feedback(
        run_ids=[r.id for r in client.list_runs(project_name=experiment_results.experiment_name)],
        feedback_key="concision"
    )
    scores = [f.score for f in feedback]
    assert sum(scores) / len(scores) >= 0.8, "Aggregate score should be at least .8"

7. 결과 추적(Track results over time)

LangSmith UI의 Experiments 탭에서 시간에 따른 평가 결과를 추적할 수 있습니다.
Git 브랜치 등과 연동하여 코드 변경과 실험 결과를 함께 관리할 수 있습니다.


결론(Conclusion)

이 튜토리얼에서는

  • 초기 테스트셋 생성
  • 평가 지표 정의
  • 실험 실행 및 비교
  • CI/CD 자동화
  • 결과 추적
    까지의 전체 과정을 다루었습니다.

평가는 반복적이고 지속적인 과정입니다.
실제 운영 데이터에 대한 평가 등 다양한 방법도 있으니, 추가 정보는 How-to 가이드와 온라인 평가 가이드를 참고하세요.


참고 코드(Reference code)

(원문에 있는 전체 코드 스니펫은 공식 문서에서 확인하실 수 있습니다.)


이 번역은 [Cursor 웹사이트 번역 가이드]의 규칙을 준수하여 작성되었습니다.


참고:

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유