google-genai 1.29.0__py3-none-any.whl → 1.31.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google/genai/_api_client.py +41 -37
- google/genai/_automatic_function_calling_util.py +12 -0
- google/genai/_live_converters.py +51 -6
- google/genai/_tokens_converters.py +26 -3
- google/genai/_transformers.py +51 -0
- google/genai/batches.py +166 -3
- google/genai/caches.py +51 -6
- google/genai/chats.py +1 -0
- google/genai/files.py +1 -0
- google/genai/live.py +92 -88
- google/genai/models.py +416 -16
- google/genai/operations.py +1 -0
- google/genai/tokens.py +1 -0
- google/genai/tunings.py +315 -43
- google/genai/types.py +1518 -421
- google/genai/version.py +1 -1
- {google_genai-1.29.0.dist-info → google_genai-1.31.0.dist-info}/METADATA +1 -1
- google_genai-1.31.0.dist-info/RECORD +35 -0
- google_genai-1.29.0.dist-info/RECORD +0 -35
- {google_genai-1.29.0.dist-info → google_genai-1.31.0.dist-info}/WHEEL +0 -0
- {google_genai-1.29.0.dist-info → google_genai-1.31.0.dist-info}/licenses/LICENSE +0 -0
- {google_genai-1.29.0.dist-info → google_genai-1.31.0.dist-info}/top_level.txt +0 -0
google/genai/models.py
CHANGED
@@ -32,6 +32,7 @@ from ._common import get_value_by_path as getv
|
|
32
32
|
from ._common import set_value_by_path as setv
|
33
33
|
from .pagers import AsyncPager, Pager
|
34
34
|
|
35
|
+
|
35
36
|
logger = logging.getLogger('google_genai.models')
|
36
37
|
|
37
38
|
|
@@ -340,6 +341,11 @@ def _GoogleSearch_to_mldev(
|
|
340
341
|
_Interval_to_mldev(getv(from_object, ['time_range_filter']), to_object),
|
341
342
|
)
|
342
343
|
|
344
|
+
if getv(from_object, ['exclude_domains']) is not None:
|
345
|
+
raise ValueError(
|
346
|
+
'exclude_domains parameter is not supported in Gemini API.'
|
347
|
+
)
|
348
|
+
|
343
349
|
return to_object
|
344
350
|
|
345
351
|
|
@@ -387,6 +393,17 @@ def _UrlContext_to_mldev(
|
|
387
393
|
return to_object
|
388
394
|
|
389
395
|
|
396
|
+
def _ToolComputerUse_to_mldev(
|
397
|
+
from_object: Union[dict[str, Any], object],
|
398
|
+
parent_object: Optional[dict[str, Any]] = None,
|
399
|
+
) -> dict[str, Any]:
|
400
|
+
to_object: dict[str, Any] = {}
|
401
|
+
if getv(from_object, ['environment']) is not None:
|
402
|
+
setv(to_object, ['environment'], getv(from_object, ['environment']))
|
403
|
+
|
404
|
+
return to_object
|
405
|
+
|
406
|
+
|
390
407
|
def _Tool_to_mldev(
|
391
408
|
from_object: Union[dict[str, Any], object],
|
392
409
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -436,12 +453,18 @@ def _Tool_to_mldev(
|
|
436
453
|
_UrlContext_to_mldev(getv(from_object, ['url_context']), to_object),
|
437
454
|
)
|
438
455
|
|
456
|
+
if getv(from_object, ['computer_use']) is not None:
|
457
|
+
setv(
|
458
|
+
to_object,
|
459
|
+
['computerUse'],
|
460
|
+
_ToolComputerUse_to_mldev(
|
461
|
+
getv(from_object, ['computer_use']), to_object
|
462
|
+
),
|
463
|
+
)
|
464
|
+
|
439
465
|
if getv(from_object, ['code_execution']) is not None:
|
440
466
|
setv(to_object, ['codeExecution'], getv(from_object, ['code_execution']))
|
441
467
|
|
442
|
-
if getv(from_object, ['computer_use']) is not None:
|
443
|
-
setv(to_object, ['computerUse'], getv(from_object, ['computer_use']))
|
444
|
-
|
445
468
|
return to_object
|
446
469
|
|
447
470
|
|
@@ -1246,15 +1269,6 @@ def _Image_to_mldev(
|
|
1246
1269
|
return to_object
|
1247
1270
|
|
1248
1271
|
|
1249
|
-
def _GenerateVideosSource_to_mldev(
|
1250
|
-
from_object: Union[dict[str, Any], object],
|
1251
|
-
parent_object: Optional[dict[str, Any]] = None,
|
1252
|
-
) -> dict[str, Any]:
|
1253
|
-
to_object: dict[str, Any] = {}
|
1254
|
-
|
1255
|
-
return to_object
|
1256
|
-
|
1257
|
-
|
1258
1272
|
def _GenerateVideosConfig_to_mldev(
|
1259
1273
|
from_object: Union[dict[str, Any], object],
|
1260
1274
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -1324,6 +1338,11 @@ def _GenerateVideosConfig_to_mldev(
|
|
1324
1338
|
if getv(from_object, ['last_frame']) is not None:
|
1325
1339
|
raise ValueError('last_frame parameter is not supported in Gemini API.')
|
1326
1340
|
|
1341
|
+
if getv(from_object, ['reference_images']) is not None:
|
1342
|
+
raise ValueError(
|
1343
|
+
'reference_images parameter is not supported in Gemini API.'
|
1344
|
+
)
|
1345
|
+
|
1327
1346
|
if getv(from_object, ['compression_quality']) is not None:
|
1328
1347
|
raise ValueError(
|
1329
1348
|
'compression_quality parameter is not supported in Gemini API.'
|
@@ -1694,6 +1713,9 @@ def _GoogleSearch_to_vertex(
|
|
1694
1713
|
),
|
1695
1714
|
)
|
1696
1715
|
|
1716
|
+
if getv(from_object, ['exclude_domains']) is not None:
|
1717
|
+
setv(to_object, ['excludeDomains'], getv(from_object, ['exclude_domains']))
|
1718
|
+
|
1697
1719
|
return to_object
|
1698
1720
|
|
1699
1721
|
|
@@ -1737,6 +1759,8 @@ def _EnterpriseWebSearch_to_vertex(
|
|
1737
1759
|
parent_object: Optional[dict[str, Any]] = None,
|
1738
1760
|
) -> dict[str, Any]:
|
1739
1761
|
to_object: dict[str, Any] = {}
|
1762
|
+
if getv(from_object, ['exclude_domains']) is not None:
|
1763
|
+
setv(to_object, ['excludeDomains'], getv(from_object, ['exclude_domains']))
|
1740
1764
|
|
1741
1765
|
return to_object
|
1742
1766
|
|
@@ -1816,6 +1840,17 @@ def _UrlContext_to_vertex(
|
|
1816
1840
|
return to_object
|
1817
1841
|
|
1818
1842
|
|
1843
|
+
def _ToolComputerUse_to_vertex(
|
1844
|
+
from_object: Union[dict[str, Any], object],
|
1845
|
+
parent_object: Optional[dict[str, Any]] = None,
|
1846
|
+
) -> dict[str, Any]:
|
1847
|
+
to_object: dict[str, Any] = {}
|
1848
|
+
if getv(from_object, ['environment']) is not None:
|
1849
|
+
setv(to_object, ['environment'], getv(from_object, ['environment']))
|
1850
|
+
|
1851
|
+
return to_object
|
1852
|
+
|
1853
|
+
|
1819
1854
|
def _Tool_to_vertex(
|
1820
1855
|
from_object: Union[dict[str, Any], object],
|
1821
1856
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -1875,12 +1910,18 @@ def _Tool_to_vertex(
|
|
1875
1910
|
_UrlContext_to_vertex(getv(from_object, ['url_context']), to_object),
|
1876
1911
|
)
|
1877
1912
|
|
1913
|
+
if getv(from_object, ['computer_use']) is not None:
|
1914
|
+
setv(
|
1915
|
+
to_object,
|
1916
|
+
['computerUse'],
|
1917
|
+
_ToolComputerUse_to_vertex(
|
1918
|
+
getv(from_object, ['computer_use']), to_object
|
1919
|
+
),
|
1920
|
+
)
|
1921
|
+
|
1878
1922
|
if getv(from_object, ['code_execution']) is not None:
|
1879
1923
|
setv(to_object, ['codeExecution'], getv(from_object, ['code_execution']))
|
1880
1924
|
|
1881
|
-
if getv(from_object, ['computer_use']) is not None:
|
1882
|
-
setv(to_object, ['computerUse'], getv(from_object, ['computer_use']))
|
1883
|
-
|
1884
1925
|
return to_object
|
1885
1926
|
|
1886
1927
|
|
@@ -2990,6 +3031,120 @@ def _RecontextImageParameters_to_vertex(
|
|
2990
3031
|
return to_object
|
2991
3032
|
|
2992
3033
|
|
3034
|
+
def _ScribbleImage_to_vertex(
|
3035
|
+
from_object: Union[dict[str, Any], object],
|
3036
|
+
parent_object: Optional[dict[str, Any]] = None,
|
3037
|
+
) -> dict[str, Any]:
|
3038
|
+
to_object: dict[str, Any] = {}
|
3039
|
+
if getv(from_object, ['image']) is not None:
|
3040
|
+
setv(
|
3041
|
+
to_object,
|
3042
|
+
['image'],
|
3043
|
+
_Image_to_vertex(getv(from_object, ['image']), to_object),
|
3044
|
+
)
|
3045
|
+
|
3046
|
+
return to_object
|
3047
|
+
|
3048
|
+
|
3049
|
+
def _SegmentImageSource_to_vertex(
|
3050
|
+
from_object: Union[dict[str, Any], object],
|
3051
|
+
parent_object: Optional[dict[str, Any]] = None,
|
3052
|
+
) -> dict[str, Any]:
|
3053
|
+
to_object: dict[str, Any] = {}
|
3054
|
+
if getv(from_object, ['prompt']) is not None:
|
3055
|
+
setv(
|
3056
|
+
parent_object, ['instances[0]', 'prompt'], getv(from_object, ['prompt'])
|
3057
|
+
)
|
3058
|
+
|
3059
|
+
if getv(from_object, ['image']) is not None:
|
3060
|
+
setv(
|
3061
|
+
parent_object,
|
3062
|
+
['instances[0]', 'image'],
|
3063
|
+
_Image_to_vertex(getv(from_object, ['image']), to_object),
|
3064
|
+
)
|
3065
|
+
|
3066
|
+
if getv(from_object, ['scribble_image']) is not None:
|
3067
|
+
setv(
|
3068
|
+
parent_object,
|
3069
|
+
['instances[0]', 'scribble'],
|
3070
|
+
_ScribbleImage_to_vertex(
|
3071
|
+
getv(from_object, ['scribble_image']), to_object
|
3072
|
+
),
|
3073
|
+
)
|
3074
|
+
|
3075
|
+
return to_object
|
3076
|
+
|
3077
|
+
|
3078
|
+
def _SegmentImageConfig_to_vertex(
|
3079
|
+
from_object: Union[dict[str, Any], object],
|
3080
|
+
parent_object: Optional[dict[str, Any]] = None,
|
3081
|
+
) -> dict[str, Any]:
|
3082
|
+
to_object: dict[str, Any] = {}
|
3083
|
+
|
3084
|
+
if getv(from_object, ['mode']) is not None:
|
3085
|
+
setv(parent_object, ['parameters', 'mode'], getv(from_object, ['mode']))
|
3086
|
+
|
3087
|
+
if getv(from_object, ['max_predictions']) is not None:
|
3088
|
+
setv(
|
3089
|
+
parent_object,
|
3090
|
+
['parameters', 'maxPredictions'],
|
3091
|
+
getv(from_object, ['max_predictions']),
|
3092
|
+
)
|
3093
|
+
|
3094
|
+
if getv(from_object, ['confidence_threshold']) is not None:
|
3095
|
+
setv(
|
3096
|
+
parent_object,
|
3097
|
+
['parameters', 'confidenceThreshold'],
|
3098
|
+
getv(from_object, ['confidence_threshold']),
|
3099
|
+
)
|
3100
|
+
|
3101
|
+
if getv(from_object, ['mask_dilation']) is not None:
|
3102
|
+
setv(
|
3103
|
+
parent_object,
|
3104
|
+
['parameters', 'maskDilation'],
|
3105
|
+
getv(from_object, ['mask_dilation']),
|
3106
|
+
)
|
3107
|
+
|
3108
|
+
if getv(from_object, ['binary_color_threshold']) is not None:
|
3109
|
+
setv(
|
3110
|
+
parent_object,
|
3111
|
+
['parameters', 'binaryColorThreshold'],
|
3112
|
+
getv(from_object, ['binary_color_threshold']),
|
3113
|
+
)
|
3114
|
+
|
3115
|
+
return to_object
|
3116
|
+
|
3117
|
+
|
3118
|
+
def _SegmentImageParameters_to_vertex(
|
3119
|
+
api_client: BaseApiClient,
|
3120
|
+
from_object: Union[dict[str, Any], object],
|
3121
|
+
parent_object: Optional[dict[str, Any]] = None,
|
3122
|
+
) -> dict[str, Any]:
|
3123
|
+
to_object: dict[str, Any] = {}
|
3124
|
+
if getv(from_object, ['model']) is not None:
|
3125
|
+
setv(
|
3126
|
+
to_object,
|
3127
|
+
['_url', 'model'],
|
3128
|
+
t.t_model(api_client, getv(from_object, ['model'])),
|
3129
|
+
)
|
3130
|
+
|
3131
|
+
if getv(from_object, ['source']) is not None:
|
3132
|
+
setv(
|
3133
|
+
to_object,
|
3134
|
+
['config'],
|
3135
|
+
_SegmentImageSource_to_vertex(getv(from_object, ['source']), to_object),
|
3136
|
+
)
|
3137
|
+
|
3138
|
+
if getv(from_object, ['config']) is not None:
|
3139
|
+
setv(
|
3140
|
+
to_object,
|
3141
|
+
['config'],
|
3142
|
+
_SegmentImageConfig_to_vertex(getv(from_object, ['config']), to_object),
|
3143
|
+
)
|
3144
|
+
|
3145
|
+
return to_object
|
3146
|
+
|
3147
|
+
|
2993
3148
|
def _GetModelParameters_to_vertex(
|
2994
3149
|
api_client: BaseApiClient,
|
2995
3150
|
from_object: Union[dict[str, Any], object],
|
@@ -3241,11 +3396,20 @@ def _Video_to_vertex(
|
|
3241
3396
|
return to_object
|
3242
3397
|
|
3243
3398
|
|
3244
|
-
def
|
3399
|
+
def _VideoGenerationReferenceImage_to_vertex(
|
3245
3400
|
from_object: Union[dict[str, Any], object],
|
3246
3401
|
parent_object: Optional[dict[str, Any]] = None,
|
3247
3402
|
) -> dict[str, Any]:
|
3248
3403
|
to_object: dict[str, Any] = {}
|
3404
|
+
if getv(from_object, ['image']) is not None:
|
3405
|
+
setv(
|
3406
|
+
to_object,
|
3407
|
+
['image'],
|
3408
|
+
_Image_to_vertex(getv(from_object, ['image']), to_object),
|
3409
|
+
)
|
3410
|
+
|
3411
|
+
if getv(from_object, ['reference_type']) is not None:
|
3412
|
+
setv(to_object, ['referenceType'], getv(from_object, ['reference_type']))
|
3249
3413
|
|
3250
3414
|
return to_object
|
3251
3415
|
|
@@ -3339,6 +3503,16 @@ def _GenerateVideosConfig_to_vertex(
|
|
3339
3503
|
_Image_to_vertex(getv(from_object, ['last_frame']), to_object),
|
3340
3504
|
)
|
3341
3505
|
|
3506
|
+
if getv(from_object, ['reference_images']) is not None:
|
3507
|
+
setv(
|
3508
|
+
parent_object,
|
3509
|
+
['instances[0]', 'referenceImages'],
|
3510
|
+
[
|
3511
|
+
_VideoGenerationReferenceImage_to_vertex(item, to_object)
|
3512
|
+
for item in getv(from_object, ['reference_images'])
|
3513
|
+
],
|
3514
|
+
)
|
3515
|
+
|
3342
3516
|
if getv(from_object, ['compression_quality']) is not None:
|
3343
3517
|
setv(
|
3344
3518
|
parent_object,
|
@@ -4592,6 +4766,63 @@ def _RecontextImageResponse_from_vertex(
|
|
4592
4766
|
return to_object
|
4593
4767
|
|
4594
4768
|
|
4769
|
+
def _EntityLabel_from_vertex(
|
4770
|
+
from_object: Union[dict[str, Any], object],
|
4771
|
+
parent_object: Optional[dict[str, Any]] = None,
|
4772
|
+
) -> dict[str, Any]:
|
4773
|
+
to_object: dict[str, Any] = {}
|
4774
|
+
if getv(from_object, ['label']) is not None:
|
4775
|
+
setv(to_object, ['label'], getv(from_object, ['label']))
|
4776
|
+
|
4777
|
+
if getv(from_object, ['score']) is not None:
|
4778
|
+
setv(to_object, ['score'], getv(from_object, ['score']))
|
4779
|
+
|
4780
|
+
return to_object
|
4781
|
+
|
4782
|
+
|
4783
|
+
def _GeneratedImageMask_from_vertex(
|
4784
|
+
from_object: Union[dict[str, Any], object],
|
4785
|
+
parent_object: Optional[dict[str, Any]] = None,
|
4786
|
+
) -> dict[str, Any]:
|
4787
|
+
to_object: dict[str, Any] = {}
|
4788
|
+
if getv(from_object, ['_self']) is not None:
|
4789
|
+
setv(
|
4790
|
+
to_object,
|
4791
|
+
['mask'],
|
4792
|
+
_Image_from_vertex(getv(from_object, ['_self']), to_object),
|
4793
|
+
)
|
4794
|
+
|
4795
|
+
if getv(from_object, ['labels']) is not None:
|
4796
|
+
setv(
|
4797
|
+
to_object,
|
4798
|
+
['labels'],
|
4799
|
+
[
|
4800
|
+
_EntityLabel_from_vertex(item, to_object)
|
4801
|
+
for item in getv(from_object, ['labels'])
|
4802
|
+
],
|
4803
|
+
)
|
4804
|
+
|
4805
|
+
return to_object
|
4806
|
+
|
4807
|
+
|
4808
|
+
def _SegmentImageResponse_from_vertex(
|
4809
|
+
from_object: Union[dict[str, Any], object],
|
4810
|
+
parent_object: Optional[dict[str, Any]] = None,
|
4811
|
+
) -> dict[str, Any]:
|
4812
|
+
to_object: dict[str, Any] = {}
|
4813
|
+
if getv(from_object, ['predictions']) is not None:
|
4814
|
+
setv(
|
4815
|
+
to_object,
|
4816
|
+
['generated_masks'],
|
4817
|
+
[
|
4818
|
+
_GeneratedImageMask_from_vertex(item, to_object)
|
4819
|
+
for item in getv(from_object, ['predictions'])
|
4820
|
+
],
|
4821
|
+
)
|
4822
|
+
|
4823
|
+
return to_object
|
4824
|
+
|
4825
|
+
|
4595
4826
|
def _Endpoint_from_vertex(
|
4596
4827
|
from_object: Union[dict[str, Any], object],
|
4597
4828
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -5485,6 +5716,89 @@ class Models(_api_module.BaseModule):
|
|
5485
5716
|
self._api_client._verify_response(return_value)
|
5486
5717
|
return return_value
|
5487
5718
|
|
5719
|
+
def segment_image(
|
5720
|
+
self,
|
5721
|
+
*,
|
5722
|
+
model: str,
|
5723
|
+
source: types.SegmentImageSourceOrDict,
|
5724
|
+
config: Optional[types.SegmentImageConfigOrDict] = None,
|
5725
|
+
) -> types.SegmentImageResponse:
|
5726
|
+
"""Segments an image, creating a mask of a specified area.
|
5727
|
+
|
5728
|
+
Args:
|
5729
|
+
model (str): The model to use.
|
5730
|
+
source (SegmentImageSource): An object containing the source inputs
|
5731
|
+
(prompt, image, scribble_image) for image segmentation. The prompt is
|
5732
|
+
required for prompt mode and semantic mode, disallowed for other modes.
|
5733
|
+
scribble_image is required for the interactive mode, disallowed for
|
5734
|
+
other modes.
|
5735
|
+
config (SegmentImageConfig): Configuration for segmentation.
|
5736
|
+
|
5737
|
+
Usage:
|
5738
|
+
|
5739
|
+
```
|
5740
|
+
response = client.models.segment_image(
|
5741
|
+
model="image-segmentation-001",
|
5742
|
+
source=types.SegmentImageSource(
|
5743
|
+
image=types.Image.from_file(IMAGE_FILE_PATH),
|
5744
|
+
),
|
5745
|
+
)
|
5746
|
+
|
5747
|
+
mask_image = response.generated_masks[0].mask
|
5748
|
+
```
|
5749
|
+
"""
|
5750
|
+
|
5751
|
+
parameter_model = types._SegmentImageParameters(
|
5752
|
+
model=model,
|
5753
|
+
source=source,
|
5754
|
+
config=config,
|
5755
|
+
)
|
5756
|
+
|
5757
|
+
request_url_dict: Optional[dict[str, str]]
|
5758
|
+
if not self._api_client.vertexai:
|
5759
|
+
raise ValueError('This method is only supported in the Vertex AI client.')
|
5760
|
+
else:
|
5761
|
+
request_dict = _SegmentImageParameters_to_vertex(
|
5762
|
+
self._api_client, parameter_model
|
5763
|
+
)
|
5764
|
+
request_url_dict = request_dict.get('_url')
|
5765
|
+
if request_url_dict:
|
5766
|
+
path = '{model}:predict'.format_map(request_url_dict)
|
5767
|
+
else:
|
5768
|
+
path = '{model}:predict'
|
5769
|
+
|
5770
|
+
query_params = request_dict.get('_query')
|
5771
|
+
if query_params:
|
5772
|
+
path = f'{path}?{urlencode(query_params)}'
|
5773
|
+
# TODO: remove the hack that pops config.
|
5774
|
+
request_dict.pop('config', None)
|
5775
|
+
|
5776
|
+
http_options: Optional[types.HttpOptions] = None
|
5777
|
+
if (
|
5778
|
+
parameter_model.config is not None
|
5779
|
+
and parameter_model.config.http_options is not None
|
5780
|
+
):
|
5781
|
+
http_options = parameter_model.config.http_options
|
5782
|
+
|
5783
|
+
request_dict = _common.convert_to_dict(request_dict)
|
5784
|
+
request_dict = _common.encode_unserializable_types(request_dict)
|
5785
|
+
|
5786
|
+
response = self._api_client.request(
|
5787
|
+
'post', path, request_dict, http_options
|
5788
|
+
)
|
5789
|
+
|
5790
|
+
response_dict = '' if not response.body else json.loads(response.body)
|
5791
|
+
|
5792
|
+
if self._api_client.vertexai:
|
5793
|
+
response_dict = _SegmentImageResponse_from_vertex(response_dict)
|
5794
|
+
|
5795
|
+
return_value = types.SegmentImageResponse._from_response(
|
5796
|
+
response=response_dict, kwargs=parameter_model.model_dump()
|
5797
|
+
)
|
5798
|
+
|
5799
|
+
self._api_client._verify_response(return_value)
|
5800
|
+
return return_value
|
5801
|
+
|
5488
5802
|
def get(
|
5489
5803
|
self, *, model: str, config: Optional[types.GetModelConfigOrDict] = None
|
5490
5804
|
) -> types.Model:
|
@@ -7214,6 +7528,92 @@ class AsyncModels(_api_module.BaseModule):
|
|
7214
7528
|
self._api_client._verify_response(return_value)
|
7215
7529
|
return return_value
|
7216
7530
|
|
7531
|
+
async def segment_image(
|
7532
|
+
self,
|
7533
|
+
*,
|
7534
|
+
model: str,
|
7535
|
+
source: types.SegmentImageSourceOrDict,
|
7536
|
+
config: Optional[types.SegmentImageConfigOrDict] = None,
|
7537
|
+
) -> types.SegmentImageResponse:
|
7538
|
+
"""Segments an image, creating a mask of a specified area.
|
7539
|
+
|
7540
|
+
Args:
|
7541
|
+
model (str): The model to use.
|
7542
|
+
source (SegmentImageSource): An object containing the source inputs
|
7543
|
+
(prompt, image, scribble_image) for image segmentation. The prompt is
|
7544
|
+
required for prompt mode and semantic mode, disallowed for other modes.
|
7545
|
+
scribble_image is required for the interactive mode, disallowed for
|
7546
|
+
other modes.
|
7547
|
+
config (SegmentImageConfig): Configuration for segmentation.
|
7548
|
+
|
7549
|
+
Usage:
|
7550
|
+
|
7551
|
+
```
|
7552
|
+
response = client.models.segment_image(
|
7553
|
+
model="image-segmentation-001",
|
7554
|
+
source=types.SegmentImageSource(
|
7555
|
+
image=types.Image.from_file(IMAGE_FILE_PATH),
|
7556
|
+
),
|
7557
|
+
config=types.SegmentImageConfig(
|
7558
|
+
mode=types.SegmentMode.foreground,
|
7559
|
+
),
|
7560
|
+
)
|
7561
|
+
|
7562
|
+
mask_image = response.generated_masks[0].mask
|
7563
|
+
```
|
7564
|
+
"""
|
7565
|
+
|
7566
|
+
parameter_model = types._SegmentImageParameters(
|
7567
|
+
model=model,
|
7568
|
+
source=source,
|
7569
|
+
config=config,
|
7570
|
+
)
|
7571
|
+
|
7572
|
+
request_url_dict: Optional[dict[str, str]]
|
7573
|
+
if not self._api_client.vertexai:
|
7574
|
+
raise ValueError('This method is only supported in the Vertex AI client.')
|
7575
|
+
else:
|
7576
|
+
request_dict = _SegmentImageParameters_to_vertex(
|
7577
|
+
self._api_client, parameter_model
|
7578
|
+
)
|
7579
|
+
request_url_dict = request_dict.get('_url')
|
7580
|
+
if request_url_dict:
|
7581
|
+
path = '{model}:predict'.format_map(request_url_dict)
|
7582
|
+
else:
|
7583
|
+
path = '{model}:predict'
|
7584
|
+
|
7585
|
+
query_params = request_dict.get('_query')
|
7586
|
+
if query_params:
|
7587
|
+
path = f'{path}?{urlencode(query_params)}'
|
7588
|
+
# TODO: remove the hack that pops config.
|
7589
|
+
request_dict.pop('config', None)
|
7590
|
+
|
7591
|
+
http_options: Optional[types.HttpOptions] = None
|
7592
|
+
if (
|
7593
|
+
parameter_model.config is not None
|
7594
|
+
and parameter_model.config.http_options is not None
|
7595
|
+
):
|
7596
|
+
http_options = parameter_model.config.http_options
|
7597
|
+
|
7598
|
+
request_dict = _common.convert_to_dict(request_dict)
|
7599
|
+
request_dict = _common.encode_unserializable_types(request_dict)
|
7600
|
+
|
7601
|
+
response = await self._api_client.async_request(
|
7602
|
+
'post', path, request_dict, http_options
|
7603
|
+
)
|
7604
|
+
|
7605
|
+
response_dict = '' if not response.body else json.loads(response.body)
|
7606
|
+
|
7607
|
+
if self._api_client.vertexai:
|
7608
|
+
response_dict = _SegmentImageResponse_from_vertex(response_dict)
|
7609
|
+
|
7610
|
+
return_value = types.SegmentImageResponse._from_response(
|
7611
|
+
response=response_dict, kwargs=parameter_model.model_dump()
|
7612
|
+
)
|
7613
|
+
|
7614
|
+
self._api_client._verify_response(return_value)
|
7615
|
+
return return_value
|
7616
|
+
|
7217
7617
|
async def get(
|
7218
7618
|
self, *, model: str, config: Optional[types.GetModelConfigOrDict] = None
|
7219
7619
|
) -> types.Model:
|
google/genai/operations.py
CHANGED