@@ -3292,6 +3292,136 @@ def my_search_tool(query: str) -> str:
32923292 mock_from_callable .assert_called_once_with (callable = my_search_tool )
32933293
32943294
3295+ class TestValidateDatasetAgentData :
3296+ """Unit tests for the _validate_dataset_agent_data function."""
3297+
3298+ def test_valid_agent_data_in_df (self ):
3299+ dataset = vertexai_genai_types .EvaluationDataset (
3300+ eval_dataset_df = pd .DataFrame (
3301+ [
3302+ {
3303+ "agent_data" : {
3304+ "turns" : [{"turn_index" : 0 , "turn_id" : "1" , "events" : []}]
3305+ }
3306+ },
3307+ {
3308+ "agent_data" : '{"turns": [{"turn_index": 0, "turn_id": "2", "events": []}]}'
3309+ },
3310+ {
3311+ "agent_data" : vertexai_genai_types .evals .AgentData (
3312+ turns = [{"turn_index" : 0 , "turn_id" : "3" , "events" : []}]
3313+ )
3314+ },
3315+ ]
3316+ )
3317+ )
3318+ _evals_utils ._validate_dataset_agent_data (dataset )
3319+
3320+ def test_valid_agent_data_in_eval_cases (self ):
3321+ dataset = vertexai_genai_types .EvaluationDataset (
3322+ eval_cases = [
3323+ vertexai_genai_types .EvalCase (
3324+ agent_data = {
3325+ "turns" : [{"turn_index" : 0 , "turn_id" : "1" , "events" : []}]
3326+ }
3327+ ),
3328+ vertexai_genai_types .EvalCase (
3329+ agent_data = json .loads (
3330+ '{"turns": [{"turn_index": 0, "turn_id": "2", "events": []}]}'
3331+ )
3332+ ),
3333+ vertexai_genai_types .EvalCase (
3334+ agent_data = vertexai_genai_types .evals .AgentData (
3335+ turns = [{"turn_index" : 0 , "turn_id" : "3" , "events" : []}]
3336+ )
3337+ ),
3338+ ]
3339+ )
3340+ _evals_utils ._validate_dataset_agent_data (dataset )
3341+
3342+ def test_invalid_json_string_raises_error (self ):
3343+ dataset = vertexai_genai_types .EvaluationDataset (
3344+ eval_dataset_df = pd .DataFrame ([{"agent_data" : '{"turns":' }])
3345+ )
3346+ with pytest .raises (ValueError , match = "is not valid JSON" ):
3347+ _evals_utils ._validate_dataset_agent_data (dataset )
3348+
3349+ def test_invalid_dict_raises_error (self ):
3350+ dataset = vertexai_genai_types .EvaluationDataset (
3351+ eval_dataset_df = pd .DataFrame ([{"agent_data" : {"agents" : 123 }}])
3352+ )
3353+ with pytest .raises (ValueError , match = "is inconsistent with AgentData type" ):
3354+ _evals_utils ._validate_dataset_agent_data (dataset )
3355+
3356+ def test_valid_agent_data_with_error_in_dict (self ):
3357+ dataset = vertexai_genai_types .EvaluationDataset (
3358+ eval_dataset_df = pd .DataFrame (
3359+ [{"agent_data" : {"error" : "some error message" }}]
3360+ )
3361+ )
3362+ _evals_utils ._validate_dataset_agent_data (dataset )
3363+
3364+ def test_valid_agent_data_with_error_in_string (self ):
3365+ dataset = vertexai_genai_types .EvaluationDataset (
3366+ eval_dataset_df = pd .DataFrame (
3367+ [{"agent_data" : '{"error": "some error message"}' }]
3368+ )
3369+ )
3370+ _evals_utils ._validate_dataset_agent_data (dataset )
3371+
3372+ def test_invalid_agent_data_type_raises_error (self ):
3373+ dataset = vertexai_genai_types .EvaluationDataset (
3374+ eval_dataset_df = pd .DataFrame ([{"agent_data" : 123 }])
3375+ )
3376+ with pytest .raises (ValueError , match = "is inconsistent with AgentData type" ):
3377+ _evals_utils ._validate_dataset_agent_data (dataset )
3378+
3379+ def test_conflict_with_inference_configs_raises_error (self ):
3380+ dataset = vertexai_genai_types .EvaluationDataset (
3381+ eval_dataset_df = pd .DataFrame (
3382+ [
3383+ {
3384+ "agent_data" : {
3385+ "agents" : {"agent1" : {"agent_id" : "agent1" }},
3386+ "turns" : [],
3387+ }
3388+ }
3389+ ]
3390+ )
3391+ )
3392+ inference_configs = {
3393+ "cand1" : {"agent_configs" : {"agent1" : {"agent_id" : "agent1" }}}
3394+ }
3395+ with pytest .raises (
3396+ ValueError ,
3397+ match = "Cannot provide 'agents' in the dataset's 'agent_data'" ,
3398+ ):
3399+ _evals_utils ._validate_dataset_agent_data (dataset , inference_configs )
3400+
3401+ def test_no_conflict_with_inference_configs (self ):
3402+ dataset = vertexai_genai_types .EvaluationDataset (
3403+ eval_dataset_df = pd .DataFrame ([{"agent_data" : {"turns" : []}}])
3404+ )
3405+ inference_configs = {"cand1" : {"agent_configs" : {"agent1" : {"name" : "agent1" }}}}
3406+ _evals_utils ._validate_dataset_agent_data (dataset , inference_configs )
3407+
3408+ def test_no_conflict_if_inference_configs_has_no_agent_configs (self ):
3409+ dataset = vertexai_genai_types .EvaluationDataset (
3410+ eval_dataset_df = pd .DataFrame (
3411+ [
3412+ {
3413+ "agent_data" : {
3414+ "agents" : {"agent1" : {"agent_id" : "agent1" }},
3415+ "turns" : [],
3416+ }
3417+ }
3418+ ]
3419+ )
3420+ )
3421+ inference_configs = {"cand1" : {"model" : "gemini-pro" }}
3422+ _evals_utils ._validate_dataset_agent_data (dataset , inference_configs )
3423+
3424+
32953425class TestEvent :
32963426 """Unit tests for the Event class."""
32973427
0 commit comments