From 05d293abb985cc7fe5ffa80d56181e7e4b36ffa9 Mon Sep 17 00:00:00 2001 From: al3xanndru Date: Fri, 30 Oct 2026 12:56:12 +0000 Subject: [PATCH] AE-2513: name {{ExpectedAgentBehavior}} with double braces in the trajectory prompt error The validator requires {{ExpectedAgentBehavior}} but its message asked for {ExpectedAgentBehavior}, which misled users fixing their prompt. Co-Authored-By: Claude Opus 5.5 --- packages/uipath/pyproject.toml | 2 +- .../evaluators/legacy_trajectory_evaluator.py | 2 +- .../test_legacy_trajectory_evaluator.py | 30 +++++++++++++++++++ packages/uipath/uv.lock | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/packages/uipath/pyproject.toml b/packages/uipath/pyproject.toml index bccd2b9df..698b9b82f 100644 --- a/packages/uipath/pyproject.toml +++ b/packages/uipath/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath" -version = "2.14.44" +version = "2.14.45" description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools." readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" diff --git a/packages/uipath/src/uipath/eval/evaluators/legacy_trajectory_evaluator.py b/packages/uipath/src/uipath/eval/evaluators/legacy_trajectory_evaluator.py index 1368d9339..bfa127ad7 100644 --- a/packages/uipath/src/uipath/eval/evaluators/legacy_trajectory_evaluator.py +++ b/packages/uipath/src/uipath/eval/evaluators/legacy_trajectory_evaluator.py @@ -52,7 +52,7 @@ def validate_prompt_placeholder(cls, v: str) -> str: """Validate that prompt contains required placeholders.""" if "{{ExpectedAgentBehavior}}" not in v or "{{AgentRunHistory}}" not in v: raise ValueError( - "Prompt must contain {ExpectedAgentBehavior} and {{AgentRunHistory}} placeholders" + "Prompt must contain {{ExpectedAgentBehavior}} and {{AgentRunHistory}} placeholders" ) return v diff --git a/packages/uipath/tests/evaluators/test_legacy_trajectory_evaluator.py b/packages/uipath/tests/evaluators/test_legacy_trajectory_evaluator.py index 687fce08d..15c04012a 100644 --- a/packages/uipath/tests/evaluators/test_legacy_trajectory_evaluator.py +++ b/packages/uipath/tests/evaluators/test_legacy_trajectory_evaluator.py @@ -1,6 +1,8 @@ import uuid +import pytest from opentelemetry.sdk.trace import ReadableSpan +from pydantic import ValidationError from uipath.eval.evaluators import LegacyTrajectoryEvaluator from uipath.eval.evaluators.base_legacy_evaluator import LegacyEvaluationCriteria @@ -62,3 +64,31 @@ def test_legacy_trajectory_prompt_uses_compact_tool_history() -> None: assert '{"query": "mentor"}' in prompt assert "found mentor profile" in prompt assert "agent_llm_call" not in prompt + + +@pytest.mark.parametrize( + "prompt", + [ + "History:\n{{AgentRunHistory}}\nExpected:\n{{ExpectedBehavior}}", + "Expected:\n{{ExpectedAgentBehavior}}", + ], +) +def test_legacy_trajectory_prompt_error_names_double_brace_placeholders( + prompt: str, +) -> None: + with pytest.raises(ValidationError) as exc_info: + LegacyTrajectoryEvaluator( + id=str(uuid.uuid4()), + name="Legacy trajectory", + config_type=LegacyTrajectoryEvaluatorConfig, + evaluation_criteria_type=LegacyEvaluationCriteria, + justification_type=str, + category=LegacyEvaluatorCategory.Trajectory, + type=LegacyEvaluatorType.Trajectory, + prompt=prompt, + createdAt="2026-05-14T00:00:00Z", + updatedAt="2026-05-14T00:00:00Z", + ) + + message = str(exc_info.value) + assert "{{ExpectedAgentBehavior}} and {{AgentRunHistory}}" in message diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index e6ae1076e..c463c717e 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -2599,7 +2599,7 @@ wheels = [ [[package]] name = "uipath" -version = "2.14.44" +version = "2.14.45" source = { editable = "." } dependencies = [ { name = "applicationinsights" },