From 95c41ec75a3969c9cb8be0c13e202d6721ef6e57 Mon Sep 17 00:00:00 2001 From: Ramon Marques Date: Fri, 27 Jun 2025 12:05:50 -0300 Subject: [PATCH 1/4] Make evaluation name optional --- aimon/decorators/evaluate.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/aimon/decorators/evaluate.py b/aimon/decorators/evaluate.py index 5fa46f1..34eac9e 100644 --- a/aimon/decorators/evaluate.py +++ b/aimon/decorators/evaluate.py @@ -144,8 +144,8 @@ def evaluate( application_name, model_name, dataset_collection_name, - evaluation_name, - headers, + headers, + evaluation_name=None, api_key=None, aimon_client=None, config=None @@ -222,6 +222,11 @@ def evaluate( application = Application(name=application_name, stage="evaluation") model = Model(name=model_name, model_type="text") + # Auto-generate evaluation name if not provided + if not evaluation_name: + timestamp = datetime.utcnow().strftime("%Y%m%dT%H%M%S") + evaluation_name = f"{application_name}-{model_name}-{timestamp}" + # Validata headers to be non-empty and contain atleast the context_docs column if not headers: raise ValueError("Headers must be a non-empty list") From d2aae2fd85bd3da2a72e60683ac5c359695208db Mon Sep 17 00:00:00 2001 From: Ramon Marques Date: Fri, 27 Jun 2025 12:08:07 -0300 Subject: [PATCH 2/4] Adding tests to check empty evaluation name --- tests/test_evaluate.py | 44 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/tests/test_evaluate.py b/tests/test_evaluate.py index bbb3260..8c63fdd 100644 --- a/tests/test_evaluate.py +++ b/tests/test_evaluate.py @@ -531,4 +531,46 @@ def test_evaluate_with_custom_client(self): except Exception as e: self.log_info("Test error", str(e)) - raise \ No newline at end of file + raise + + def test_evaluate_without_evaluation_name(self): + """Test the evaluate function when no evaluation name is provided.""" + if not self.api_key: + pytest.skip("AIMON_API_KEY environment variable not set") + + try: + # Create test data + test_data = self.create_test_data() + + headers = ["context_docs", "user_query", "output", "prompt", "task_definition"] + config = {'hallucination': {'detector_name': 'default'}} + + self.log_info("Starting evaluate test without evaluation_name", { + "Application": self.app_name, + "Model": self.model_name, + "Collection": self.collection_name, + "Headers": headers, + "Config": config + }) + + # Call evaluate without providing evaluation_name + results = evaluate( + application_name=self.app_name, + model_name=self.model_name, + dataset_collection_name=self.collection_name, + headers=headers, # evaluation_name omitted + api_key=self.api_key, + config=config + ) + + assert len(results) == 2 + assert isinstance(results[0], EvaluateResponse) + assert results[0].output in ["Paris is the capital of France.", "Python is a versatile programming language."] + assert hasattr(results[0].response, 'status') + assert results[0].response.status == 200 + + self.log_info("Test completed successfully", "Auto-generated evaluation_name handled correctly") + + except Exception as e: + self.log_info("Test error", str(e)) + raise From 56a8eb0c320df9d729d405ce3b7fd5a3e69f76f1 Mon Sep 17 00:00:00 2001 From: Ramon Marques Date: Fri, 27 Jun 2025 13:00:01 -0300 Subject: [PATCH 3/4] Adjust import --- aimon/decorators/evaluate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aimon/decorators/evaluate.py b/aimon/decorators/evaluate.py index 34eac9e..6e1112d 100644 --- a/aimon/decorators/evaluate.py +++ b/aimon/decorators/evaluate.py @@ -1,5 +1,5 @@ from functools import wraps - +from datetime import datetime from aimon import Client import inspect import warnings From 9bd0d2da03305ae34c5493f6b34d4d9208ff3801 Mon Sep 17 00:00:00 2001 From: Ramon Marques Date: Fri, 27 Jun 2025 14:47:59 -0300 Subject: [PATCH 4/4] Address comments --- aimon/decorators/evaluate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aimon/decorators/evaluate.py b/aimon/decorators/evaluate.py index 6e1112d..0c0d0a5 100644 --- a/aimon/decorators/evaluate.py +++ b/aimon/decorators/evaluate.py @@ -144,8 +144,8 @@ def evaluate( application_name, model_name, dataset_collection_name, - headers, - evaluation_name=None, + evaluation_name=None, + headers=None, api_key=None, aimon_client=None, config=None