google-genai 1.24.0__py3-none-any.whl → 1.26.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.
@@ -17,12 +17,11 @@
17
17
 
18
18
  import json
19
19
  import logging
20
- from typing import Any, Optional, Union
20
+ from typing import Any, Optional, TypeVar, Union
21
21
  from urllib.parse import urlencode
22
22
 
23
23
  from . import _api_module
24
24
  from . import _common
25
- from . import _transformers as t
26
25
  from . import types
27
26
  from ._common import get_value_by_path as getv
28
27
  from ._common import set_value_by_path as setv
@@ -87,218 +86,6 @@ def _FetchPredictOperationParameters_to_vertex(
87
86
  return to_object
88
87
 
89
88
 
90
- def _Video_from_mldev(
91
- from_object: Union[dict[str, Any], object],
92
- parent_object: Optional[dict[str, Any]] = None,
93
- ) -> dict[str, Any]:
94
- to_object: dict[str, Any] = {}
95
- if getv(from_object, ['video', 'uri']) is not None:
96
- setv(to_object, ['uri'], getv(from_object, ['video', 'uri']))
97
-
98
- if getv(from_object, ['video', 'encodedVideo']) is not None:
99
- setv(
100
- to_object,
101
- ['video_bytes'],
102
- t.t_bytes(getv(from_object, ['video', 'encodedVideo'])),
103
- )
104
-
105
- if getv(from_object, ['encoding']) is not None:
106
- setv(to_object, ['mime_type'], getv(from_object, ['encoding']))
107
-
108
- return to_object
109
-
110
-
111
- def _GeneratedVideo_from_mldev(
112
- from_object: Union[dict[str, Any], object],
113
- parent_object: Optional[dict[str, Any]] = None,
114
- ) -> dict[str, Any]:
115
- to_object: dict[str, Any] = {}
116
- if getv(from_object, ['_self']) is not None:
117
- setv(
118
- to_object,
119
- ['video'],
120
- _Video_from_mldev(getv(from_object, ['_self']), to_object),
121
- )
122
-
123
- return to_object
124
-
125
-
126
- def _GenerateVideosResponse_from_mldev(
127
- from_object: Union[dict[str, Any], object],
128
- parent_object: Optional[dict[str, Any]] = None,
129
- ) -> dict[str, Any]:
130
- to_object: dict[str, Any] = {}
131
- if getv(from_object, ['generatedSamples']) is not None:
132
- setv(
133
- to_object,
134
- ['generated_videos'],
135
- [
136
- _GeneratedVideo_from_mldev(item, to_object)
137
- for item in getv(from_object, ['generatedSamples'])
138
- ],
139
- )
140
-
141
- if getv(from_object, ['raiMediaFilteredCount']) is not None:
142
- setv(
143
- to_object,
144
- ['rai_media_filtered_count'],
145
- getv(from_object, ['raiMediaFilteredCount']),
146
- )
147
-
148
- if getv(from_object, ['raiMediaFilteredReasons']) is not None:
149
- setv(
150
- to_object,
151
- ['rai_media_filtered_reasons'],
152
- getv(from_object, ['raiMediaFilteredReasons']),
153
- )
154
-
155
- return to_object
156
-
157
-
158
- def _GenerateVideosOperation_from_mldev(
159
- from_object: Union[dict[str, Any], object],
160
- parent_object: Optional[dict[str, Any]] = None,
161
- ) -> dict[str, Any]:
162
- to_object: dict[str, Any] = {}
163
- if getv(from_object, ['name']) is not None:
164
- setv(to_object, ['name'], getv(from_object, ['name']))
165
-
166
- if getv(from_object, ['metadata']) is not None:
167
- setv(to_object, ['metadata'], getv(from_object, ['metadata']))
168
-
169
- if getv(from_object, ['done']) is not None:
170
- setv(to_object, ['done'], getv(from_object, ['done']))
171
-
172
- if getv(from_object, ['error']) is not None:
173
- setv(to_object, ['error'], getv(from_object, ['error']))
174
-
175
- if getv(from_object, ['response', 'generateVideoResponse']) is not None:
176
- setv(
177
- to_object,
178
- ['response'],
179
- _GenerateVideosResponse_from_mldev(
180
- getv(from_object, ['response', 'generateVideoResponse']), to_object
181
- ),
182
- )
183
-
184
- if getv(from_object, ['response', 'generateVideoResponse']) is not None:
185
- setv(
186
- to_object,
187
- ['result'],
188
- _GenerateVideosResponse_from_mldev(
189
- getv(from_object, ['response', 'generateVideoResponse']), to_object
190
- ),
191
- )
192
-
193
- return to_object
194
-
195
-
196
- def _Video_from_vertex(
197
- from_object: Union[dict[str, Any], object],
198
- parent_object: Optional[dict[str, Any]] = None,
199
- ) -> dict[str, Any]:
200
- to_object: dict[str, Any] = {}
201
- if getv(from_object, ['gcsUri']) is not None:
202
- setv(to_object, ['uri'], getv(from_object, ['gcsUri']))
203
-
204
- if getv(from_object, ['bytesBase64Encoded']) is not None:
205
- setv(
206
- to_object,
207
- ['video_bytes'],
208
- t.t_bytes(getv(from_object, ['bytesBase64Encoded'])),
209
- )
210
-
211
- if getv(from_object, ['mimeType']) is not None:
212
- setv(to_object, ['mime_type'], getv(from_object, ['mimeType']))
213
-
214
- return to_object
215
-
216
-
217
- def _GeneratedVideo_from_vertex(
218
- from_object: Union[dict[str, Any], object],
219
- parent_object: Optional[dict[str, Any]] = None,
220
- ) -> dict[str, Any]:
221
- to_object: dict[str, Any] = {}
222
- if getv(from_object, ['_self']) is not None:
223
- setv(
224
- to_object,
225
- ['video'],
226
- _Video_from_vertex(getv(from_object, ['_self']), to_object),
227
- )
228
-
229
- return to_object
230
-
231
-
232
- def _GenerateVideosResponse_from_vertex(
233
- from_object: Union[dict[str, Any], object],
234
- parent_object: Optional[dict[str, Any]] = None,
235
- ) -> dict[str, Any]:
236
- to_object: dict[str, Any] = {}
237
- if getv(from_object, ['videos']) is not None:
238
- setv(
239
- to_object,
240
- ['generated_videos'],
241
- [
242
- _GeneratedVideo_from_vertex(item, to_object)
243
- for item in getv(from_object, ['videos'])
244
- ],
245
- )
246
-
247
- if getv(from_object, ['raiMediaFilteredCount']) is not None:
248
- setv(
249
- to_object,
250
- ['rai_media_filtered_count'],
251
- getv(from_object, ['raiMediaFilteredCount']),
252
- )
253
-
254
- if getv(from_object, ['raiMediaFilteredReasons']) is not None:
255
- setv(
256
- to_object,
257
- ['rai_media_filtered_reasons'],
258
- getv(from_object, ['raiMediaFilteredReasons']),
259
- )
260
-
261
- return to_object
262
-
263
-
264
- def _GenerateVideosOperation_from_vertex(
265
- from_object: Union[dict[str, Any], object],
266
- parent_object: Optional[dict[str, Any]] = None,
267
- ) -> dict[str, Any]:
268
- to_object: dict[str, Any] = {}
269
- if getv(from_object, ['name']) is not None:
270
- setv(to_object, ['name'], getv(from_object, ['name']))
271
-
272
- if getv(from_object, ['metadata']) is not None:
273
- setv(to_object, ['metadata'], getv(from_object, ['metadata']))
274
-
275
- if getv(from_object, ['done']) is not None:
276
- setv(to_object, ['done'], getv(from_object, ['done']))
277
-
278
- if getv(from_object, ['error']) is not None:
279
- setv(to_object, ['error'], getv(from_object, ['error']))
280
-
281
- if getv(from_object, ['response']) is not None:
282
- setv(
283
- to_object,
284
- ['response'],
285
- _GenerateVideosResponse_from_vertex(
286
- getv(from_object, ['response']), to_object
287
- ),
288
- )
289
-
290
- if getv(from_object, ['response']) is not None:
291
- setv(
292
- to_object,
293
- ['result'],
294
- _GenerateVideosResponse_from_vertex(
295
- getv(from_object, ['response']), to_object
296
- ),
297
- )
298
-
299
- return to_object
300
-
301
-
302
89
  class Operations(_api_module.BaseModule):
303
90
 
304
91
  def _get_videos_operation(
@@ -306,7 +93,7 @@ class Operations(_api_module.BaseModule):
306
93
  *,
307
94
  operation_name: str,
308
95
  config: Optional[types.GetOperationConfigOrDict] = None,
309
- ) -> types.GenerateVideosOperation:
96
+ ) -> Any:
310
97
  parameter_model = types._GetOperationParameters(
311
98
  operation_name=operation_name,
312
99
  config=config,
@@ -348,18 +135,7 @@ class Operations(_api_module.BaseModule):
348
135
 
349
136
  response_dict = '' if not response.body else json.loads(response.body)
350
137
 
351
- if self._api_client.vertexai:
352
- response_dict = _GenerateVideosOperation_from_vertex(response_dict)
353
-
354
- else:
355
- response_dict = _GenerateVideosOperation_from_mldev(response_dict)
356
-
357
- return_value = types.GenerateVideosOperation._from_response(
358
- response=response_dict, kwargs=parameter_model.model_dump()
359
- )
360
-
361
- self._api_client._verify_response(return_value)
362
- return return_value
138
+ return response_dict
363
139
 
364
140
  def _fetch_predict_videos_operation(
365
141
  self,
@@ -367,7 +143,7 @@ class Operations(_api_module.BaseModule):
367
143
  operation_name: str,
368
144
  resource_name: str,
369
145
  config: Optional[types.FetchPredictOperationConfigOrDict] = None,
370
- ) -> types.GenerateVideosOperation:
146
+ ) -> Any:
371
147
  parameter_model = types._FetchPredictOperationParameters(
372
148
  operation_name=operation_name,
373
149
  resource_name=resource_name,
@@ -409,22 +185,16 @@ class Operations(_api_module.BaseModule):
409
185
 
410
186
  response_dict = '' if not response.body else json.loads(response.body)
411
187
 
412
- if self._api_client.vertexai:
413
- response_dict = _GenerateVideosOperation_from_vertex(response_dict)
188
+ return response_dict
414
189
 
415
- return_value = types.GenerateVideosOperation._from_response(
416
- response=response_dict, kwargs=parameter_model.model_dump()
417
- )
418
-
419
- self._api_client._verify_response(return_value)
420
- return return_value
190
+ T = TypeVar('T', bound=types.Operation)
421
191
 
422
192
  def get(
423
193
  self,
424
- operation: types.GenerateVideosOperation,
194
+ operation: T,
425
195
  *,
426
196
  config: Optional[types.GetOperationConfigOrDict] = None,
427
- ) -> types.GenerateVideosOperation:
197
+ ) -> T:
428
198
  """Gets the status of an operation."""
