11from typing import Any , Dict
22
3- from .._models import EvaluatorCategory , EvaluatorType
4- from ._evaluator_base import EvaluatorBase , EvaluatorBaseParams
5- from ._exact_match_evaluator import ExactMatchEvaluator
6- from ._json_similarity_evaluator import JsonSimilarityEvaluator
7- from ._llm_as_judge_evaluator import LlmAsAJudgeEvaluator
8- from ._trajectory_evaluator import TrajectoryEvaluator
3+ from uipath ._cli ._evals ._models ._evaluator_base_params import EvaluatorBaseParams
4+ from uipath .eval .evaluators import (
5+ BaseEvaluator ,
6+ ExactMatchEvaluator ,
7+ JsonSimilarityEvaluator ,
8+ LlmAsAJudgeEvaluator ,
9+ TrajectoryEvaluator ,
10+ )
11+ from uipath .eval .models .models import EvaluatorCategory , EvaluatorType
912
1013
1114class EvaluatorFactory :
1215 """Factory class for creating evaluator instances based on configuration."""
1316
14- @staticmethod
15- def create_evaluator (data : Dict [str , Any ]) -> EvaluatorBase :
17+ @classmethod
18+ def create_evaluator (cls , data : Dict [str , Any ]) -> BaseEvaluator [ Any ] :
1619 """Create an evaluator instance from configuration data.
1720
1821 Args:
@@ -25,21 +28,23 @@ def create_evaluator(data: Dict[str, Any]) -> EvaluatorBase:
2528 ValueError: If category is unknown or required fields are missing
2629 """
2730 # Extract common fields
28- evaluator_id = data .get ("id" )
29- if not evaluator_id :
31+ name = data .get ("name" , "" )
32+ if not name :
33+ raise ValueError ("Evaluator configuration must include 'name' field" )
34+ id = data .get ("id" , "" )
35+ if not id :
3036 raise ValueError ("Evaluator configuration must include 'id' field" )
3137
3238 category = EvaluatorCategory .from_int (data .get ("category" ))
3339 evaluator_type = EvaluatorType .from_int (data .get ("type" , EvaluatorType .Unknown ))
34- name = data .get ("name" , "" )
3540 description = data .get ("description" , "" )
3641 created_at = data .get ("createdAt" , "" )
3742 updated_at = data .get ("updatedAt" , "" )
3843 target_output_key = data .get ("targetOutputKey" , "" )
3944
4045 # Create base parameters
4146 base_params = EvaluatorBaseParams (
42- evaluator_id = evaluator_id ,
47+ id = id ,
4348 category = category ,
4449 evaluator_type = evaluator_type ,
4550 name = name ,
@@ -49,7 +54,6 @@ def create_evaluator(data: Dict[str, Any]) -> EvaluatorBase:
4954 target_output_key = target_output_key ,
5055 )
5156
52- # Create evaluator based on category
5357 match category :
5458 case EvaluatorCategory .Deterministic :
5559 if evaluator_type == evaluator_type .Equals :
@@ -80,19 +84,17 @@ def _create_exact_match_evaluator(
8084 base_params : EvaluatorBaseParams , data : Dict [str , Any ]
8185 ) -> ExactMatchEvaluator :
8286 """Create a deterministic evaluator."""
83- return ExactMatchEvaluator .from_params (
84- base_params ,
85- target_output_key = data .get ("targetOutputKey" , "*" ),
87+ return ExactMatchEvaluator (
88+ ** base_params .model_dump (),
8689 )
8790
8891 @staticmethod
8992 def _create_json_similarity_evaluator (
9093 base_params : EvaluatorBaseParams , data : Dict [str , Any ]
9194 ) -> JsonSimilarityEvaluator :
9295 """Create a deterministic evaluator."""
93- return JsonSimilarityEvaluator .from_params (
94- base_params ,
95- target_output_key = data .get ("targetOutputKey" , "*" ),
96+ return JsonSimilarityEvaluator (
97+ ** base_params .model_dump (),
9698 )
9799
98100 @staticmethod
@@ -112,16 +114,15 @@ def _create_llm_as_judge_evaluator(
112114 "'same-as-agent' model option is not supported by coded agents evaluations. Please select a specific model for the evaluator."
113115 )
114116
115- return LlmAsAJudgeEvaluator . from_params (
116- base_params ,
117+ return LlmAsAJudgeEvaluator (
118+ ** base_params . model_dump () ,
117119 prompt = prompt ,
118120 model = model ,
119- target_output_key = data .get ("targetOutputKey" , "*" ),
120121 )
121122
122123 @staticmethod
123124 def _create_trajectory_evaluator (
124125 base_params : EvaluatorBaseParams , data : Dict [str , Any ]
125- ) -> TrajectoryEvaluator :
126+ ) -> TrajectoryEvaluator [ Any ] :
126127 """Create a trajectory evaluator."""
127128 raise NotImplementedError ()
0 commit comments