Skip to content

Commit 4aa2eac

Browse files
authored
Merge pull request #578 from UiPath/feat/run-evals
feat: run evaluations
2 parents 17de77b + 4148a6e commit 4aa2eac

37 files changed

Lines changed: 3232 additions & 3450 deletions

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath"
3-
version = "2.1.52"
3+
version = "2.1.53"
44
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.10"

src/uipath/_cli/_evals/_evaluators/_evaluator_factory.py renamed to src/uipath/_cli/_evals/_evaluator_factory.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
from 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

1114
class 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()

src/uipath/_cli/_evals/_evaluators/__init__.py

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/uipath/_cli/_evals/_evaluators/_deterministic_evaluator_base.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/uipath/_cli/_evals/_evaluators/_evaluator_base.py

Lines changed: 0 additions & 124 deletions
This file was deleted.

src/uipath/_cli/_evals/_evaluators/_exact_match_evaluator.py

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)