fmeval.eval
1import inspect 2import json 3from typing import Dict, Optional, Union 4 5from fmeval.eval_algo_mapping import EVAL_ALGORITHMS 6from fmeval.eval_algorithms.eval_algorithm import EvalAlgorithmInterface, EvalAlgorithmConfig 7from fmeval.exceptions import EvalAlgorithmClientError 8 9 10def get_eval_algorithm( 11 eval_name: str, eval_algorithm_config: Optional[Union[Dict, EvalAlgorithmConfig]] = None 12) -> EvalAlgorithmInterface: 13 """ 14 Get eval algorithm class with name 15 16 :param eval_name: eval algorithm name 17 :return: eval algorithm class 18 """ 19 if eval_name in EVAL_ALGORITHMS: 20 if isinstance(eval_algorithm_config, EvalAlgorithmConfig): 21 eval_algorithm_config = json.loads(json.dumps(eval_algorithm_config, default=vars)) 22 try: 23 config_parameters = inspect.signature(EVAL_ALGORITHMS[eval_name]).parameters.get("eval_algorithm_config") 24 return ( 25 EVAL_ALGORITHMS[eval_name](config_parameters.annotation(**eval_algorithm_config)) 26 if eval_algorithm_config and config_parameters 27 else EVAL_ALGORITHMS[eval_name]() 28 ) 29 except TypeError as e: 30 raise EvalAlgorithmClientError( 31 f"Unable to create algorithm for eval_name {eval_name} with config {eval_algorithm_config}: Error {e}" 32 ) 33 else: 34 raise EvalAlgorithmClientError(f"Unknown eval algorithm {eval_name}")
def
get_eval_algorithm( eval_name: str, eval_algorithm_config: Union[Dict, fmeval.eval_algorithms.eval_algorithm.EvalAlgorithmConfig, NoneType] = None) -> fmeval.eval_algorithms.eval_algorithm.EvalAlgorithmInterface:
11def get_eval_algorithm( 12 eval_name: str, eval_algorithm_config: Optional[Union[Dict, EvalAlgorithmConfig]] = None 13) -> EvalAlgorithmInterface: 14 """ 15 Get eval algorithm class with name 16 17 :param eval_name: eval algorithm name 18 :return: eval algorithm class 19 """ 20 if eval_name in EVAL_ALGORITHMS: 21 if isinstance(eval_algorithm_config, EvalAlgorithmConfig): 22 eval_algorithm_config = json.loads(json.dumps(eval_algorithm_config, default=vars)) 23 try: 24 config_parameters = inspect.signature(EVAL_ALGORITHMS[eval_name]).parameters.get("eval_algorithm_config") 25 return ( 26 EVAL_ALGORITHMS[eval_name](config_parameters.annotation(**eval_algorithm_config)) 27 if eval_algorithm_config and config_parameters 28 else EVAL_ALGORITHMS[eval_name]() 29 ) 30 except TypeError as e: 31 raise EvalAlgorithmClientError( 32 f"Unable to create algorithm for eval_name {eval_name} with config {eval_algorithm_config}: Error {e}" 33 ) 34 else: 35 raise EvalAlgorithmClientError(f"Unknown eval algorithm {eval_name}")
Get eval algorithm class with name
Parameters
- eval_name: eval algorithm name
Returns
eval algorithm class