diff --git a/google/genai/_live_converters.py b/google/genai/_live_converters.py index 5512f3876..aeb66e919 100644 --- a/google/genai/_live_converters.py +++ b/google/genai/_live_converters.py @@ -1674,6 +1674,11 @@ def _Part_to_mldev( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object @@ -1762,6 +1767,11 @@ def _Part_to_vertex( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/_tokens_converters.py b/google/genai/_tokens_converters.py index 8ece00fb5..a331e0c12 100644 --- a/google/genai/_tokens_converters.py +++ b/google/genai/_tokens_converters.py @@ -577,6 +577,11 @@ def _Part_to_mldev( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/batches.py b/google/genai/batches.py index a01715d59..1e8a424ff 100644 --- a/google/genai/batches.py +++ b/google/genai/batches.py @@ -1626,6 +1626,11 @@ def _Part_to_mldev( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/caches.py b/google/genai/caches.py index 90c77e897..91f02bc6f 100644 --- a/google/genai/caches.py +++ b/google/genai/caches.py @@ -802,6 +802,11 @@ def _Part_to_mldev( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object @@ -890,6 +895,11 @@ def _Part_to_vertex( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/models.py b/google/genai/models.py index 1d8dbd8d6..0e4fc3b7e 100644 --- a/google/genai/models.py +++ b/google/genai/models.py @@ -3708,6 +3708,11 @@ def _Part_to_mldev( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object @@ -3797,6 +3802,11 @@ def _Part_to_vertex( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/tunings.py b/google/genai/tunings.py index 13d9283e6..236022ae0 100644 --- a/google/genai/tunings.py +++ b/google/genai/tunings.py @@ -1588,6 +1588,11 @@ def _Part_to_vertex( getv(from_object, ['audio_transcription']), ) + if getv(from_object, ['media_processing']) is not None: + setv( + to_object, ['mediaProcessing'], getv(from_object, ['media_processing']) + ) + return to_object diff --git a/google/genai/types.py b/google/genai/types.py index 78266988b..c4cb44af0 100644 --- a/google/genai/types.py +++ b/google/genai/types.py @@ -1013,6 +1013,17 @@ class ComputationBasedMetricType(_common.CaseInSensitiveEnum): """ROUGE metric.""" +class MediaProcessing(_common.CaseInSensitiveEnum): + """How the model processes input media for understanding.""" + + MEDIA_PROCESSING_UNSPECIFIED = 'MEDIA_PROCESSING_UNSPECIFIED' + """Default. Uses model-specific processing (3.5 Pro+ -> `AGENTIC`, older models -> `STATIC`).""" + STATIC = 'STATIC' + """Fixed-rate frame extraction. All frames placed in context.""" + AGENTIC = 'AGENTIC' + """Model-driven dynamic navigation. Recommended for most use cases.""" + + class PartMediaResolutionLevel(_common.CaseInSensitiveEnum): """The tokenization quality used for given media.""" @@ -2291,6 +2302,10 @@ class Part(_common.BaseModel): default=None, description="""Output only. The transcription of the audio part.""", ) + media_processing: Optional[MediaProcessing] = Field( + default=None, + description="""How the model processes this part's media for understanding.""", + ) def __init__( self, @@ -2525,6 +2540,9 @@ class PartDict(TypedDict, total=False): audio_transcription: Optional[TranscriptionDict] """Output only. The transcription of the audio part.""" + media_processing: Optional[MediaProcessing] + """How the model processes this part's media for understanding.""" + PartOrDict = Union[Part, PartDict]