dspy.evaluate.answer_exact_match

dspy.evaluate.answer_exact_match

dspy.evaluate.answer_exact_match(example, pred, trace=None, frac=1.0)

example/prediction 쌍에 대해 정확 일치(exact match) 또는 F1 임계값 일치를 평가해요.

example.answer가 문자열이면 pred.answer를 그것과 비교해요. 리스트면 참조 중 아무거나와 비교하죠. frac >= 1.0(기본)이면 EM을 쓰고, 그 외엔 참조들 사이 최대 F1이 적어도 frac일 것을 요구해요.

이름 타입 설명 기본값
example answer 필드(str 또는 list[str])가 있는 dspy.Example 객체 필수
pred answer 필드(str)가 있는 dspy.Prediction 객체 필수
trace 사용 안 함. 호환성용 예약 None
frac float [0.0, 1.0]의 임계값. 1.0이면 EM 1.0

반환:

이름 타입 설명
bool 일치 조건이 성립하면 True, 아니면 False

예시:

import dspy

example = dspy.Example(answer=["Eiffel Tower", "Louvre"])
pred = dspy.Prediction(answer="The Eiffel Tower")

answer_exact_match(example, pred, frac=1.0)  # equivalent to EM, True
answer_exact_match(example, pred, frac=0.5)  # True

소스: dspy/evaluate/metrics.py

answer가 문자열이면 _answer_match(pred.answer, [example.answer], frac=frac)을, 리스트면 _answer_match(pred.answer, example.answer, frac=frac)을 호출해요. 그 외 타입이면 ValueError가 나요.

출처: 공식문서

더 알아보기 (Learn more)