1"""Base evaluator class."""
2
3from __future__ import annotations
4
5from lexigram.contracts.ai.evaluation import EvaluationResult, EvaluationScoreType
6from lexigram.logging import get_logger
7
8logger = get_logger(__name__)
9
10
11class BaseEvaluator:
12 """Base class for evaluators."""
13
14 def __init__(self, score_type: EvaluationScoreType) -> None:
15 self._score_type = score_type
16
17 @property
18 def name(self) -> str:
19 return self.__class__.__name__
20
21 def _create_result(
22 self,
23 score: float,
24 feedback: str,
25 metrics: dict[str, float | str] | None = None,
26 ) -> EvaluationResult:
27 return EvaluationResult(
28 score=score,
29 score_type=self._score_type,
30 feedback=feedback,
31 metrics=metrics or {},
32 )
33
34
35__all__ = ["BaseEvaluator"]