Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-evaluation/src/lexigram/ai/evaluation/evaluators/base.py: 85%

13 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

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"]