@@ -7752,6 +7752,118 @@ def test_merge_with_invalid_eval_case_type(self):
77527752 schemas = [_evals_data_converters .EvalDatasetSchema .FLATTEN ],
77537753 )
77547754
7755+ def test_merge_single_dataset_with_interactions_data_source (self ):
7756+ """Base dataset with interactions_data_source adds placeholder without warning."""
7757+ dataset = agentplatform_genai_types .EvaluationDataset (
7758+ eval_cases = [
7759+ agentplatform_genai_types .EvalCase (
7760+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7761+ interaction = "projects/p/locations/l/interactions/i1" ,
7762+ ),
7763+ ),
7764+ ]
7765+ )
7766+
7767+ with mock .patch .object (
7768+ _evals_data_converters , "logger"
7769+ ) as mock_logger :
7770+ merged = _evals_data_converters .merge_evaluation_datasets ([dataset ])
7771+
7772+ assert len (merged .eval_cases ) == 1
7773+ assert len (merged .eval_cases [0 ].responses ) == 1
7774+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7775+ parts = [genai_types .Part (text = "" )]
7776+ )
7777+ mock_logger .warning .assert_not_called ()
7778+
7779+ def test_merge_two_datasets_with_interactions_data_source (self ):
7780+ """Merging two interaction-id datasets adds placeholders without warning."""
7781+ dataset_1 = agentplatform_genai_types .EvaluationDataset (
7782+ eval_cases = [
7783+ agentplatform_genai_types .EvalCase (
7784+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7785+ interaction = "projects/p/locations/l/interactions/i1" ,
7786+ ),
7787+ ),
7788+ ]
7789+ )
7790+ dataset_2 = agentplatform_genai_types .EvaluationDataset (
7791+ eval_cases = [
7792+ agentplatform_genai_types .EvalCase (
7793+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7794+ interaction = "projects/p/locations/l/interactions/i2" ,
7795+ ),
7796+ ),
7797+ ]
7798+ )
7799+
7800+ with mock .patch .object (
7801+ _evals_data_converters , "logger"
7802+ ) as mock_logger :
7803+ merged = _evals_data_converters .merge_evaluation_datasets (
7804+ [dataset_1 , dataset_2 ]
7805+ )
7806+
7807+ assert len (merged .eval_cases ) == 1
7808+ assert len (merged .eval_cases [0 ].responses ) == 2
7809+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7810+ parts = [genai_types .Part (text = "" )]
7811+ )
7812+ assert merged .eval_cases [0 ].responses [1 ].response == genai_types .Content (
7813+ parts = [genai_types .Part (text = "" )]
7814+ )
7815+ mock_logger .warning .assert_not_called ()
7816+
7817+ def test_merge_interactions_data_source_with_response_dataset (self ):
7818+ """Merging an interaction-id dataset with a response dataset works correctly."""
7819+ dataset_interactions = agentplatform_genai_types .EvaluationDataset (
7820+ eval_cases = [
7821+ agentplatform_genai_types .EvalCase (
7822+ prompt = genai_types .Content (
7823+ parts = [genai_types .Part (text = "Prompt 1" )]
7824+ ),
7825+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7826+ interaction = "projects/p/locations/l/interactions/i1" ,
7827+ ),
7828+ ),
7829+ ]
7830+ )
7831+ dataset_response = agentplatform_genai_types .EvaluationDataset (
7832+ eval_cases = [
7833+ agentplatform_genai_types .EvalCase (
7834+ prompt = genai_types .Content (
7835+ parts = [genai_types .Part (text = "Prompt 1" )]
7836+ ),
7837+ responses = [
7838+ agentplatform_genai_types .ResponseCandidate (
7839+ response = genai_types .Content (
7840+ parts = [genai_types .Part (text = "Response 1" )]
7841+ )
7842+ )
7843+ ],
7844+ ),
7845+ ]
7846+ )
7847+
7848+ with mock .patch .object (
7849+ _evals_data_converters , "logger"
7850+ ) as mock_logger :
7851+ merged = _evals_data_converters .merge_evaluation_datasets (
7852+ [dataset_interactions , dataset_response ]
7853+ )
7854+
7855+ assert len (merged .eval_cases ) == 1
7856+ assert len (merged .eval_cases [0 ].responses ) == 2
7857+ # First response is a placeholder from the interactions_data_source case
7858+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7859+ parts = [genai_types .Part (text = "" )]
7860+ )
7861+ # Second response is the actual response
7862+ assert merged .eval_cases [0 ].responses [1 ].response == genai_types .Content (
7863+ parts = [genai_types .Part (text = "Response 1" )]
7864+ )
7865+ mock_logger .warning .assert_not_called ()
7866+
77557867
77567868@pytest .mark .usefixtures ("google_auth_mock" )
77577869class TestPredefinedMetricHandler :
0 commit comments