Coverage for src/lexigram/ai/evaluation/evaluators/base.py: 92%
13 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-22 01:17 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-22 01:17 +0800
1"""Base evaluator class."""
3from __future__ import annotations
5from lexigram.contracts.ai.evaluation import EvaluationResult, EvaluationScoreType
6from lexigram.logging import get_logger
8logger = get_logger(__name__)
11class BaseEvaluator:
12 """Base class for evaluators."""
14 def __init__(self, score_type: EvaluationScoreType) -> None:
15 self._score_type = score_type
17 @property
18 def name(self) -> str:
19 return self.__class__.__name__
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 )
35__all__ = ["BaseEvaluator"]