@@ -7730,6 +7730,118 @@ def test_merge_with_invalid_eval_case_type(self):
77307730 schemas = [_evals_data_converters .EvalDatasetSchema .FLATTEN ],
77317731 )
77327732
7733+ def test_merge_single_dataset_with_interactions_data_source (self ):
7734+ """Base dataset with interactions_data_source adds placeholder without warning."""
7735+ dataset = agentplatform_genai_types .EvaluationDataset (
7736+ eval_cases = [
7737+ agentplatform_genai_types .EvalCase (
7738+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7739+ interaction = "projects/p/locations/l/interactions/i1" ,
7740+ ),
7741+ ),
7742+ ]
7743+ )
7744+
7745+ with mock .patch .object (
7746+ _evals_data_converters , "logger"
7747+ ) as mock_logger :
7748+ merged = _evals_data_converters .merge_evaluation_datasets ([dataset ])
7749+
7750+ assert len (merged .eval_cases ) == 1
7751+ assert len (merged .eval_cases [0 ].responses ) == 1
7752+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7753+ parts = [genai_types .Part (text = "" )]
7754+ )
7755+ mock_logger .warning .assert_not_called ()
7756+
7757+ def test_merge_two_datasets_with_interactions_data_source (self ):
7758+ """Merging two interaction-id datasets adds placeholders without warning."""
7759+ dataset_1 = agentplatform_genai_types .EvaluationDataset (
7760+ eval_cases = [
7761+ agentplatform_genai_types .EvalCase (
7762+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7763+ interaction = "projects/p/locations/l/interactions/i1" ,
7764+ ),
7765+ ),
7766+ ]
7767+ )
7768+ dataset_2 = agentplatform_genai_types .EvaluationDataset (
7769+ eval_cases = [
7770+ agentplatform_genai_types .EvalCase (
7771+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7772+ interaction = "projects/p/locations/l/interactions/i2" ,
7773+ ),
7774+ ),
7775+ ]
7776+ )
7777+
7778+ with mock .patch .object (
7779+ _evals_data_converters , "logger"
7780+ ) as mock_logger :
7781+ merged = _evals_data_converters .merge_evaluation_datasets (
7782+ [dataset_1 , dataset_2 ]
7783+ )
7784+
7785+ assert len (merged .eval_cases ) == 1
7786+ assert len (merged .eval_cases [0 ].responses ) == 2
7787+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7788+ parts = [genai_types .Part (text = "" )]
7789+ )
7790+ assert merged .eval_cases [0 ].responses [1 ].response == genai_types .Content (
7791+ parts = [genai_types .Part (text = "" )]
7792+ )
7793+ mock_logger .warning .assert_not_called ()
7794+
7795+ def test_merge_interactions_data_source_with_response_dataset (self ):
7796+ """Merging an interaction-id dataset with a response dataset works correctly."""
7797+ dataset_interactions = agentplatform_genai_types .EvaluationDataset (
7798+ eval_cases = [
7799+ agentplatform_genai_types .EvalCase (
7800+ prompt = genai_types .Content (
7801+ parts = [genai_types .Part (text = "Prompt 1" )]
7802+ ),
7803+ interactions_data_source = agentplatform_genai_types .InteractionsDataSource (
7804+ interaction = "projects/p/locations/l/interactions/i1" ,
7805+ ),
7806+ ),
7807+ ]
7808+ )
7809+ dataset_response = agentplatform_genai_types .EvaluationDataset (
7810+ eval_cases = [
7811+ agentplatform_genai_types .EvalCase (
7812+ prompt = genai_types .Content (
7813+ parts = [genai_types .Part (text = "Prompt 1" )]
7814+ ),
7815+ responses = [
7816+ agentplatform_genai_types .ResponseCandidate (
7817+ response = genai_types .Content (
7818+ parts = [genai_types .Part (text = "Response 1" )]
7819+ )
7820+ )
7821+ ],
7822+ ),
7823+ ]
7824+ )
7825+
7826+ with mock .patch .object (
7827+ _evals_data_converters , "logger"
7828+ ) as mock_logger :
7829+ merged = _evals_data_converters .merge_evaluation_datasets (
7830+ [dataset_interactions , dataset_response ]
7831+ )
7832+
7833+ assert len (merged .eval_cases ) == 1
7834+ assert len (merged .eval_cases [0 ].responses ) == 2
7835+ # First response is a placeholder from the interactions_data_source case
7836+ assert merged .eval_cases [0 ].responses [0 ].response == genai_types .Content (
7837+ parts = [genai_types .Part (text = "" )]
7838+ )
7839+ # Second response is the actual response
7840+ assert merged .eval_cases [0 ].responses [1 ].response == genai_types .Content (
7841+ parts = [genai_types .Part (text = "Response 1" )]
7842+ )
7843+ mock_logger .warning .assert_not_called ()
7844+
77337845
77347846@pytest .mark .usefixtures ("google_auth_mock" )
77357847class TestPredefinedMetricHandler :
0 commit comments