429
199
  # Currently, only GenerateVideosOperation is supported.
430
200
  # TODO(b/398040607): Support short form names
@@ -449,16 +219,25 @@ class Operations(_api_module.BaseModule):
449
219
  fetch_operation_config = types.FetchPredictOperationConfig(
450
220
  http_options=http_options
451
221
  )
452
- return self._fetch_predict_videos_operation(
222
+ response_dict = self._fetch_predict_videos_operation(
453
223
  operation_name=operation_name,
454
224
  resource_name=resource_name,
455
225
  config=fetch_operation_config,
456
226
  )
227
+
228
+ response_operation = operation.from_api_response(
229
+ response_dict, is_vertex_ai=True
230
+ )
231
+ return response_operation # type: ignore[no-any-return]
457
232
  else:
458
- return self._get_videos_operation(
233
+ response_dict = self._get_videos_operation(
459
234
  operation_name=operation_name,
460
235
  config=config,
461
236
  )
237
+ response_operation = operation.from_api_response(
238
+ response_dict, is_vertex_ai=False
239
+ )
240
+ return response_operation # type: ignore[no-any-return]
462
241
 
463
242
 
464
243
  class AsyncOperations(_api_module.BaseModule):
@@ -468,7 +247,7 @@ class AsyncOperations(_api_module.BaseModule):
468
247
  *,
469
248
  operation_name: str,
470
249
  config: Optional[types.GetOperationConfigOrDict] = None,
471
- ) -> types.GenerateVideosOperation:
250
+ ) -> Any:
472
251
  parameter_model = types._GetOperationParameters(
473
252
  operation_name=operation_name,
474
253
  config=config,
@@ -512,18 +291,7 @@ class AsyncOperations(_api_module.BaseModule):
512
291
 
513
292
  response_dict = '' if not response.body else json.loads(response.body)
514
293
 
515
- if self._api_client.vertexai:
516
- response_dict = _GenerateVideosOperation_from_vertex(response_dict)
517
-
518
- else:
519
- response_dict = _GenerateVideosOperation_from_mldev(response_dict)
520
-
521
- return_value = types.GenerateVideosOperation._from_response(
522
- response=response_dict, kwargs=parameter_model.model_dump()
523
- )
524
-
525
- self._api_client._verify_response(return_value)
526
- return return_value
294
+ return response_dict
527
295
 
528
296
  async def _fetch_predict_videos_operation(
529
297
  self,
@@ -531,7 +299,7 @@ class AsyncOperations(_api_module.BaseModule):
531
299
  operation_name: str,
532
300
  resource_name: str,
533
301
  config: Optional[types.FetchPredictOperationConfigOrDict] = None,
534
- ) -> types.GenerateVideosOperation:
302
+ ) -> Any:
535
303
  parameter_model = types._FetchPredictOperationParameters(
536
304
  operation_name=operation_name,
537
305
  resource_name=resource_name,
@@ -573,22 +341,16 @@ class AsyncOperations(_api_module.BaseModule):
573
341
 
574
342
  response_dict = '' if not response.body else json.loads(response.body)
575
343
 
576
- if self._api_client.vertexai:
577
- response_dict = _GenerateVideosOperation_from_vertex(response_dict)
344
+ return response_dict
578
345
 
579
- return_value = types.GenerateVideosOperation._from_response(
580
- response=response_dict, kwargs=parameter_model.model_dump()
581
- )
582
-
583
- self._api_client._verify_response(return_value)
584
- return return_value
346
+ T = TypeVar('T', bound=types.Operation)
585
347
 
586
348
  async def get(
587
349
  self,
588
- operation: types.GenerateVideosOperation,
350
+ operation: T,
589
351
  *,
590
352
  config: Optional[types.GetOperationConfigOrDict] = None,
591
- ) -> types.GenerateVideosOperation:
353
+ ) -> T:
592
354
  """Gets the status of an operation."""
