AdithyaSK's picture
AdithyaSK HF Staff
Upload folder using huggingface_hub
5542bd3 verified
Raw
History Blame Contribute Delete
1.73 kB
# SPDX-License-Identifier: BSD-3-Clause
"""Base class for evaluation harnesses."""
from abc import ABC, abstractmethod
from typing import Any, Dict
from openenv.core.evals.types import EvalConfig, EvalResult
class EvalHarness(ABC):
"""Abstract base class for evaluation harnesses.
Subclasses implement run() to define evaluation logic.
"""
@abstractmethod
def run(
self,
harness_version: str,
library_versions: Dict[str, str],
dataset: str,
eval_parameters: Dict[str, Any],
) -> Dict[str, Any]:
"""Run the evaluation and return scores.
Args:
harness_version: Version of the evaluation harness.
library_versions: Versions of libraries used in the evaluation.
dataset: Name of the dataset to evaluate on.
eval_parameters: Parameters for the evaluation.
Returns:
Dictionary of scores from the evaluation.
"""
raise NotImplementedError
def run_from_config(self, config: EvalConfig) -> EvalResult:
"""Run evaluation from an EvalConfig and return an EvalResult.
Args:
config: Configuration for the evaluation.
Returns:
EvalResult containing the config and scores.
"""
scores = self.run(
harness_version=config.harness_version,
library_versions=config.library_versions,
dataset=config.dataset,
eval_parameters=config.eval_parameters,
)
return EvalResult(config=config, scores=scores)
@property
def name(self) -> str:
"""Return the name of the harness (class name)."""
return self.__class__.__name__