llmEval/llm_eval/registry.py

25 lines
679 B
Python

from typing import Dict, Type
from llm_eval.base import BaseEvaluator
class EvalFactory:
_registry: Dict[str, Type[BaseEvaluator]] = {}
@classmethod
def register(cls, name: str):
def decorator(klass: Type[BaseEvaluator]):
cls._registry[name] = klass
return klass
return decorator
@classmethod
def create(cls, name: str, **kwargs) -> BaseEvaluator:
if name not in cls._registry:
raise KeyError(f"Unknown evaluator '{name}'. Available: {list(cls._registry)}")
return cls._registry[name](**kwargs)
@classmethod
def list_registered(cls) -> list:
return list(cls._registry)