593
355
  # Currently, only GenerateVideosOperation is supported.
594
356
  operation_name = operation.name
@@ -611,13 +373,21 @@ class AsyncOperations(_api_module.BaseModule):
611
373
  fetch_operation_config = types.FetchPredictOperationConfig(
612
374
  http_options=http_options
613
375
  )
614
- return await self._fetch_predict_videos_operation(
376
+ response_dict = await self._fetch_predict_videos_operation(
615
377
  operation_name=operation_name,
616
378
  resource_name=resource_name,
617
379
  config=fetch_operation_config,
618
380
  )
381
+ response_operation = operation.from_api_response(
382
+ response_dict, is_vertex_ai=True
383
+ )
384
+ return response_operation # type: ignore[no-any-return]
619
385
  else:
620
- return await self._get_videos_operation(
386
+ response_dict = await self._get_videos_operation(
621
387
  operation_name=operation_name,
622
388
  config=config,
623
389
  )
390
+ response_operation = operation.from_api_response(
391
+ response_dict, is_vertex_ai=False
392
+ )
393
+ return response_operation # type: ignore[no-any-return]
google/genai/tokens.py CHANGED
@@ -166,7 +166,7 @@ class Tokens(_api_module.BaseModule):
166
166
  config=types.CreateAuthTokenConfig(
167
167
  uses=10,
168
168
  live_constrained_parameters=types.LiveEphemeralParameters(
169
- model='gemini-2.0-flash-live-001',
169
+ model='gemini-live-2.5-flash-preview',
170
170
  config=types.LiveConnectConfig(
171
171
  system_instruction='You are an LLM called Gemini.'
172
172
  ),
@@ -202,7 +202,7 @@ class Tokens(_api_module.BaseModule):
202
202
  config=types.CreateAuthTokenConfig(
203
203
  uses=10,
204
204
  live_constrained_parameters=types.LiveEphemeralParameters(
205
- model='gemini-2.0-flash-live-001',
205
+ model='gemini-live-2.5-flash-preview',
206
206
  config=types.LiveConnectConfig(
207
207
  system_instruction='You are an LLM called Gemini.'
208
208
  ),
@@ -284,7 +284,7 @@ class AsyncTokens(_api_module.BaseModule):
284
284
  async def create(
285
285
  self, *, config: Optional[types.CreateAuthTokenConfigOrDict] = None
286
286
  ) -> types.AuthToken:
287
- """Creates an auth token asynchronously.
287
+ """Creates an auth token asynchronously. Support in v1alpha only.
288
288
 
289
289
  Args:
290
290
  config (CreateAuthTokenConfig): Optional configuration for the request.
@@ -292,12 +292,16 @@ class AsyncTokens(_api_module.BaseModule):
292
292
  Usage:
293
293
 
294
294
  .. code-block:: python
295
+ client = genai.Client(
296
+ api_key=API_KEY,
297
+ http_options=types.HttpOptions(api_version='v1alpha'),
298
+ )
295
299
 
296
300
  auth_token = await client.aio.tokens.create(
297
301
  config=types.CreateAuthTokenConfig(
298
302
  uses=10,
299
303
  live_constrained_parameters=types.LiveEphemeralParameters(
300
- model='gemini-2.0-flash-live-001',
304
+ model='gemini-live-2.5-flash-preview',
301
305
  config=types.LiveConnectConfig(
302
306
  system_instruction='You are an LLM called Gemini.'
303
307
  ),
google/genai/tunings.py CHANGED
@@ -126,22 +126,6 @@ def _TuningDataset_to_mldev(
126
126
  return to_object
127
127
 
128
128
 
129
- def _TuningValidationDataset_to_mldev(
130
- from_object: Union[dict[str, Any], object],
131
- parent_object: Optional[dict[str, Any]] = None,
132
- ) -> dict[str, Any]:
133
- to_object: dict[str, Any] = {}
134
- if getv(from_object, ['gcs_uri']) is not None:
135
- raise ValueError('gcs_uri parameter is not supported in Gemini API.')
136
-
137
- if getv(from_object, ['vertex_dataset_resource']) is not None:
138
- raise ValueError(
139
- 'vertex_dataset_resource parameter is not supported in Gemini API.'
140
- )
141
-
142
- return to_object
143
-
144
-
145
129
  def _CreateTuningJobConfig_to_mldev(
146
130
  from_object: Union[dict[str, Any], object],
147
131
  parent_object: Optional[dict[str, Any]] = None,
@@ -286,20 +270,6 @@ def _ListTuningJobsParameters_to_vertex(
286
270
  return to_object
287
271
 
288
272
 
289
- def _TuningExample_to_vertex(
290
- from_object: Union[dict[str, Any], object],
291
- parent_object: Optional[dict[str, Any]] = None,
292
- ) -> dict[str, Any]:
293
- to_object: dict[str, Any] = {}
294
- if getv(from_object, ['text_input']) is not None:
295
- raise ValueError('text_input parameter is not supported in Vertex AI.')
296
-
297
- if getv(from_object, ['output']) is not None:
298
- raise ValueError('output parameter is not supported in Vertex AI.')
299
-
300
- return to_object
301
-
302
-
303
273
  def _TuningDataset_to_vertex(
304
274
  from_object: Union[dict[str, Any], object],
305
275
  parent_object: Optional[dict[str, Any]] = None,
@@ -434,15 +404,6 @@ def _CreateTuningJobParameters_to_vertex(
434
404
  return to_object
435
405
 
436
406
 
437
- def _TunedModelCheckpoint_from_mldev(
438
- from_object: Union[dict[str, Any], object],
439
- parent_object: Optional[dict[str, Any]] = None,
440
- ) -> dict[str, Any]:
441
- to_object: dict[str, Any] = {}
442
-
443
- return to_object
444
-
445
-
446
407
  def _TunedModel_from_mldev(
447
408
  from_object: Union[dict[str, Any], object],
448
409
  parent_object: Optional[dict[str, Any]] = None,
@@ -561,7 +522,7 @@ def _ListTuningJobsResponse_from_mldev(
561
522
  return to_object
562
523
 
563
524
 
564
- def _Operation_from_mldev(
525
+ def _TuningOperation_from_mldev(
565
526
  from_object: Union[dict[str, Any], object],
566
527
  parent_object: Optional[dict[str, Any]] = None,
567
528
  ) -> dict[str, Any]:
@@ -955,7 +916,7 @@ class Tunings(_api_module.BaseModule):
955
916
  base_model: str,
956
917
  training_dataset: types.TuningDatasetOrDict,
957
918
  config: Optional[types.CreateTuningJobConfigOrDict] = None,
958
- ) -> types.Operation:
919
+ ) -> types.TuningOperation:
959
920
  """Creates a supervised fine-tuning job and returns the TuningJob object.
960
921
 
961
922
  Args:
@@ -1009,9 +970,9 @@ class Tunings(_api_module.BaseModule):
1009
970
  response_dict = '' if not response.body else json.loads(response.body)
1010
971
 
1011
972
  if not self._api_client.vertexai:
1012
- response_dict = _Operation_from_mldev(response_dict)
973
+ response_dict = _TuningOperation_from_mldev(response_dict)
1013
974
 
1014
- return_value = types.Operation._from_response(
975
+ return_value = types.TuningOperation._from_response(
1015
976
  response=response_dict, kwargs=parameter_model.model_dump()
1016
977
  )
1017
978
 
@@ -1299,7 +1260,7 @@ class AsyncTunings(_api_module.BaseModule):
1299
1260
  base_model: str,
1300
1261
  training_dataset: types.TuningDatasetOrDict,
1301
1262
  config: Optional[types.CreateTuningJobConfigOrDict] = None,
1302
- ) -> types.Operation:
1263
+ ) -> types.TuningOperation:
1303
1264
  """Creates a supervised fine-tuning job and returns the TuningJob object.
1304
1265
 
1305
1266
  Args:
@@ -1353,9 +1314,9 @@ class AsyncTunings(_api_module.BaseModule):
1353
1314
  response_dict = '' if not response.body else json.loads(response.body)
1354
1315
 
1355
1316
  if not self._api_client.vertexai:
1356
- response_dict = _Operation_from_mldev(response_dict)
1317
+ response_dict = _TuningOperation_from_mldev(response_dict)
1357
1318
 
1358
- return_value = types.Operation._from_response(
1319
+ return_value = types.TuningOperation._from_response(
1359
1320
  response=response_dict, kwargs=parameter_model.model_dump()
1360
1321
  )
1361
1322