@@ -335,3 +335,191 @@ def test_bigframes_ai_generate_double(scalar_types_df: bpd.DataFrame, monkeypatc
335335 }
336336 result_series .to_pandas .assert_not_called ()
337337 assert actual_result is result_series
338+
339+
340+ def test_ai_classify (monkeypatch ):
341+ mock_classify = mock .MagicMock ()
342+ result_series = mock .create_autospec (bpd .Series )
343+ mock_classify .return_value = result_series
344+ expected_result = mock .create_autospec (pd .Series )
345+ result_series .to_pandas .return_value = expected_result
346+
347+ monkeypatch .setattr (bigframes .bigquery .ai , "classify" , mock_classify )
348+
349+ input_prompt = mock .create_autospec (pd .Series )
350+ df = pd .DataFrame ({"text_input" : ["Is this a positive review?" ]})
351+ actual_result = df .bigquery .ai .classify (
352+ input_prompt ,
353+ categories = ["Mammal" , "Fish" ],
354+ examples = [("Cat" , "Mammal" )],
355+ connection_id = "conn" ,
356+ endpoint = "endpoint" ,
357+ output_mode = "single" ,
358+ optimization_mode = "minimize_cost" ,
359+ max_error_ratio = 0.1 ,
360+ )
361+
362+ mock_classify .assert_called_once_with (
363+ input_prompt ,
364+ ["Mammal" , "Fish" ],
365+ examples = [("Cat" , "Mammal" )],
366+ connection_id = "conn" ,
367+ endpoint = "endpoint" ,
368+ output_mode = "single" ,
369+ optimization_mode = "minimize_cost" ,
370+ max_error_ratio = 0.1 ,
371+ )
372+ result_series .to_pandas .assert_called_once ()
373+ assert actual_result is expected_result
374+
375+
376+ def test_bigframes_ai_classify (scalar_types_df : bpd .DataFrame , monkeypatch ):
377+ bf_series = mock .create_autospec (bpd .Series )
378+ result_series = mock .create_autospec (bpd .Series )
379+
380+ mock_classify = mock .MagicMock ()
381+ mock_classify .return_value = result_series
382+
383+ monkeypatch .setattr (bigframes .bigquery .ai , "classify" , mock_classify )
384+
385+ actual_result = scalar_types_df .bigquery .ai .classify (
386+ bf_series ,
387+ categories = ["Mammal" , "Fish" ],
388+ examples = [("Cat" , "Mammal" )],
389+ connection_id = "conn" ,
390+ endpoint = "endpoint" ,
391+ output_mode = "single" ,
392+ optimization_mode = "minimize_cost" ,
393+ max_error_ratio = 0.1 ,
394+ )
395+
396+ mock_classify .assert_called_once ()
397+ args , kwargs = mock_classify .call_args
398+ assert args [0 ] is bf_series
399+ assert args [1 ] == ["Mammal" , "Fish" ]
400+ assert kwargs == {
401+ "examples" : [("Cat" , "Mammal" )],
402+ "connection_id" : "conn" ,
403+ "endpoint" : "endpoint" ,
404+ "output_mode" : "single" ,
405+ "optimization_mode" : "minimize_cost" ,
406+ "max_error_ratio" : 0.1 ,
407+ }
408+ result_series .to_pandas .assert_not_called ()
409+ assert actual_result is result_series
410+
411+
412+ def test_ai_if (monkeypatch ):
413+ mock_if = mock .MagicMock ()
414+ result_series = mock .create_autospec (bpd .Series )
415+ mock_if .return_value = result_series
416+ expected_result = mock .create_autospec (pd .Series )
417+ result_series .to_pandas .return_value = expected_result
418+
419+ monkeypatch .setattr (bigframes .bigquery .ai , "if_" , mock_if )
420+
421+ prompt = mock .create_autospec (pd .Series )
422+ df = pd .DataFrame ({"text_input" : ["Is this a positive review?" ]})
423+ actual_result = df .bigquery .ai .if_ (
424+ prompt ,
425+ connection_id = "conn" ,
426+ endpoint = "endpoint" ,
427+ optimization_mode = "minimize_cost" ,
428+ max_error_ratio = 0.1 ,
429+ )
430+
431+ mock_if .assert_called_once_with (
432+ prompt ,
433+ connection_id = "conn" ,
434+ endpoint = "endpoint" ,
435+ optimization_mode = "minimize_cost" ,
436+ max_error_ratio = 0.1 ,
437+ )
438+ result_series .to_pandas .assert_called_once ()
439+ assert actual_result is expected_result
440+
441+
442+ def test_bigframes_ai_if (scalar_types_df : bpd .DataFrame , monkeypatch ):
443+ bf_series = mock .create_autospec (bpd .Series )
444+ result_series = mock .create_autospec (bpd .Series )
445+
446+ mock_if = mock .MagicMock ()
447+ mock_if .return_value = result_series
448+
449+ monkeypatch .setattr (bigframes .bigquery .ai , "if_" , mock_if )
450+
451+ actual_result = scalar_types_df .bigquery .ai .if_ (
452+ bf_series ,
453+ connection_id = "conn" ,
454+ endpoint = "endpoint" ,
455+ optimization_mode = "minimize_cost" ,
456+ max_error_ratio = 0.1 ,
457+ )
458+
459+ mock_if .assert_called_once ()
460+ args , kwargs = mock_if .call_args
461+ assert args [0 ] is bf_series
462+ assert kwargs == {
463+ "connection_id" : "conn" ,
464+ "endpoint" : "endpoint" ,
465+ "optimization_mode" : "minimize_cost" ,
466+ "max_error_ratio" : 0.1 ,
467+ }
468+ result_series .to_pandas .assert_not_called ()
469+ assert actual_result is result_series
470+
471+
472+ def test_ai_score (monkeypatch ):
473+ mock_score = mock .MagicMock ()
474+ result_series = mock .create_autospec (bpd .Series )
475+ mock_score .return_value = result_series
476+ expected_result = mock .create_autospec (pd .Series )
477+ result_series .to_pandas .return_value = expected_result
478+
479+ monkeypatch .setattr (bigframes .bigquery .ai , "score" , mock_score )
480+
481+ prompt = mock .create_autospec (pd .Series )
482+ df = pd .DataFrame ({"text_input" : ["Is this a positive review?" ]})
483+ actual_result = df .bigquery .ai .score (
484+ prompt ,
485+ connection_id = "conn" ,
486+ endpoint = "endpoint" ,
487+ max_error_ratio = 0.1 ,
488+ )
489+
490+ mock_score .assert_called_once_with (
491+ prompt ,
492+ connection_id = "conn" ,
493+ endpoint = "endpoint" ,
494+ max_error_ratio = 0.1 ,
495+ )
496+ result_series .to_pandas .assert_called_once ()
497+ assert actual_result is expected_result
498+
499+
500+ def test_bigframes_ai_score (scalar_types_df : bpd .DataFrame , monkeypatch ):
501+ bf_series = mock .create_autospec (bpd .Series )
502+ result_series = mock .create_autospec (bpd .Series )
503+
504+ mock_score = mock .MagicMock ()
505+ mock_score .return_value = result_series
506+
507+ monkeypatch .setattr (bigframes .bigquery .ai , "score" , mock_score )
508+
509+ actual_result = scalar_types_df .bigquery .ai .score (
510+ bf_series ,
511+ connection_id = "conn" ,
512+ endpoint = "endpoint" ,
513+ max_error_ratio = 0.1 ,
514+ )
515+
516+ mock_score .assert_called_once ()
517+ args , kwargs = mock_score .call_args
518+ assert args [0 ] is bf_series
519+ assert kwargs == {
520+ "connection_id" : "conn" ,
521+ "endpoint" : "endpoint" ,
522+ "max_error_ratio" : 0.1 ,
523+ }
524+ result_series .to_pandas .assert_not_called ()
525+ assert actual_result is result_series
0 commit comments