Evaluation
객체이며, 다음을 정의합니다:
- 테스트 예제를 위한
Dataset
또는 딕셔너리 목록. - 하나 이상의 scoring functions.
- 선택적 구성(예: input preprocessing).
Evaluation
를 정의하면, Model
객체나 LLM 애플리케이션 로직이 포함된 사용자 정의 함수에 대해 실행할 수 있습니다. .evaluate()
에 대한 각 호출은 evaluation run을 트리거합니다. Evaluation
객체를 청사진으로, 각 실행을 해당 설정에서 애플리케이션이 어떻게 수행되는지에 대한 측정으로 생각하세요.
평가를 시작하려면 다음 단계를 완료하세요:
완전한 평가 코드 샘플은 here에서 찾을 수 있습니다. 또한 advanced evaluation features에 대해 더 자세히 알아볼 수 있습니다. 예를 들어 Saved views와 Imperative evaluations.
1. Evaluation
객체 생성
객체 Evaluation
를 생성하는 것은 평가 구성을 설정하는 첫 번째 단계입니다. Evaluation
는 예제 데이터, 점수 매기기 로직 및 선택적 전처리로 구성됩니다. 나중에 이를 사용하여 하나 이상의 평가를 실행하게 됩니다.
Weave는 각 예제를 가져와 애플리케이션을 통해 전달한 다음 여러 사용자 정의 점수 매기기 함수로 출력 점수를 매깁니다. 이를 통해 애플리케이션의 성능을 볼 수 있고, 개별 출력 및 점수를 자세히 살펴볼 수 있는 풍부한 UI를 갖게 됩니다.
(선택 사항) 사용자 정의 이름 지정
평가 흐름에는 두 가지 유형의 사용자 정의 가능한 이름이 있습니다:- 평가 객체 이름 (
evaluation_name
): 구성된Evaluation
객체에 대한 영구적인 레이블입니다. - 평가 실행 표시 이름 (
__weave["display_name"]
): UI에 표시되는 특정 평가 실행에 대한 레이블입니다.
다음의 이름 지정 Evaluation
객체
다음을 이름 지정하려면 Evaluation
객체 자체에, evaluation_name
매개변수를 Evaluation
클래스에 전달하세요. 이 이름은 코드와 UI 목록에서 평가를 식별하는 데 도움이 됩니다.
개별 평가 실행 이름 지정
특정 평가 실행(다음 호출evaluate()
)의 이름을 지정하려면 __weave
딕셔너리에 display_name
를 사용하세요. 이는 해당 실행에 대해 UI에 표시되는 내용에 영향을 줍니다.
2. 테스트 예제 데이터셋 정의
먼저, Dataset 객체 또는 평가할 예제 모음이 있는 딕셔너리 목록을 정의합니다. 이러한 예제는 종종 테스트하려는 실패 사례로, 테스트 주도 개발(TDD)의 단위 테스트와 유사합니다. 다음 예제는 딕셔너리 목록으로 정의된 데이터셋을 보여줍니다:3. 점수 매기기 함수 정의
그런 다음, 하나 이상의 점수 매기기 함수를 생성합니다. 이는Dataset
의 각 예제에 점수를 매기는 데 사용됩니다. 각 점수 매기기 함수는 반드시 output
를 가져야 하며, 점수가 포함된 딕셔너리를 반환해야 합니다. 선택적으로 예제에서 다른 입력을 포함할 수 있습니다.
점수 매기기 함수는 output
키워드 인수를 가져야 하지만, 다른 인수는 사용자 정의이며 데이터셋 예제에서 가져옵니다. 인수 이름을 기반으로 한 딕셔너리 키를 사용하여 필요한 키만 가져옵니다.
점수 매기기가
output
인수를 예상하지만 받지 못하는 경우, 레거시 model_output
키를 사용하고 있는지 확인하세요. 이를 수정하려면 점수 매기기 함수를 업데이트하여 output을 키워드 인수로 사용하세요.match_score1
는 expected
값을 examples
딕셔너리에서 점수 매기기에 사용합니다.
(선택 사항) 사용자 정의 Scorer
클래스 정의
일부 애플리케이션에서는 사용자 정의 Scorer
클래스를 생성하고자 합니다 - 예를 들어 특정 매개변수(예: 채팅 모델, 프롬프트), 각 행의 특정 점수 매기기, 그리고 집계 점수의 특정 계산이 포함된 표준화된 LLMJudge
클래스를 생성해야 하는 경우가 있습니다.
다음에서 Scorer
클래스 정의에 관한 튜토리얼을 참조하세요: Model-Based Evaluation of RAG applications에서 더 많은 정보를 확인할 수 있습니다.
4. 평가할 Model
정의
다음을 평가하려면 Model
, evaluate
를 Evaluation
를 사용하여 호출하세요. Models
는 실험하고 weave에 캡처하려는 매개변수가 있을 때 사용됩니다.
predict
를 실행하고 각 점수 매기기 함수로 출력에 점수를 매깁니다.
(선택 사항) 평가할 함수 정의
또는@weave.op()
로 추적되는 사용자 정의 함수를 평가할 수도 있습니다.
5. 평가 실행
평가를 실행하려면 평가하려는 객체에서.evaluate()
를 호출하세요.
예를 들어, Evaluation
객체 evaluation
와 평가할 Model
객체 model
가 있다고 가정하면, 다음 코드는 평가 실행을 인스턴스화합니다.
평가 실행 팁
- 다음
evaluate()
메서드는 모든 예제에 대한 결과 요약을 반환합니다. 출력 및 점수를 포함한 전체 점수 행 세트에 액세스하려면get_eval_results()
를 사용하세요. - 다음을 호출할 때
display_name
를 제공하지 않으면.evaluate()
, Weave는 날짜와 기억하기 쉬운 임의의 이름을 사용하여 자동으로 생성합니다. 자세한 내용은 how to name individual evaluation runs를 참조하세요. - 다음에 전달된 모델
.evaluate
는 반드시Model
또는@weave.op
로 추적된 함수여야 합니다. 일반 Python 함수는@weave.op
로 래핑되지 않는 한 지원되지 않습니다.
(선택 사항) 여러 시도 실행
다음trials
매개변수를 Evaluation
객체에 설정하여 각 예제를 여러 번 실행할 수 있습니다.
model
에 세 번 전달되며, 각 실행은 독립적으로 점수가 매겨지고 Weave에 표시됩니다.
전체 평가 코드 샘플
다음 코드 샘플은 처음부터 끝까지 완전한 평가 실행을 보여줍니다.examples
딕셔너리는 match_score1
와 match_score2
점수 매기기 함수에서 MyModel
의 값이 주어진 prompt
를 평가하는 데 사용되며, 사용자 정의 함수 function_to_evaluate
도 평가합니다. Model
와 함수에 대한 평가 실행은 asyncio.run(evaluation.evaluate()
를 통해 호출됩니다.

고급 평가 사용법
평가 전 데이터셋 행 형식 지정
다음
preprocess_model_input
함수는 모델의 예측 함수에 전달하기 전에 입력에만 적용됩니다. 점수 매기기 함수는 항상 전처리가 적용되지 않은 원래 데이터셋 예제를 받습니다.preprocess_model_input
매개변수를 사용하면 평가 함수에 전달되기 전에 데이터셋 예제를 변환할 수 있습니다. 이는 다음과 같은 경우에 유용합니다:
- 모델이 예상하는 입력과 일치하도록 필드 이름 변경
- 데이터를 올바른 형식으로 변환
- 필드 추가 또는 제거
- 각 예제에 대한 추가 데이터 로드
preprocess_model_input
를 사용하여 필드 이름을 변경하는 방법을 보여주는 간단한 예제입니다:
input_text
필드가 있는 예제가 포함되어 있지만, 평가 함수는 question
매개변수를 예상합니다. preprocess_example
함수는 필드 이름을 변경하여 각 예제를 변환하므로 평가가 올바르게 작동할 수 있습니다.
전처리 함수:
- 데이터셋에서 원시 예제를 받습니다
- 모델이 예상하는 필드가 있는 딕셔너리를 반환합니다
- 평가 함수에 전달되기 전에 각 예제에 적용됩니다
평가에 HuggingFace 데이터셋 사용
우리는 타사 서비스 및 라이브러리와의 통합을 지속적으로 개선하고 있습니다. 더 원활한 통합을 구축하는 동안,preprocess_model_input
를 Weave 평가에서 HuggingFace Datasets를 사용하기 위한 임시 해결책으로 사용할 수 있습니다.
현재 접근 방식은 Using HuggingFace datasets in evaluations cookbook를 참조하세요.
Saved views
Evals 테이블 구성, 필터 및 정렬을 saved views로 저장하여 선호하는 설정에 빠르게 접근할 수 있습니다. UI와 Python SDK를 통해 저장된 뷰를 구성하고 접근할 수 있습니다. 자세한 내용은 Saved Views를 참조하세요.명령형 평가(EvaluationLogger
)
더 유연한 평가 프레임워크를 선호한다면 Weave의 EvaluationLogger
을 확인해보세요. 명령형 접근 방식은 복잡한 워크플로우에 더 많은 유연성을 제공하는 반면, 표준 평가 프레임워크는 더 많은 구조와 지침을 제공합니다.