Skip to content

Commit aa7e3c2

Browse files
hkt74copybara-github
authored andcommitted
feat: Add FunctionResponsePart & ToolComputerUse.excludedPredefinedFunctions
FunctionResponsePart could be used to support the computer use tool with browser screenshot PiperOrigin-RevId: 811412522
1 parent 1d3d28a commit aa7e3c2

File tree

6 files changed

+314
-0
lines changed

6 files changed

+314
-0
lines changed

google/genai/_live_converters.py

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,114 @@ def _FunctionDeclaration_to_vertex(
670670
return to_object
671671

672672

673+
def _FunctionResponseBlob_to_mldev(
674+
from_object: Union[dict[str, Any], object],
675+
parent_object: Optional[dict[str, Any]] = None,
676+
) -> dict[str, Any]:
677+
to_object: dict[str, Any] = {}
678+
if getv(from_object, ['mime_type']) is not None:
679+
setv(to_object, ['mimeType'], getv(from_object, ['mime_type']))
680+
681+
if getv(from_object, ['data']) is not None:
682+
setv(to_object, ['data'], getv(from_object, ['data']))
683+
684+
return to_object
685+
686+
687+
def _FunctionResponseBlob_to_vertex(
688+
from_object: Union[dict[str, Any], object],
689+
parent_object: Optional[dict[str, Any]] = None,
690+
) -> dict[str, Any]:
691+
to_object: dict[str, Any] = {}
692+
if getv(from_object, ['mime_type']) is not None:
693+
setv(to_object, ['mimeType'], getv(from_object, ['mime_type']))
694+
695+
if getv(from_object, ['data']) is not None:
696+
setv(to_object, ['data'], getv(from_object, ['data']))
697+
698+
return to_object
699+
700+
701+
def _FunctionResponseFileData_to_mldev(
702+
from_object: Union[dict[str, Any], object],
703+
parent_object: Optional[dict[str, Any]] = None,
704+
) -> dict[str, Any]:
705+
to_object: dict[str, Any] = {}
706+
if getv(from_object, ['file_uri']) is not None:
707+
setv(to_object, ['fileUri'], getv(from_object, ['file_uri']))
708+
709+
if getv(from_object, ['mime_type']) is not None:
710+
setv(to_object, ['mimeType'], getv(from_object, ['mime_type']))
711+
712+
return to_object
713+
714+
715+
def _FunctionResponseFileData_to_vertex(
716+
from_object: Union[dict[str, Any], object],
717+
parent_object: Optional[dict[str, Any]] = None,
718+
) -> dict[str, Any]:
719+
to_object: dict[str, Any] = {}
720+
if getv(from_object, ['file_uri']) is not None:
721+
setv(to_object, ['fileUri'], getv(from_object, ['file_uri']))
722+
723+
if getv(from_object, ['mime_type']) is not None:
724+
setv(to_object, ['mimeType'], getv(from_object, ['mime_type']))
725+
726+
return to_object
727+
728+
729+
def _FunctionResponsePart_to_mldev(
730+
from_object: Union[dict[str, Any], object],
731+
parent_object: Optional[dict[str, Any]] = None,
732+
) -> dict[str, Any]:
733+
to_object: dict[str, Any] = {}
734+
if getv(from_object, ['inline_data']) is not None:
735+
setv(
736+
to_object,
737+
['inlineData'],
738+
_FunctionResponseBlob_to_mldev(
739+
getv(from_object, ['inline_data']), to_object
740+
),
741+
)
742+
743+
if getv(from_object, ['file_data']) is not None:
744+
setv(
745+
to_object,
746+
['fileData'],
747+
_FunctionResponseFileData_to_mldev(
748+
getv(from_object, ['file_data']), to_object
749+
),
750+
)
751+
752+
return to_object
753+
754+
755+
def _FunctionResponsePart_to_vertex(
756+
from_object: Union[dict[str, Any], object],
757+
parent_object: Optional[dict[str, Any]] = None,
758+
) -> dict[str, Any]:
759+
to_object: dict[str, Any] = {}
760+
if getv(from_object, ['inline_data']) is not None:
761+
setv(
762+
to_object,
763+
['inlineData'],
764+
_FunctionResponseBlob_to_vertex(
765+
getv(from_object, ['inline_data']), to_object
766+
),
767+
)
768+
769+
if getv(from_object, ['file_data']) is not None:
770+
setv(
771+
to_object,
772+
['fileData'],
773+
_FunctionResponseFileData_to_vertex(
774+
getv(from_object, ['file_data']), to_object
775+
),
776+
)
777+
778+
return to_object
779+
780+
673781
def _FunctionResponse_to_mldev(
674782
from_object: Union[dict[str, Any], object],
675783
parent_object: Optional[dict[str, Any]] = None,
@@ -681,6 +789,16 @@ def _FunctionResponse_to_mldev(
681789
if getv(from_object, ['scheduling']) is not None:
682790
setv(to_object, ['scheduling'], getv(from_object, ['scheduling']))
683791

792+
if getv(from_object, ['parts']) is not None:
793+
setv(
794+
to_object,
795+
['parts'],
796+
[
797+
_FunctionResponsePart_to_mldev(item, to_object)
798+
for item in getv(from_object, ['parts'])
799+
],
800+
)
801+
684802
if getv(from_object, ['id']) is not None:
685803
setv(to_object, ['id'], getv(from_object, ['id']))
686804

@@ -704,6 +822,16 @@ def _FunctionResponse_to_vertex(
704822
if getv(from_object, ['scheduling']) is not None:
705823
raise ValueError('scheduling parameter is not supported in Vertex AI.')
706824

825+
if getv(from_object, ['parts']) is not None:
826+
setv(
827+
to_object,
828+
['parts'],
829+
[
830+
_FunctionResponsePart_to_vertex(item, to_object)
831+
for item in getv(from_object, ['parts'])
832+
],
833+
)
834+
707835
if getv(from_object, ['id']) is not None:
708836
setv(to_object, ['id'], getv(from_object, ['id']))
709837

@@ -3069,6 +3197,13 @@ def _ToolComputerUse_to_mldev(
30693197
if getv(from_object, ['environment']) is not None:
30703198
setv(to_object, ['environment'], getv(from_object, ['environment']))
30713199

3200+
if getv(from_object, ['excluded_predefined_functions']) is not None:
3201+
setv(
3202+
to_object,
3203+
['excludedPredefinedFunctions'],
3204+
getv(from_object, ['excluded_predefined_functions']),
3205+
)
3206+
30723207
return to_object
30733208

30743209

@@ -3080,6 +3215,13 @@ def _ToolComputerUse_to_vertex(
30803215
if getv(from_object, ['environment']) is not None:
30813216
setv(to_object, ['environment'], getv(from_object, ['environment']))
30823217

3218+
if getv(from_object, ['excluded_predefined_functions']) is not None:
3219+
setv(
3220+
to_object,
3221+
['excludedPredefinedFunctions'],
3222+
getv(from_object, ['excluded_predefined_functions']),
3223+
)
3224+
30833225
return to_object
30843226

30853227

google/genai/_tokens_converters.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,13 @@ def _ToolComputerUse_to_mldev(
751751
if getv(from_object, ['environment']) is not None:
752752
setv(to_object, ['environment'], getv(from_object, ['environment']))
753753

754+
if getv(from_object, ['excluded_predefined_functions']) is not None:
755+
setv(
756+
to_object,
757+
['excludedPredefinedFunctions'],
758+
getv(from_object, ['excluded_predefined_functions']),
759+
)
760+
754761
return to_object
755762

756763

google/genai/batches.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1885,6 +1885,13 @@ def _ToolComputerUse_to_mldev(
18851885
if getv(from_object, ['environment']) is not None:
18861886
setv(to_object, ['environment'], getv(from_object, ['environment']))
18871887

1888+
if getv(from_object, ['excluded_predefined_functions']) is not None:
1889+
setv(
1890+
to_object,
1891+
['excludedPredefinedFunctions'],
1892+
getv(from_object, ['excluded_predefined_functions']),
1893+
)
1894+
18881895
return to_object
18891896

18901897

google/genai/caches.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,6 +1143,13 @@ def _ToolComputerUse_to_mldev(
11431143
if getv(from_object, ['environment']) is not None:
11441144
setv(to_object, ['environment'], getv(from_object, ['environment']))
11451145

1146+
if getv(from_object, ['excluded_predefined_functions']) is not None:
1147+
setv(
1148+
to_object,
1149+
['excludedPredefinedFunctions'],
1150+
getv(from_object, ['excluded_predefined_functions']),
1151+
)
1152+
11461153
return to_object
11471154

11481155

@@ -1154,6 +1161,13 @@ def _ToolComputerUse_to_vertex(
11541161
if getv(from_object, ['environment']) is not None:
11551162
setv(to_object, ['environment'], getv(from_object, ['environment']))
11561163

1164+
if getv(from_object, ['excluded_predefined_functions']) is not None:
1165+
setv(
1166+
to_object,
1167+
['excludedPredefinedFunctions'],
1168+
getv(from_object, ['excluded_predefined_functions']),
1169+
)
1170+
11571171
return to_object
11581172

11591173

google/genai/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4475,6 +4475,13 @@ def _ToolComputerUse_to_mldev(
44754475
if getv(from_object, ['environment']) is not None:
44764476
setv(to_object, ['environment'], getv(from_object, ['environment']))
44774477

4478+
if getv(from_object, ['excluded_predefined_functions']) is not None:
4479+
setv(
4480+
to_object,
4481+
['excludedPredefinedFunctions'],
4482+
getv(from_object, ['excluded_predefined_functions']),
4483+
)
4484+
44784485
return to_object
44794486

44804487

@@ -4486,6 +4493,13 @@ def _ToolComputerUse_to_vertex(
44864493
if getv(from_object, ['environment']) is not None:
44874494
setv(to_object, ['environment'], getv(from_object, ['environment']))
44884495

4496+
if getv(from_object, ['excluded_predefined_functions']) is not None:
4497+
setv(
4498+
to_object,
4499+
['excludedPredefinedFunctions'],
4500+
getv(from_object, ['excluded_predefined_functions']),
4501+
)
4502+
44894503
return to_object
44904504

44914505

0 commit comments

Comments
 (0)