google-genai 1.26.0__py3-none-any.whl → 1.28.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/__init__.py +1 -0
- google/genai/_api_client.py +143 -39
- google/genai/_common.py +9 -6
- google/genai/_extra_utils.py +8 -8
- google/genai/_mcp_utils.py +4 -1
- google/genai/_replay_api_client.py +6 -2
- google/genai/_transformers.py +13 -12
- google/genai/batches.py +16 -2
- google/genai/caches.py +16 -2
- google/genai/errors.py +1 -1
- google/genai/files.py +11 -2
- google/genai/live.py +2 -3
- google/genai/models.py +229 -18
- google/genai/pagers.py +13 -3
- google/genai/tokens.py +3 -3
- google/genai/tunings.py +49 -8
- google/genai/types.py +108 -2
- google/genai/version.py +1 -1
- {google_genai-1.26.0.dist-info → google_genai-1.28.0.dist-info}/METADATA +61 -27
- google_genai-1.28.0.dist-info/RECORD +35 -0
- google_genai-1.26.0.dist-info/RECORD +0 -35
- {google_genai-1.26.0.dist-info → google_genai-1.28.0.dist-info}/WHEEL +0 -0
- {google_genai-1.26.0.dist-info → google_genai-1.28.0.dist-info}/licenses/LICENSE +0 -0
- {google_genai-1.26.0.dist-info → google_genai-1.28.0.dist-info}/top_level.txt +0 -0
google/genai/caches.py
CHANGED
@@ -1327,6 +1327,11 @@ def _ListCachedContentsResponse_from_mldev(
|
|
1327
1327
|
parent_object: Optional[dict[str, Any]] = None,
|
1328
1328
|
) -> dict[str, Any]:
|
1329
1329
|
to_object: dict[str, Any] = {}
|
1330
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
1331
|
+
setv(
|
1332
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
1333
|
+
)
|
1334
|
+
|
1330
1335
|
if getv(from_object, ['nextPageToken']) is not None:
|
1331
1336
|
setv(to_object, ['next_page_token'], getv(from_object, ['nextPageToken']))
|
1332
1337
|
|
@@ -1386,6 +1391,11 @@ def _ListCachedContentsResponse_from_vertex(
|
|
1386
1391
|
parent_object: Optional[dict[str, Any]] = None,
|
1387
1392
|
) -> dict[str, Any]:
|
1388
1393
|
to_object: dict[str, Any] = {}
|
1394
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
1395
|
+
setv(
|
1396
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
1397
|
+
)
|
1398
|
+
|
1389
1399
|
if getv(from_object, ['nextPageToken']) is not None:
|
1390
1400
|
setv(to_object, ['next_page_token'], getv(from_object, ['nextPageToken']))
|
1391
1401
|
|
@@ -1773,7 +1783,9 @@ class Caches(_api_module.BaseModule):
|
|
1773
1783
|
return_value = types.ListCachedContentsResponse._from_response(
|
1774
1784
|
response=response_dict, kwargs=parameter_model.model_dump()
|
1775
1785
|
)
|
1776
|
-
|
1786
|
+
return_value.sdk_http_response = types.HttpResponse(
|
1787
|
+
headers=response.headers
|
1788
|
+
)
|
1777
1789
|
self._api_client._verify_response(return_value)
|
1778
1790
|
return return_value
|
1779
1791
|
|
@@ -2165,7 +2177,9 @@ class AsyncCaches(_api_module.BaseModule):
|
|
2165
2177
|
return_value = types.ListCachedContentsResponse._from_response(
|
2166
2178
|
response=response_dict, kwargs=parameter_model.model_dump()
|
2167
2179
|
)
|
2168
|
-
|
2180
|
+
return_value.sdk_http_response = types.HttpResponse(
|
2181
|
+
headers=response.headers
|
2182
|
+
)
|
2169
2183
|
self._api_client._verify_response(return_value)
|
2170
2184
|
return return_value
|
2171
2185
|
|
google/genai/errors.py
CHANGED
@@ -65,7 +65,7 @@ class APIError(Exception):
|
|
65
65
|
'code', response_json.get('error', {}).get('code', None)
|
66
66
|
)
|
67
67
|
|
68
|
-
def _to_replay_record(self) ->
|
68
|
+
def _to_replay_record(self) -> _common.StringDict:
|
69
69
|
"""Returns a dictionary representation of the error for replay recording.
|
70
70
|
|
71
71
|
details is not included since it may expose internal information in the
|
google/genai/files.py
CHANGED
@@ -267,6 +267,11 @@ def _ListFilesResponse_from_mldev(
|
|
267
267
|
parent_object: Optional[dict[str, Any]] = None,
|
268
268
|
) -> dict[str, Any]:
|
269
269
|
to_object: dict[str, Any] = {}
|
270
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
271
|
+
setv(
|
272
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
273
|
+
)
|
274
|
+
|
270
275
|
if getv(from_object, ['nextPageToken']) is not None:
|
271
276
|
setv(to_object, ['next_page_token'], getv(from_object, ['nextPageToken']))
|
272
277
|
|
@@ -370,7 +375,9 @@ class Files(_api_module.BaseModule):
|
|
370
375
|
return_value = types.ListFilesResponse._from_response(
|
371
376
|
response=response_dict, kwargs=parameter_model.model_dump()
|
372
377
|
)
|
373
|
-
|
378
|
+
return_value.sdk_http_response = types.HttpResponse(
|
379
|
+
headers=response.headers
|
380
|
+
)
|
374
381
|
self._api_client._verify_response(return_value)
|
375
382
|
return return_value
|
376
383
|
|
@@ -848,7 +855,9 @@ class AsyncFiles(_api_module.BaseModule):
|
|
848
855
|
return_value = types.ListFilesResponse._from_response(
|
849
856
|
response=response_dict, kwargs=parameter_model.model_dump()
|
850
857
|
)
|
851
|
-
|
858
|
+
return_value.sdk_http_response = types.HttpResponse(
|
859
|
+
headers=response.headers
|
860
|
+
)
|
852
861
|
self._api_client._verify_response(return_value)
|
853
862
|
return return_value
|
854
863
|
|
google/genai/live.py
CHANGED
@@ -33,7 +33,6 @@ from . import _common
|
|
33
33
|
from . import _live_converters as live_converters
|
34
34
|
from . import _mcp_utils
|
35
35
|
from . import _transformers as t
|
36
|
-
from . import client
|
37
36
|
from . import errors
|
38
37
|
from . import types
|
39
38
|
from ._api_client import BaseApiClient
|
@@ -288,7 +287,7 @@ class AsyncSession:
|
|
288
287
|
print(f'{msg.text}')
|
289
288
|
```
|
290
289
|
"""
|
291
|
-
kwargs:
|
290
|
+
kwargs: _common.StringDict = {}
|
292
291
|
if media is not None:
|
293
292
|
kwargs['media'] = media
|
294
293
|
if audio is not None:
|
@@ -639,7 +638,7 @@ class AsyncSession:
|
|
639
638
|
elif isinstance(formatted_input, Sequence) and any(
|
640
639
|
isinstance(c, str) for c in formatted_input
|
641
640
|
):
|
642
|
-
to_object:
|
641
|
+
to_object: _common.StringDict = {}
|
643
642
|
content_input_parts: list[types.PartUnion] = []
|
644
643
|
for item in formatted_input:
|
645
644
|
if isinstance(item, get_args(types.PartUnion)):
|
google/genai/models.py
CHANGED
@@ -996,6 +996,9 @@ def _GenerateImagesConfig_to_mldev(
|
|
996
996
|
if getv(from_object, ['add_watermark']) is not None:
|
997
997
|
raise ValueError('add_watermark parameter is not supported in Gemini API.')
|
998
998
|
|
999
|
+
if getv(from_object, ['image_size']) is not None:
|
1000
|
+
raise ValueError('image_size parameter is not supported in Gemini API.')
|
1001
|
+
|
999
1002
|
if getv(from_object, ['enhance_prompt']) is not None:
|
1000
1003
|
raise ValueError('enhance_prompt parameter is not supported in Gemini API.')
|
1001
1004
|
|
@@ -1239,6 +1242,15 @@ def _Image_to_mldev(
|
|
1239
1242
|
return to_object
|
1240
1243
|
|
1241
1244
|
|
1245
|
+
def _GenerateVideosSource_to_mldev(
|
1246
|
+
from_object: Union[dict[str, Any], object],
|
1247
|
+
parent_object: Optional[dict[str, Any]] = None,
|
1248
|
+
) -> dict[str, Any]:
|
1249
|
+
to_object: dict[str, Any] = {}
|
1250
|
+
|
1251
|
+
return to_object
|
1252
|
+
|
1253
|
+
|
1242
1254
|
def _GenerateVideosConfig_to_mldev(
|
1243
1255
|
from_object: Union[dict[str, Any], object],
|
1244
1256
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -2388,6 +2400,13 @@ def _GenerateImagesConfig_to_vertex(
|
|
2388
2400
|
getv(from_object, ['add_watermark']),
|
2389
2401
|
)
|
2390
2402
|
|
2403
|
+
if getv(from_object, ['image_size']) is not None:
|
2404
|
+
setv(
|
2405
|
+
parent_object,
|
2406
|
+
['parameters', 'sampleImageSize'],
|
2407
|
+
getv(from_object, ['image_size']),
|
2408
|
+
)
|
2409
|
+
|
2391
2410
|
if getv(from_object, ['enhance_prompt']) is not None:
|
2392
2411
|
setv(
|
2393
2412
|
parent_object,
|
@@ -3071,6 +3090,15 @@ def _Video_to_vertex(
|
|
3071
3090
|
return to_object
|
3072
3091
|
|
3073
3092
|
|
3093
|
+
def _GenerateVideosSource_to_vertex(
|
3094
|
+
from_object: Union[dict[str, Any], object],
|
3095
|
+
parent_object: Optional[dict[str, Any]] = None,
|
3096
|
+
) -> dict[str, Any]:
|
3097
|
+
to_object: dict[str, Any] = {}
|
3098
|
+
|
3099
|
+
return to_object
|
3100
|
+
|
3101
|
+
|
3074
3102
|
def _GenerateVideosConfig_to_vertex(
|
3075
3103
|
from_object: Union[dict[str, Any], object],
|
3076
3104
|
parent_object: Optional[dict[str, Any]] = None,
|
@@ -3521,6 +3549,11 @@ def _EmbedContentResponse_from_mldev(
|
|
3521
3549
|
parent_object: Optional[dict[str, Any]] = None,
|
3522
3550
|
) -> dict[str, Any]:
|
3523
3551
|
to_object: dict[str, Any] = {}
|
3552
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
3553
|
+
setv(
|
3554
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
3555
|
+
)
|
3556
|
+
|
3524
3557
|
if getv(from_object, ['embeddings']) is not None:
|
3525
3558
|
setv(
|
3526
3559
|
to_object,
|
@@ -3619,6 +3652,11 @@ def _GenerateImagesResponse_from_mldev(
|
|
3619
3652
|
parent_object: Optional[dict[str, Any]] = None,
|
3620
3653
|
) -> dict[str, Any]:
|
3621
3654
|
to_object: dict[str, Any] = {}
|
3655
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
3656
|
+
setv(
|
3657
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
3658
|
+
)
|
3659
|
+
|
3622
3660
|
if getv(from_object, ['predictions']) is not None:
|
3623
3661
|
setv(
|
3624
3662
|
to_object,
|
@@ -3709,6 +3747,11 @@ def _ListModelsResponse_from_mldev(
|
|
3709
3747
|
parent_object: Optional[dict[str, Any]] = None,
|
3710
3748
|
) -> dict[str, Any]:
|
3711
3749
|
to_object: dict[str, Any] = {}
|
3750
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
3751
|
+
setv(
|
3752
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
3753
|
+
)
|
3754
|
+
|
3712
3755
|
if getv(from_object, ['nextPageToken']) is not None:
|
3713
3756
|
setv(to_object, ['next_page_token'], getv(from_object, ['nextPageToken']))
|
3714
3757
|
|
@@ -3739,6 +3782,11 @@ def _CountTokensResponse_from_mldev(
|
|
3739
3782
|
parent_object: Optional[dict[str, Any]] = None,
|
3740
3783
|
) -> dict[str, Any]:
|
3741
3784
|
to_object: dict[str, Any] = {}
|
3785
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
3786
|
+
setv(
|
3787
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
3788
|
+
)
|
3789
|
+
|
3742
3790
|
if getv(from_object, ['totalTokens']) is not None:
|
3743
3791
|
setv(to_object, ['total_tokens'], getv(from_object, ['totalTokens']))
|
3744
3792
|
|
@@ -4191,6 +4239,11 @@ def _EmbedContentResponse_from_vertex(
|
|
4191
4239
|
parent_object: Optional[dict[str, Any]] = None,
|
4192
4240
|
) -> dict[str, Any]:
|
4193
4241
|
to_object: dict[str, Any] = {}
|
4242
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4243
|
+
setv(
|
4244
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4245
|
+
)
|
4246
|
+
|
4194
4247
|
if getv(from_object, ['predictions[]', 'embeddings']) is not None:
|
4195
4248
|
setv(
|
4196
4249
|
to_object,
|
@@ -4294,6 +4347,11 @@ def _GenerateImagesResponse_from_vertex(
|
|
4294
4347
|
parent_object: Optional[dict[str, Any]] = None,
|
4295
4348
|
) -> dict[str, Any]:
|
4296
4349
|
to_object: dict[str, Any] = {}
|
4350
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4351
|
+
setv(
|
4352
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4353
|
+
)
|
4354
|
+
|
4297
4355
|
if getv(from_object, ['predictions']) is not None:
|
4298
4356
|
setv(
|
4299
4357
|
to_object,
|
@@ -4321,6 +4379,11 @@ def _EditImageResponse_from_vertex(
|
|
4321
4379
|
parent_object: Optional[dict[str, Any]] = None,
|
4322
4380
|
) -> dict[str, Any]:
|
4323
4381
|
to_object: dict[str, Any] = {}
|
4382
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4383
|
+
setv(
|
4384
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4385
|
+
)
|
4386
|
+
|
4324
4387
|
if getv(from_object, ['predictions']) is not None:
|
4325
4388
|
setv(
|
4326
4389
|
to_object,
|
@@ -4339,6 +4402,11 @@ def _UpscaleImageResponse_from_vertex(
|
|
4339
4402
|
parent_object: Optional[dict[str, Any]] = None,
|
4340
4403
|
) -> dict[str, Any]:
|
4341
4404
|
to_object: dict[str, Any] = {}
|
4405
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4406
|
+
setv(
|
4407
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4408
|
+
)
|
4409
|
+
|
4342
4410
|
if getv(from_object, ['predictions']) is not None:
|
4343
4411
|
setv(
|
4344
4412
|
to_object,
|
@@ -4471,6 +4539,11 @@ def _ListModelsResponse_from_vertex(
|
|
4471
4539
|
parent_object: Optional[dict[str, Any]] = None,
|
4472
4540
|
) -> dict[str, Any]:
|
4473
4541
|
to_object: dict[str, Any] = {}
|
4542
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4543
|
+
setv(
|
4544
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4545
|
+
)
|
4546
|
+
|
4474
4547
|
if getv(from_object, ['nextPageToken']) is not None:
|
4475
4548
|
setv(to_object, ['next_page_token'], getv(from_object, ['nextPageToken']))
|
4476
4549
|
|
@@ -4501,6 +4574,11 @@ def _CountTokensResponse_from_vertex(
|
|
4501
4574
|
parent_object: Optional[dict[str, Any]] = None,
|
4502
4575
|
) -> dict[str, Any]:
|
4503
4576
|
to_object: dict[str, Any] = {}
|
4577
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4578
|
+
setv(
|
4579
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4580
|
+
)
|
4581
|
+
|
4504
4582
|
if getv(from_object, ['totalTokens']) is not None:
|
4505
4583
|
setv(to_object, ['total_tokens'], getv(from_object, ['totalTokens']))
|
4506
4584
|
|
@@ -4512,6 +4590,11 @@ def _ComputeTokensResponse_from_vertex(
|
|
4512
4590
|
parent_object: Optional[dict[str, Any]] = None,
|
4513
4591
|
) -> dict[str, Any]:
|
4514
4592
|
to_object: dict[str, Any] = {}
|
4593
|
+
if getv(from_object, ['sdkHttpResponse']) is not None:
|
4594
|
+
setv(
|
4595
|
+
to_object, ['sdk_http_response'], getv(from_object, ['sdkHttpResponse'])
|
4596
|
+
)
|
4597
|
+
|
4515
4598
|
if getv(from_object, ['tokensInfo']) is not None:
|
4516
4599
|
setv(to_object, ['tokens_info'], getv(from_object, ['tokensInfo']))
|
4517
4600
|
|
@@ -4865,7 +4948,9 @@ class Models(_api_module.BaseModule):
|
|
4865
4948
|
return_value = types.EmbedContentResponse._from_response(
|
4866
4949
|
response=response_dict, kwargs=parameter_model.model_dump()
|
4867
4950
|
)
|
4868
|
-
|
4951
|
+
return_value.sdk_http_response = types.HttpResponse(
|
4952
|
+
headers=response.headers
|
4953
|
+
)
|
4869
4954
|
self._api_client._verify_response(return_value)
|
4870
4955
|
return return_value
|
4871
4956
|
|
@@ -4941,7 +5026,9 @@ class Models(_api_module.BaseModule):
|
|
4941
5026
|
return_value = types.GenerateImagesResponse._from_response(
|
4942
5027
|
response=response_dict, kwargs=parameter_model.model_dump()
|
4943
5028
|
)
|
4944
|
-
|
5029
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5030
|
+
headers=response.headers
|
5031
|
+
)
|
4945
5032
|
self._api_client._verify_response(return_value)
|
4946
5033
|
return return_value
|
4947
5034
|
|
@@ -5043,7 +5130,9 @@ class Models(_api_module.BaseModule):
|
|
5043
5130
|
return_value = types.EditImageResponse._from_response(
|
5044
5131
|
response=response_dict, kwargs=parameter_model.model_dump()
|
5045
5132
|
)
|
5046
|
-
|
5133
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5134
|
+
headers=response.headers
|
5135
|
+
)
|
5047
5136
|
self._api_client._verify_response(return_value)
|
5048
5137
|
return return_value
|
5049
5138
|
|
@@ -5112,7 +5201,9 @@ class Models(_api_module.BaseModule):
|
|
5112
5201
|
return_value = types.UpscaleImageResponse._from_response(
|
5113
5202
|
response=response_dict, kwargs=parameter_model.model_dump()
|
5114
5203
|
)
|
5115
|
-
|
5204
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5205
|
+
headers=response.headers
|
5206
|
+
)
|
5116
5207
|
self._api_client._verify_response(return_value)
|
5117
5208
|
return return_value
|
5118
5209
|
|
@@ -5233,7 +5324,9 @@ class Models(_api_module.BaseModule):
|
|
5233
5324
|
return_value = types.ListModelsResponse._from_response(
|
5234
5325
|
response=response_dict, kwargs=parameter_model.model_dump()
|
5235
5326
|
)
|
5236
|
-
|
5327
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5328
|
+
headers=response.headers
|
5329
|
+
)
|
5237
5330
|
self._api_client._verify_response(return_value)
|
5238
5331
|
return return_value
|
5239
5332
|
|
@@ -5454,7 +5547,9 @@ class Models(_api_module.BaseModule):
|
|
5454
5547
|
return_value = types.CountTokensResponse._from_response(
|
5455
5548
|
response=response_dict, kwargs=parameter_model.model_dump()
|
5456
5549
|
)
|
5457
|
-
|
5550
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5551
|
+
headers=response.headers
|
5552
|
+
)
|
5458
5553
|
self._api_client._verify_response(return_value)
|
5459
5554
|
return return_value
|
5460
5555
|
|
@@ -5535,11 +5630,13 @@ class Models(_api_module.BaseModule):
|
|
5535
5630
|
return_value = types.ComputeTokensResponse._from_response(
|
5536
5631
|
response=response_dict, kwargs=parameter_model.model_dump()
|
5537
5632
|
)
|
5538
|
-
|
5633
|
+
return_value.sdk_http_response = types.HttpResponse(
|
5634
|
+
headers=response.headers
|
5635
|
+
)
|
5539
5636
|
self._api_client._verify_response(return_value)
|
5540
5637
|
return return_value
|
5541
5638
|
|
5542
|
-
def
|
5639
|
+
def _generate_videos(
|
5543
5640
|
self,
|
5544
5641
|
*,
|
5545
5642
|
model: str,
|
@@ -5560,7 +5657,7 @@ class Models(_api_module.BaseModule):
|
|
5560
5657
|
Args:
|
5561
5658
|
model: The model to use.
|
5562
5659
|
prompt: The text prompt for generating the videos. Optional for image to
|
5563
|
-
video use cases.
|
5660
|
+
video and video extension use cases.
|
5564
5661
|
image: The input image for generating the videos. Optional if prompt is
|
5565
5662
|
provided.
|
5566
5663
|
video: The input video for video extension use cases. Optional if prompt
|
@@ -6129,6 +6226,56 @@ class Models(_api_module.BaseModule):
|
|
6129
6226
|
config=api_config,
|
6130
6227
|
)
|
6131
6228
|
|
6229
|
+
def generate_videos(
|
6230
|
+
self,
|
6231
|
+
*,
|
6232
|
+
model: str,
|
6233
|
+
prompt: Optional[str] = None,
|
6234
|
+
image: Optional[types.ImageOrDict] = None,
|
6235
|
+
video: Optional[types.VideoOrDict] = None,
|
6236
|
+
config: Optional[types.GenerateVideosConfigOrDict] = None,
|
6237
|
+
) -> types.GenerateVideosOperation:
|
6238
|
+
"""Generates videos based on an input (text, image, or video) and configuration.
|
6239
|
+
|
6240
|
+
The following use cases are supported:
|
6241
|
+
1. Text to video generation.
|
6242
|
+
2a. Image to video generation (additional text prompt is optional).
|
6243
|
+
2b. Image to video generation with frame interpolation (specify last_frame
|
6244
|
+
in config).
|
6245
|
+
3. Video extension (additional text prompt is optional)
|
6246
|
+
|
6247
|
+
Args:
|
6248
|
+
model: The model to use.
|
6249
|
+
prompt: The text prompt for generating the videos. Optional for image to
|
6250
|
+
video and video extension use cases.
|
6251
|
+
image: The input image for generating the videos. Optional if prompt is
|
6252
|
+
provided.
|
6253
|
+
video: The input video for video extension use cases. Optional if prompt
|
6254
|
+
or image is provided.
|
6255
|
+
config: Configuration for generation.
|
6256
|
+
|
6257
|
+
Usage:
|
6258
|
+
|
6259
|
+
```
|
6260
|
+
operation = client.models.generate_videos(
|
6261
|
+
model="veo-2.0-generate-001",
|
6262
|
+
prompt="A neon hologram of a cat driving at top speed",
|
6263
|
+
)
|
6264
|
+
while not operation.done:
|
6265
|
+
time.sleep(10)
|
6266
|
+
operation = client.operations.get(operation)
|
6267
|
+
|
6268
|
+
operation.result.generated_videos[0].video.uri
|
6269
|
+
```
|
6270
|
+
"""
|
6271
|
+
return self._generate_videos(
|
6272
|
+
model=model,
|
6273
|
+
prompt=prompt,
|
6274
|
+
image=image,
|
6275
|
+
video=video,
|
6276
|
+
config=config,
|
6277
|
+
)
|
6278
|
+
|
6132
6279
|
def list(
|
6133
6280
|
self,
|
6134
6281
|
*,
|
@@ -6426,7 +6573,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
6426
6573
|
return_value = types.EmbedContentResponse._from_response(
|
6427
6574
|
response=response_dict, kwargs=parameter_model.model_dump()
|
6428
6575
|
)
|
6429
|
-
|
6576
|
+
return_value.sdk_http_response = types.HttpResponse(
|
6577
|
+
headers=response.headers
|
6578
|
+
)
|
6430
6579
|
self._api_client._verify_response(return_value)
|
6431
6580
|
return return_value
|
6432
6581
|
|
@@ -6502,7 +6651,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
6502
6651
|
return_value = types.GenerateImagesResponse._from_response(
|
6503
6652
|
response=response_dict, kwargs=parameter_model.model_dump()
|
6504
6653
|
)
|
6505
|
-
|
6654
|
+
return_value.sdk_http_response = types.HttpResponse(
|
6655
|
+
headers=response.headers
|
6656
|
+
)
|
6506
6657
|
self._api_client._verify_response(return_value)
|
6507
6658
|
return return_value
|
6508
6659
|
|
@@ -6604,7 +6755,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
6604
6755
|
return_value = types.EditImageResponse._from_response(
|
6605
6756
|
response=response_dict, kwargs=parameter_model.model_dump()
|
6606
6757
|
)
|
6607
|
-
|
6758
|
+
return_value.sdk_http_response = types.HttpResponse(
|
6759
|
+
headers=response.headers
|
6760
|
+
)
|
6608
6761
|
self._api_client._verify_response(return_value)
|
6609
6762
|
return return_value
|
6610
6763
|
|
@@ -6673,7 +6826,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
6673
6826
|
return_value = types.UpscaleImageResponse._from_response(
|
6674
6827
|
response=response_dict, kwargs=parameter_model.model_dump()
|
6675
6828
|
)
|
6676
|
-
|
6829
|
+
return_value.sdk_http_response = types.HttpResponse(
|
6830
|
+
headers=response.headers
|
6831
|
+
)
|
6677
6832
|
self._api_client._verify_response(return_value)
|
6678
6833
|
return return_value
|
6679
6834
|
|
@@ -6798,7 +6953,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
6798
6953
|
return_value = types.ListModelsResponse._from_response(
|
6799
6954
|
response=response_dict, kwargs=parameter_model.model_dump()
|
6800
6955
|
)
|
6801
|
-
|
6956
|
+
return_value.sdk_http_response = types.HttpResponse(
|
6957
|
+
headers=response.headers
|
6958
|
+
)
|
6802
6959
|
self._api_client._verify_response(return_value)
|
6803
6960
|
return return_value
|
6804
6961
|
|
@@ -7019,7 +7176,9 @@ class AsyncModels(_api_module.BaseModule):
|
|
7019
7176
|
return_value = types.CountTokensResponse._from_response(
|
7020
7177
|
response=response_dict, kwargs=parameter_model.model_dump()
|
7021
7178
|
)
|
7022
|
-
|
7179
|
+
return_value.sdk_http_response = types.HttpResponse(
|
7180
|
+
headers=response.headers
|
7181
|
+
)
|
7023
7182
|
self._api_client._verify_response(return_value)
|
7024
7183
|
return return_value
|
7025
7184
|
|
@@ -7099,11 +7258,13 @@ class AsyncModels(_api_module.BaseModule):
|
|
7099
7258
|
return_value = types.ComputeTokensResponse._from_response(
|
7100
7259
|
response=response_dict, kwargs=parameter_model.model_dump()
|
7101
7260
|
)
|
7102
|
-
|
7261
|
+
return_value.sdk_http_response = types.HttpResponse(
|
7262
|
+
headers=response.headers
|
7263
|
+
)
|
7103
7264
|
self._api_client._verify_response(return_value)
|
7104
7265
|
return return_value
|
7105
7266
|
|
7106
|
-
async def
|
7267
|
+
async def _generate_videos(
|
7107
7268
|
self,
|
7108
7269
|
*,
|
7109
7270
|
model: str,
|
@@ -7124,7 +7285,7 @@ class AsyncModels(_api_module.BaseModule):
|
|
7124
7285
|
Args:
|
7125
7286
|
model: The model to use.
|
7126
7287
|
prompt: The text prompt for generating the videos. Optional for image to
|
7127
|
-
video use cases.
|
7288
|
+
video and video extension use cases.
|
7128
7289
|
image: The input image for generating the videos. Optional if prompt is
|
7129
7290
|
provided.
|
7130
7291
|
video: The input video for video extension use cases. Optional if prompt
|
@@ -7724,3 +7885,53 @@ class AsyncModels(_api_module.BaseModule):
|
|
7724
7885
|
upscale_factor=upscale_factor,
|
7725
7886
|
config=api_config,
|
7726
7887
|
)
|
7888
|
+
|
7889
|
+
async def generate_videos(
|
7890
|
+
self,
|
7891
|
+
*,
|
7892
|
+
model: str,
|
7893
|
+
prompt: Optional[str] = None,
|
7894
|
+
image: Optional[types.ImageOrDict] = None,
|
7895
|
+
video: Optional[types.VideoOrDict] = None,
|
7896
|
+
config: Optional[types.GenerateVideosConfigOrDict] = None,
|
7897
|
+
) -> types.GenerateVideosOperation:
|
7898
|
+
"""Generates videos based on an input (text, image, or video) and configuration.
|
7899
|
+
|
7900
|
+
The following use cases are supported:
|
7901
|
+
1. Text to video generation.
|
7902
|
+
2a. Image to video generation (additional text prompt is optional).
|
7903
|
+
2b. Image to video generation with frame interpolation (specify last_frame
|
7904
|
+
in config).
|
7905
|
+
3. Video extension (additional text prompt is optional)
|
7906
|
+
|
7907
|
+
Args:
|
7908
|
+
model: The model to use.
|
7909
|
+
prompt: The text prompt for generating the videos. Optional for image to
|
7910
|
+
video and video extension use cases.
|
7911
|
+
image: The input image for generating the videos. Optional if prompt is
|
7912
|
+
provided.
|
7913
|
+
video: The input video for video extension use cases. Optional if prompt
|
7914
|
+
or image is provided.
|
7915
|
+
config: Configuration for generation.
|
7916
|
+
|
7917
|
+
Usage:
|
7918
|
+
|
7919
|
+
```
|
7920
|
+
operation = client.models.generate_videos(
|
7921
|
+
model="veo-2.0-generate-001",
|
7922
|
+
prompt="A neon hologram of a cat driving at top speed",
|
7923
|
+
)
|
7924
|
+
while not operation.done:
|
7925
|
+
time.sleep(10)
|
7926
|
+
operation = client.operations.get(operation)
|
7927
|
+
|
7928
|
+
operation.result.generated_videos[0].video.uri
|
7929
|
+
```
|
7930
|
+
"""
|
7931
|
+
return await self._generate_videos(
|
7932
|
+
model=model,
|
7933
|
+
prompt=prompt,
|
7934
|
+
image=image,
|
7935
|
+
video=video,
|
7936
|
+
config=config,
|
7937
|
+
)
|
google/genai/pagers.py
CHANGED
@@ -18,7 +18,9 @@
|
|
18
18
|
# pylint: disable=protected-access
|
19
19
|
|
20
20
|
import copy
|
21
|
-
from typing import Any, AsyncIterator,Awaitable, Callable, Generic, Iterator, Literal, TypeVar
|
21
|
+
from typing import Any, AsyncIterator, Awaitable, Callable, Generic, Iterator, Literal, TypeVar, Union
|
22
|
+
from . import _common
|
23
|
+
from . import types
|
22
24
|
|
23
25
|
T = TypeVar('T')
|
24
26
|
|
@@ -43,6 +45,8 @@ class _BasePager(Generic[T]):
|
|
43
45
|
self._page = getattr(response, self._name) or []
|
44
46
|
self._idx = 0
|
45
47
|
|
48
|
+
self._sdk_http_response = getattr(response, 'sdk_http_response', None)
|
49
|
+
|
46
50
|
if not config:
|
47
51
|
request_config = {}
|
48
52
|
elif isinstance(config, dict):
|
@@ -65,7 +69,7 @@ class _BasePager(Generic[T]):
|
|
65
69
|
|
66
70
|
@property
|
67
71
|
def page(self) -> list[T]:
|
68
|
-
"""Returns a subset of the entire list of items.
|
72
|
+
"""Returns a subset of the entire list of items.
|
69
73
|
|
70
74
|
For the number of items returned, see `pageSize()`.
|
71
75
|
|
@@ -111,7 +115,13 @@ class _BasePager(Generic[T]):
|
|
111
115
|
return self._page_size
|
112
116
|
|
113
117
|
@property
|
114
|
-
def
|
118
|
+
def sdk_http_response(self) -> Union[types.HttpResponse, None]:
|
119
|
+
"""Returns the http response of the API response."""
|
120
|
+
|
121
|
+
return self._sdk_http_response
|
122
|
+
|
123
|
+
@property
|
124
|
+
def config(self) -> _common.StringDict:
|
115
125
|
"""Returns the configuration when making the API request for the next page.
|
116
126
|
|
117
127
|
A configuration is a set of optional parameters and arguments that can be
|
google/genai/tokens.py
CHANGED
@@ -27,7 +27,7 @@ from . import types
|
|
27
27
|
logger = logging.getLogger('google_genai.tokens')
|
28
28
|
|
29
29
|
|
30
|
-
def _get_field_masks(setup:
|
30
|
+
def _get_field_masks(setup: _common.StringDict) -> str:
|
31
31
|
"""Return field_masks"""
|
32
32
|
fields = []
|
33
33
|
for k, v in setup.items():
|
@@ -42,9 +42,9 @@ def _get_field_masks(setup: Dict[str, Any]) -> str:
|
|
42
42
|
|
43
43
|
|
44
44
|
def _convert_bidi_setup_to_token_setup(
|
45
|
-
request_dict:
|
45
|
+
request_dict: _common.StringDict,
|
46
46
|
config: Optional[types.CreateAuthTokenConfigOrDict] = None,
|
47
|
-
) ->
|
47
|
+
) -> _common.StringDict:
|
48
48
|
"""Converts bidiGenerateContentSetup."""
|
49
49
|
bidi_setup = request_dict.get('bidiGenerateContentSetup')
|
50
50
|
if bidi_setup and bidi_setup.get('setup'):
|