dspy.Evaluate
dspy.Evaluate
dspy.Evaluate(*, devset: list[dspy.Example], metric: Callable | None = None, num_threads: int | None = None, display_progress: bool = False, display_table: bool | int = False, max_errors: int | None = None, provide_traceback: bool | None = None, failure_score: float = 0.0, save_as_csv: str | None = None, save_as_json: str | None = None, **kwargs)
DSPy의 평가 클래스예요.
이 클래스는 DSPy 프로그램의 성능을 평가하는 데 써요. 사용하려면 평가 데이터셋과 메트릭 함수를 제공해야 해요. 주어진 데이터셋에서 병렬 평가를 지원해요.
| 이름 | 타입 | 설명 | 기본값 |
|---|---|---|---|
devset |
list[Example] |
평가 데이터셋 | 필수 |
metric |
Callable |
평가에 쓸 메트릭 함수 | None |
num_threads |
Optional[int] |
병렬 평가에 쓸 스레드 수 | None |
display_progress |
bool |
평가 중 진행 상황을 표시할지 | False |
display_table |
Union[bool, int] |
평가 결과를 표로 표시할지. 숫자를 넘기면 그 수로 잘라서 표시 | False |
max_errors |
Optional[int] |
평가를 멈추기 전 허용할 최대 오류 수. None이면 dspy.settings.max_errors 상속 |
None |
provide_traceback |
Optional[bool] |
평가 중 traceback 정보 제공 여부 | None |
failure_score |
float |
예외로 평가가 실패할 때 쓸 기본 점수 | 0.0 |
save_as_csv |
Optional[str] |
csv 저장 파일명 | None |
save_as_json |
Optional[str] |
json 저장 파일명 | None |
소스: dspy/evaluate/evaluate.py
설계 포인트 두 개를 짚을게요. 첫째, return_outputs kwarg는 더 이상 지원되지 않아요. 넘기면 ValueError가 나고, 결과는 항상 EvaluationResult 객체의 results 필드에 담겨요. 둘째, dspy.context(lm=...) 블록으로 Evaluate를 감싸면 그 설정이 평가 워커에도 존중돼요.
메서드:
__call__(program: dspy.Module, metric: Callable | None = None, devset: list[dspy.Example] | None = None, num_threads: int | None = None, display_progress: bool | None = None, display_table: bool | int | None = None, callback_metadata: dict[str, Any] | None = None, save_as_csv: str | None = None, save_as_json: str | None = None) -> EvaluationResult
| 이름 | 타입 | 설명 | 기본값 |
|---|---|---|---|
program |
Module |
평가할 DSPy 프로그램 | 필수 |
metric |
Callable |
평가 메트릭 함수. 안 넘기면 self.metric 사용 |
None |
devset |
list[Example] |
평가 데이터셋. 안 넘기면 self.devset 사용 |
None |
num_threads |
Optional[int] |
병렬 평가 스레드 수. 안 넘기면 self.num_threads 사용 |
None |
display_progress |
bool |
진행 표시 여부. 안 넘기면 self.display_progress 사용 |
None |
display_table |
Union[bool, int] |
결과 표시 여부. 숫자면 그 수로 잘라 표시 | None |
callback_metadata |
dict |
평가 콜백 핸들러에 쓸 메타데이터 | None |
반환:
| 타입 | 설명 |
|---|---|
EvaluationResult |
결과는 dspy.EvaluationResult 객체로 돌아오며 다음 속성을 담음 |
EvaluationResult |
score: 전체 성능을 나타내는 float 백분율 점수(예: 67.30) |
EvaluationResult |
results: devset의 각 예시에 대한 (example, prediction, score) 튜플 목록 |
Evaluated의 내부 동작을 간단히 보면 — (program, example) 쌍을 ParallelExecutor에 제출하고, 각 워커가 program(**example.inputs())를 실행한 뒤 metric(example, prediction)을 호출해요. 집계는 score가 돼요: boolean 반환은 True의 비율, float 반환은 평균, Prediction 반환은 score의 평균. 예시별 결과는 .results에 (example, prediction, score) 트리플로 담겨요. devset이 비어 있으면 ValueError가 나요.
메트릭이 예외를 던지면 그 예시는 failure_score(기본 0.0)로 대체되고 평가는 계속돼요. max_errors는 하네스가 멈추기 전 견딜 실패 수를 제한해요.
출처: 공식문서