o
    Thԛ                    @   s+  d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ edZ	dldeee ef e!f deee ef  dee ef fddZ"	dldeee ef e!f deee ef  dee ef fddZ#	dldeee ef e!f deee ef  dee ef fddZ$	dldeee ef e!f deee ef  dee ef fddZ%	dldeee ef e!f deee ef  dee ef fddZ&	dldeee ef e!f deee ef  dee ef fddZ'	dldeee ef e!f deee ef  dee ef fd d!Z(	dldeee ef e!f deee ef  dee ef fd"d#Z)	dldeee ef e!f deee ef  dee ef fd$d%Z*	dldeee ef e!f deee ef  dee ef fd&d'Z+	dldeee ef e!f deee ef  dee ef fd(d)Z,	dldeee ef e!f deee ef  dee ef fd*d+Z-	dldeee ef e!f deee ef  dee ef fd,d-Z.	dldeee ef e!f deee ef  dee ef fd.d/Z/	dldeee ef e!f deee ef  dee ef fd0d1Z0	dldeee ef e!f deee ef  dee ef fd2d3Z1	dldeee ef e!f deee ef  dee ef fd4d5Z2	dldeee ef e!f deee ef  dee ef fd6d7Z3	dldeee ef e!f deee ef  dee ef fd8d9Z4	dldeee ef e!f deee ef  dee ef fd:d;Z5	dldeee ef e!f deee ef  dee ef fd<d=Z6	dldeee ef e!f deee ef  dee ef fd>d?Z7	dldeee ef e!f deee ef  dee ef fd@dAZ8	dldeee ef e!f deee ef  dee ef fdBdCZ9	dldeee ef e!f deee ef  dee ef fdDdEZ:	dldeee ef e!f deee ef  dee ef fdFdGZ;	dldeee ef e!f deee ef  dee ef fdHdIZ<	dldeee ef e!f deee ef  dee ef fdJdKZ=	dldeee ef e!f deee ef  dee ef fdLdMZ>	dldNedeee ef e!f deee ef  dee ef fdOdPZ?	dldNedeee ef e!f deee ef  dee ef fdQdRZ@	dldeee ef e!f deee ef  dee ef fdSdTZA	dldNedeee ef e!f deee ef  dee ef fdUdVZB	dldeee ef e!f deee ef  dee ef fdWdXZC	dldNedeee ef e!f deee ef  dee ef fdYdZZD	dldNedeee ef e!f deee ef  dee ef fd[d\ZE	dldNedeee ef e!f deee ef  dee ef fd]d^ZF	dldNedeee ef e!f deee ef  dee ef fd_d`ZG	dldeee ef e!f deee ef  dee ef fdadbZH	dldNedeee ef e!f deee ef  dee ef fdcddZI	dldNedeee ef e!f deee ef  dee ef fdedfZJ	dldeee ef e!f deee ef  dee ef fdgdhZK	dldNedeee ef e!f deee ef  dee ef fdidjZL	dldeee ef e!f deee ef  dee ef fdkdlZM	dldeee ef e!f deee ef  dee ef fdmdnZN	dldeee ef e!f deee ef  dee ef fdodpZO	dldNedeee ef e!f deee ef  dee ef fdqdrZP	dldeee ef e!f deee ef  dee ef fdsdtZQ	dldeee ef e!f deee ef  dee ef fdudvZR	dldeee ef e!f deee ef  dee ef fdwdxZS	dldeee ef e!f deee ef  dee ef fdydzZT	dldeee ef e!f deee ef  dee ef fd{d|ZU	dldeee ef e!f deee ef  dee ef fd}d~ZV	dldeee ef e!f deee ef  dee ef fddZW	dldeee ef e!f deee ef  dee ef fddZX	dldeee ef e!f deee ef  dee ef fddZY	dldeee ef e!f deee ef  dee ef fddZZ	dldeee ef e!f deee ef  dee ef fddZ[	dldeee ef e!f deee ef  dee ef fddZ\	dldeee ef e!f deee ef  dee ef fddZ]	dldeee ef e!f deee ef  dee ef fddZ^	dldeee ef e!f deee ef  dee ef fddZ_	dldeee ef e!f deee ef  dee ef fddZ`	dldeee ef e!f deee ef  dee ef fddZa	dldeee ef e!f deee ef  dee ef fddZb	dldeee ef e!f deee ef  dee ef fddZc	dldeee ef e!f deee ef  dee ef fddZd	dldeee ef e!f deee ef  dee ef fddZe	dldeee ef e!f deee ef  dee ef fddZf	dldeee ef e!f deee ef  dee ef fddZg	dldeee ef e!f deee ef  dee ef fddZh	dldeee ef e!f deee ef  dee ef fddZi	dldeee ef e!f deee ef  dee ef fddZj	dldeee ef e!f deee ef  dee ef fddZk	dldeee ef e!f deee ef  dee ef fddZl	dldeee ef e!f deee ef  dee ef fddZm	dldNedeee ef e!f deee ef  dee ef fddZn	dldNedeee ef e!f deee ef  dee ef fddZo	dldeee ef e!f deee ef  dee ef fddZp	dldNedeee ef e!f deee ef  dee ef fddZq	dldeee ef e!f deee ef  dee ef fddZr	dldNedeee ef e!f deee ef  dee ef fddZs	dldeee ef e!f deee ef  dee ef fddZt	dldeee ef e!f deee ef  dee ef fddZu	dldeee ef e!f deee ef  dee ef fddZv	dldeee ef e!f deee ef  dee ef fddZw	dldeee ef e!f deee ef  dee ef fddZx	dldeee ef e!f deee ef  dee ef fddĄZy	dldeee ef e!f deee ef  dee ef fddƄZz	dldNedeee ef e!f deee ef  dee ef fddȄZ{	dldeee ef e!f deee ef  dee ef fddʄZ|	dldNedeee ef e!f deee ef  dee ef fdd̄Z}	dldNedeee ef e!f deee ef  dee ef fdd΄Z~	dldNedeee ef e!f deee ef  dee ef fddЄZ	dldNedeee ef e!f deee ef  dee ef fdd҄Z	dldeee ef e!f deee ef  dee ef fddԄZ	dldNedeee ef e!f deee ef  dee ef fddքZ	dldNedeee ef e!f deee ef  dee ef fdd؄Z	dldeee ef e!f deee ef  dee ef fddڄZ	dldNedeee ef e!f deee ef  dee ef fdd܄Z	dldNedeee ef e!f deee ef  dee ef fddބZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldNedeee ef e!f deee ef  dee ef fddZdeddfddZdeddfddZdeddfddZdeddfddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fd dZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fdd	Z	dldeee ef e!f deee ef  dee ef fd
dZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fddZ	dldeee ef e!f deee ef  dee ef fd d!Z	dldeee ef e!f deee ef  dee ef fd"d#Z	dldeee ef e!f deee ef  dee ef fd$d%Z	dldeee ef e!f deee ef  dee ef fd&d'Z	dldeee ef e!f deee ef  dee ef fd(d)Z	dldeee ef e!f deee ef  dee ef fd*d+Z	dldeee ef e!f deee ef  dee ef fd,d-Z	dldeee ef e!f deee ef  dee ef fd.d/Z	dldeee ef e!f deee ef  dee ef fd0d1Z	dldeee ef e!f deee ef  dee ef fd2d3Z	dldeee ef e!f deee ef  dee ef fd4d5Z	dldeee ef e!f deee ef  dee ef fd6d7Z	dldeee ef e!f deee ef  dee ef fd8d9Z	dldeee ef e!f deee ef  dee ef fd:d;Z	dldeee ef e!f deee ef  dee ef fd<d=Z	dldeee ef e!f deee ef  dee ef fd>d?Z	dldeee ef e!f deee ef  dee ef fd@dAZ	dldeee ef e!f deee ef  dee ef fdBdCZ	dldeee ef e!f deee ef  dee ef fdDdEZ	dldeee ef e!f deee ef  dee ef fdFdGZ	dldeee ef e!f deee ef  dee ef fdHdIZ	dldeee ef e!f deee ef  dee ef fdJdKZ	dldeee ef e!f deee ef  dee ef fdLdMZ	dldeee ef e!f deee ef  dee ef fdNdOZ	dldeee ef e!f deee ef  dee ef fdPdQZ	dldeee ef e!f deee ef  dee ef fdRdSZ	dldeee ef e!f deee ef  dee ef fdTdUZ	dldeee ef e!f deee ef  dee ef fdVdWZ	dldeee ef e!f deee ef  dee ef fdXdYZ	dldeee ef e!f deee ef  dee ef fdZd[Z	dldeee ef e!f deee ef  dee ef fd\d]Z	dldeee ef e!f deee ef  dee ef fd^d_Z	dldeee ef e!f deee ef  dee ef fd`daZ	dldeee ef e!f deee ef  dee ef fdbdcZ	dldeee ef e!f deee ef  dee ef fdddeZ	dldeee ef e!f deee ef  dee ef fdfdgZG dhdi diej˃ZG djdk dkej˃ZdS (m      N)AnyAsyncIterator	AwaitableIteratorOptionalUnion)	urlencode   )_api_module)_common)_extra_utils)
_mcp_utils)_transformers)errors)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.modelsfrom_objectparent_objectreturnc                 C   z   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S Nfps
end_offset	endOffsetstart_offsetstartOffsetgetvsetvr   r   	to_object r%   V/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/google/genai/models.py_VideoMetadata_to_mldev&      r'   c                 C   sl   i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg |S )Ndisplay_name6display_name parameter is not supported in Gemini API.data	mime_typemimeTyper!   
ValueErrorr"   r#   r%   r%   r&   _Blob_to_mldev7      r0   c                 C   sl   i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg |S )Nr)   r*   file_urifileUrir,   r-   r.   r#   r%   r%   r&   _FileData_to_mldevH   r1   r4   c                 C     i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd urAt|dgtt | dg| t | dgd urWt|dgtt | dg| t | dgd urjt|d	gt | dg t | d
gd ur}t|dgt | d
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg |S Nvideo_metadatavideoMetadatathoughtinline_data
inlineData	file_datafileDatathought_signaturethoughtSignaturecode_execution_resultcodeExecutionResultexecutable_codeexecutableCodefunction_callfunctionCallfunction_responsefunctionResponsetext)r!   r"   r'   r0   r4   r#   r%   r%   r&   _Part_to_mldevY   `   


rI   c                    b   i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg  S )Npartsc                       g | ]}t | qS r%   )rI   .0itemr$   r%   r&   
<listcomp>       z%_Content_to_mldev.<locals>.<listcomp>roler    r   r   r%   rQ   r&   _Content_to_mldev      

	rV   c                 C   s  i }t | dgd urtdt | dgd urtdt | dgd ur&tdt | dgd ur9t|dgt | dg t | d	gd urLt|d	gt | d	g t | d
gd ur_t|d
gt | d
g t | dgd urrt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd ur3t|dgt | dg t | dgd urGt|dgt | dg t | dgd ur[t|dgt | dg t | dgd urot|dgt | dg t | dgd urt|dgt | dg t | d gd urt|d!gt | d g t | d"gd urt|d"gt | d"g t | d#gd urt|d#gt | d#g t | d$gd urt|d$gt | d$g |S )%Nadditional_propertiesz?additional_properties parameter is not supported in Gemini API.defsz.defs parameter is not supported in Gemini API.refz-ref parameter is not supported in Gemini API.any_ofanyOfdefaultdescriptionenumexampleformatitems	max_itemsmaxItems
max_length	maxLengthmax_propertiesmaxPropertiesmaximum	min_itemsminItems
min_length	minLengthmin_propertiesminPropertiesminimumnullablepattern
propertiesproperty_orderingpropertyOrderingrequiredtitletyper.   r#   r%   r%   r&   _Schema_to_mldev   st   
ry   c                 C       i }t | dgd urtd|S )Nfeature_selection_preferencezFfeature_selection_preference parameter is not supported in Gemini API.r!   r/   r#   r%   r%   r&   _ModelSelectionConfig_to_mldev     r}   c                 C   sl   i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg |S )Nmethodz0method parameter is not supported in Gemini API.category	thresholdr.   r#   r%   r%   r&   _SafetySetting_to_mldev  r1   r   c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | dgd urat|dgt | dg t | dgd urtt|dgt | dg t | dgd urt|d	gt | dg |S )
Nbehaviorr^   name
parametersparameters_json_schemaparametersJsonSchemaresponseresponse_json_schemaresponseJsonSchemar    r#   r%   r%   r&   _FunctionDeclaration_to_mldev%  s0   

r   c                 C   T   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg |S N
start_time	startTimeend_timeendTimer    r#   r%   r%   r&   _Interval_to_mldevJ     r   c                 C   4   i }t | dgd urt|dgtt | dg| |S Ntime_range_filtertimeRangeFilter)r!   r"   r   r#   r%   r%   r&   _GoogleSearch_to_mldevX     r   c                 C   T   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg |S Nmodedynamic_thresholddynamicThresholdr    r#   r%   r%   r&    _DynamicRetrievalConfig_to_mldevg     
r   c                 C   r   Ndynamic_retrieval_configdynamicRetrievalConfig)r!   r"   r   r#   r%   r%   r&   _GoogleSearchRetrieval_to_mldevy     r   c                 C      i }|S Nr%   r#   r%   r%   r&   _EnterpriseWebSearch_to_mldev     r   c                 C   rz   )Napi_key_stringz8api_key_string parameter is not supported in Gemini API.r|   r#   r%   r%   r&   _ApiKeyConfig_to_mldev     r   c                 C   s   i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg t | dgd urGt|dgt | dg t | d	gd urZt|d
gt | d	g t | dgd urmt|dgt | dg |S )Napi_key_configz8api_key_config parameter is not supported in Gemini API.	auth_typeauthTypegoogle_service_account_configgoogleServiceAccountConfighttp_basic_auth_confighttpBasicAuthConfigoauth_configoauthConfigoidc_config
oidcConfigr.   r#   r%   r%   r&   _AuthConfig_to_mldev  s,   

r   c                 C   rz   )Nauth_configz5auth_config parameter is not supported in Gemini API.r|   r#   r%   r%   r&   _GoogleMaps_to_mldev  r   r   c                 C   r   r   r%   r#   r%   r%   r&   _UrlContext_to_mldev  r   r   c                    s.  i  t | dgd urt dg fddt | dgD  t | dgd ur(tdt | dgd ur>t dgtt | dg  t | d	gd urTt d
gtt | d	g  t | dgd ur`tdt | dgd urltdt | dgd urt dgtt | dg  t | dgd urt dgt | dg  S )Nfunction_declarationsfunctionDeclarationsc                    rM   r%   )r   rN   rQ   r%   r&   rR     rS   z"_Tool_to_mldev.<locals>.<listcomp>	retrievalz3retrieval parameter is not supported in Gemini API.google_searchgoogleSearchgoogle_search_retrievalgoogleSearchRetrievalenterprise_web_searchz?enterprise_web_search parameter is not supported in Gemini API.google_mapsz5google_maps parameter is not supported in Gemini API.url_context
urlContextcode_executioncodeExecution)r!   r"   r/   r   r   r   rU   r%   rQ   r&   _Tool_to_mldev  sP   

	r   c                 C   r   Nr   allowed_function_namesallowedFunctionNamesr    r#   r%   r%   r&   _FunctionCallingConfig_to_mldev  r   r   c                 C   T   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg |S Nlatitude	longituder    r#   r%   r%   r&   _LatLng_to_mldev  r   r   c                 C   Z   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg |S Nlat_lnglatLnglanguage_codelanguageCode)r!   r"   r   r#   r%   r%   r&   _RetrievalConfig_to_mldev+     r   c                 C   `   i }t | dgd urt|dgtt | dg| t | dgd ur.t|dgtt | dg| |S Nfunction_calling_configfunctionCallingConfigretrieval_configretrievalConfig)r!   r"   r   r   r#   r%   r%   r&   _ToolConfig_to_mldev=  $   r   c                 C   .   i }t | dgd urt|dgt | dg |S N
voice_name	voiceNamer    r#   r%   r%   r&   _PrebuiltVoiceConfig_to_mldevW     r   c                 C   r   Nprebuilt_voice_configprebuiltVoiceConfig)r!   r"   r   r#   r%   r%   r&   _VoiceConfig_to_mldevb  r   r   c                 C   sZ   i }t | dgd urt|dgt | dg t | dgd ur+t|dgtt | dg| |S )Nspeakervoice_configvoiceConfig)r!   r"   r   r#   r%   r%   r&   _SpeakerVoiceConfig_to_mldevs  s   r   c                    <   i  t | dgd urt dg fddt | dgD   S )Nspeaker_voice_configsspeakerVoiceConfigsc                    rM   r%   )r   rN   rQ   r%   r&   rR     rS   z5_MultiSpeakerVoiceConfig_to_mldev.<locals>.<listcomp>r    rU   r%   rQ   r&   !_MultiSpeakerVoiceConfig_to_mldev     

	r   c                 C   s   i }t | dgd urt|dgtt | dg| t | dgd ur.t|dgtt | dg| t | dgd urAt|dgt | dg |S )Nr   r   multi_speaker_voice_configmultiSpeakerVoiceConfigr   r   )r!   r"   r   r   r#   r%   r%   r&   _SpeechConfig_to_mldev  s$   r   c                 C   r   Ninclude_thoughtsincludeThoughtsthinking_budgetthinkingBudgetr    r#   r%   r%   r&   _ThinkingConfig_to_mldev     r   
api_clientc              
      s&  i t |dgd urt|dgttt |dg t |dgd ur.tdgt |dg t |dgd urAtdgt |dg t |dgd urTtdgt |dg t |dgd urgtd	gt |dg t |d
gd urztdgt |d
g t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgtt t |dg t |dgd ur'tdt |dgd ur4tdt |dgd urOt|dgfd d!t |dgD  t |d"gd urot|d"g fd#d!t t |d"gD  t |d$gd urt|d%gt	t |d$g t |d&gd urtd't |d(gd urt|d)gt
 t |d(g t |d*gd urtd+gt |d*g t |d,gd urtd-gt |d,g t |d.gd urtd/gttt |d.g t |d0gd urtd1t |d2gd urtd3gtt |d2g S )4Nsystem_instructionsystemInstructiontemperaturetop_ptopPtop_ktopKcandidate_countcandidateCountmax_output_tokensmaxOutputTokensstop_sequencesstopSequencesresponse_logprobsresponseLogprobslogprobspresence_penaltypresencePenaltyfrequency_penaltyfrequencyPenaltyseedresponse_mime_typeresponseMimeTyperesponse_schemaresponseSchemarouting_configz8routing_config parameter is not supported in Gemini API.model_selection_configz@model_selection_config parameter is not supported in Gemini API.safety_settingssafetySettingsc                    rM   r%   )r   rN   rQ   r%   r&   rR     rS   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>toolsc                       g | ]}t t |qS r%   )r   tt_toolrN   r   r$   r%   r&   rR   &      tool_config
toolConfiglabelsz0labels parameter is not supported in Gemini API.cached_contentcachedContentresponse_modalitiesresponseModalitiesmedia_resolutionmediaResolutionspeech_configspeechConfigaudio_timestampz9audio_timestamp parameter is not supported in Gemini API.thinking_configthinkingConfig)r!   r"   rV   r   	t_contentry   t_schemar/   t_toolsr   t_cached_content_namer   t_speech_configr   r   r   r   r%   r"  r&   _GenerateContentConfig_to_mldev  s   


	

		
r8  c              	         i  t |dgd urt ddgt| t |dg t |dgd ur7t dg fddtt |dgD  t |dgd urNt dgt| t |dg   S )Nmodel_urlcontentsc                    rM   r%   rV   rN   rQ   r%   r&   rR   v  rS   z7_GenerateContentParameters_to_mldev.<locals>.<listcomp>configgenerationConfig)r!   r"   r   t_model
t_contentsr8  r7  r%   rQ   r&   #_GenerateContentParameters_to_mldeve  0   
	rB  c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urJtdt | d	gd urVtd
|S )N	task_type
requests[]taskTyperw   output_dimensionalityoutputDimensionalityr,   z3mime_type parameter is not supported in Gemini API.auto_truncatez7auto_truncate parameter is not supported in Gemini API.r!   r"   r/   r#   r%   r%   r&   _EmbedContentConfig_to_mldev  s(   

rK  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur2t|ddgt| t |dg t |dgd urHt|dgtt |dg| t|ddgt| t |dg |S )Nr:  r;  r<  rE  contentr>  )r!   r"   r   r@  t_contents_for_embedrK  r   r   r   r$   r%   r%   r&    _EmbedContentParameters_to_mldev  s2   rO  c                 C   s4  i }t | dgd urtdt | dgd urtdt | dgd ur.t|ddgt | dg t | dgd urBt|dd	gt | dg t | d
gd urVt|ddgt | d
g t | dgd urbtdt | dgd ur~tt | dg t|ddgt | dg t | dgd urtt | dg t|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|g dt | dg t | dgd urt|g dt | dg t | dgd urtdt | dgd urtd|S )Noutput_gcs_uri8output_gcs_uri parameter is not supported in Gemini API.negative_promptz9negative_prompt parameter is not supported in Gemini API.number_of_imagesr   sampleCountaspect_ratioaspectRatioguidance_scaleguidanceScaler  .seed parameter is not supported in Gemini API.safety_filter_levelsafetySettingperson_generationpersonGenerationinclude_safety_attributesincludeSafetyAttributesinclude_rai_reasonincludeRaiReasonlanguageoutput_mime_typer   outputOptionsr-   output_compression_qualityr   re  compressionQualityadd_watermarkz7add_watermark parameter is not supported in Gemini API.enhance_promptz8enhance_prompt parameter is not supported in Gemini API.)r!   r/   r"   )_SafetyFilterLevel_to_mldev_enum_validate(_PersonGeneration_to_mldev_enum_validater#   r%   r%   r&   _GenerateImagesConfig_to_mldev  s   











rm  c              	   C      i }t |dgd urt|ddgt| t |dg t |dgd ur.t|ddgt |dg t |dgd urDt|dgtt |dg| |S Nr:  r;  promptinstances[0]r>  )r!   r"   r   r@  rm  rN  r%   r%   r&   "_GenerateImagesParameters_to_mldev1  $   rr  c              	   C   ^   i }t |dgd urt|ddgt| t |dg t |dgd ur-t|dgt |dg |S Nr:  r;  r   r>  r!   r"   r   r@  rN  r%   r%   r&   _GetModelParameters_to_mldevM     rw  c              	   C      i }t |dgd urt|ddgt |dg t |dgd ur*t|ddgt |dg t |dgd ur>t|ddgt |dg t |dgd urVt|dd	gt| t |dg |S 
N	page_size_querypageSize
page_token	pageTokenfilter
query_baser;  
models_urlr!   r"   r   t_models_urlrN  r%   r%   r&   _ListModelsConfig_to_mldev`  (   
r  c                 C   6   i }t |dgd urt|dgt| t |dg| |S Nr>  )r!   r"   r  rN  r%   r%   r&   _ListModelsParameters_to_mldev     r  c                 C   z   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S Nr)   displayNamer^   default_checkpoint_iddefaultCheckpointIdr    r#   r%   r%   r&   _UpdateModelConfig_to_mldev     
r  c              	   C   sd   i }t |dgd urt|ddgt| t |dg t |dgd ur0t|dgtt |dg| |S ru  )r!   r"   r   r@  r  rN  r%   r%   r&   _UpdateModelParameters_to_mldev     r  c              	   C   rt  ru  rv  rN  r%   r%   r&   _DeleteModelParameters_to_mldev  rx  r  c                 C   sP   i }t | dgd urtdt | dgd urtdt | dgd ur&td|S )Nr  z<system_instruction parameter is not supported in Gemini API.r  z/tools parameter is not supported in Gemini API.generation_configz;generation_config parameter is not supported in Gemini API.r|   r#   r%   r%   r&   _CountTokensConfig_to_mldev  s   r  c              	         i  t |dgd urt ddgt| t |dg t |dgd ur7t dg fddtt |dgD  t |dgd urMt dgtt |dg   S )Nr:  r;  r<  c                    rM   r%   r=  rN   rQ   r%   r&   rR     rS   z3_CountTokensParameters_to_mldev.<locals>.<listcomp>r>  )r!   r"   r   r@  rA  r  r7  r%   rQ   r&   _CountTokensParameters_to_mldev  ,   
	r  c                 C   sr   i }t | dgd urtdt | dgd ur$t|dgtt | dg t | dgd ur7t|dgt | dg |S )Ngcs_uriz1gcs_uri parameter is not supported in Gemini API.image_bytesbytesBase64Encodedr,   r-   )r!   r/   r"   r   t_bytesr#   r%   r%   r&   _Image_to_mldev	  s   r  c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur-t|ddgtt | dg t | dgd ur@t|dgt | dg |S )Nurivideovideo_bytesencodedVideor,   encodingr!   r"   r   r  r#   r%   r%   r&   _Video_to_mldev  s   r  c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur"tdt | dgd ur.tdt | dgd urBt|dd	gt | dg t | d
gd urNtdt | dgd urbt|ddgt | dg t | dgd urntdt | dgd urt|ddgt | dg t | dgd urtdt | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urtdt | dgd urtd|S )Nnumber_of_videosr   rT  rP  rQ  r   z-fps parameter is not supported in Gemini API.duration_secondsdurationSecondsr  rY  rU  rV  
resolutionz4resolution parameter is not supported in Gemini API.r\  r]  pubsub_topicz6pubsub_topic parameter is not supported in Gemini API.rR  negativePromptrj  enhancePromptgenerate_audioz8generate_audio parameter is not supported in Gemini API.
last_framez4last_frame parameter is not supported in Gemini API.rJ  r#   r%   r%   r&   _GenerateVideosConfig_to_mldev3  sh   





r  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur.t|ddgt |dg t |dgd urEt|ddgtt |dg| t |dgd urQtdt |dgd urgt|dgtt |dg| |S )	Nr:  r;  rp  rq  imager  z/video parameter is not supported in Gemini API.r>  )r!   r"   r   r@  r  r/   r  rN  r%   r%   r&   "_GenerateVideosParameters_to_mldev{  s4   r  c                 C   r   r   r    r#   r%   r%   r&   _VideoMetadata_to_vertex  r(   r  c                 C   z   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S )Nr)   r  r+   r,   r-   r    r#   r%   r%   r&   _Blob_to_vertex  r(   r  c                 C   z   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S )Nr)   r  r2   r3   r,   r-   r    r#   r%   r%   r&   _FileData_to_vertex  r(   r  c                 C   r5   r6   )r!   r"   r  r  r  r#   r%   r%   r&   _Part_to_vertex  rJ   r  c                    rK   )NrL   c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z&_Content_to_vertex.<locals>.<listcomp>rT   r    rU   r%   rQ   r&   _Content_to_vertex  rW   r  c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | dgd urat|dgt | dg t | dgd urtt|dgt | dg t | d	gd urt|d	gt | d	g t | d
gd urt|d
gt | d
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd ur!t|dgt | dg t | dgd ur5t|dgt | dg t | dgd urIt|dgt | dg t | dgd ur]t|dgt | dg t | dgd urqt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | d gd urt|d gt | d g t | d!gd urt|d!gt | d!g t | d"gd urt|d"gt | d"g |S )#NrX   additionalPropertiesrY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r    r#   r%   r%   r&   _Schema_to_vertex)  sx   

r  c                 C   r   )Nr{   featureSelectionPreferencer    r#   r%   r%   r&   _ModelSelectionConfig_to_vertex     
r  c                 C   sz   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S )Nr   r   r   r    r#   r%   r%   r&   _SafetySetting_to_vertex  r(   r  c                 C   s  i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg t | dgd urGt|dgt | dg t | dgd urZt|dgt | dg t | dgd urmt|dgt | dg t | d	gd urt|d
gt | d	g |S )Nr   z1behavior parameter is not supported in Vertex AI.r^   r   r   r   r   r   r   r   r.   r#   r%   r%   r&   _FunctionDeclaration_to_vertex  s0   

r  c                 C   r   r   r    r#   r%   r%   r&   _Interval_to_vertex  r   r  c                 C   r   r   )r!   r"   r  r#   r%   r%   r&   _GoogleSearch_to_vertex  r   r  c                 C   r   r   r    r#   r%   r%   r&   !_DynamicRetrievalConfig_to_vertex  r   r  c                 C   r   r   )r!   r"   r  r#   r%   r%   r&    _GoogleSearchRetrieval_to_vertex  r   r  c                 C   r   r   r%   r#   r%   r%   r&   _EnterpriseWebSearch_to_vertex  r   r  c                 C   r   )Nr   apiKeyStringr    r#   r%   r%   r&   _ApiKeyConfig_to_vertex  r   r  c                 C   s   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd ur>t|dgt | dg t | dgd urQt|dgt | dg t | d	gd urdt|d
gt | d	g t | dgd urwt|dgt | dg |S )Nr   apiKeyConfigr   r   r   r   r   r   r   r   r   r   )r!   r"   r  r#   r%   r%   r&   _AuthConfig_to_vertex  s8   

r  c                 C   r   )Nr   
authConfig)r!   r"   r  r#   r%   r%   r&   _GoogleMaps_to_vertexG  r   r  c                 C   r   r   r%   r#   r%   r%   r&   _UrlContext_to_vertexV  r   r  c                    sd  i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg t | dgd urEt dgtt | dg  t | dgd ur[t d	gtt | dg  t | d
gd urqt dgtt | d
g  t | dgd urt dgtt | dg  t | dgd urt dgtt | dg  t | dgd urt dgt | dg  S )Nr   r   c                    rM   r%   )r  rN   rQ   r%   r&   rR   h  rS   z#_Tool_to_vertex.<locals>.<listcomp>r   r   r   r   r   r   enterpriseWebSearchr   
googleMapsr   r   r   r   )r!   r"   r  r  r  r  r  rU   r%   rQ   r&   _Tool_to_vertex_  sd   

	r  c                 C   r   r   r    r#   r%   r%   r&    _FunctionCallingConfig_to_vertex  r   r  c                 C   r   r   r    r#   r%   r%   r&   _LatLng_to_vertex  r   r  c                 C   r   r   )r!   r"   r  r#   r%   r%   r&   _RetrievalConfig_to_vertex  r   r  c                 C   r   r   )r!   r"   r  r  r#   r%   r%   r&   _ToolConfig_to_vertex  r   r  c                 C   r   r   r    r#   r%   r%   r&   _PrebuiltVoiceConfig_to_vertex  r   r  c                 C   r   r   )r!   r"   r  r#   r%   r%   r&   _VoiceConfig_to_vertex  r   r  c                 C   s8   i }t | dgd urtdt | dgd urtd|S )Nr   z0speaker parameter is not supported in Vertex AI.r   z5voice_config parameter is not supported in Vertex AI.r|   r#   r%   r%   r&   _SpeakerVoiceConfig_to_vertex  s   r  c                 C   rz   )Nr   z>speaker_voice_configs parameter is not supported in Vertex AI.r|   r#   r%   r%   r&   "_MultiSpeakerVoiceConfig_to_vertex  r~   r  c                 C   sr   i }t | dgd urt|dgtt | dg| t | dgd ur$tdt | dgd ur7t|dgt | dg |S )Nr   r   r   zCmulti_speaker_voice_config parameter is not supported in Vertex AI.r   r   )r!   r"   r  r/   r#   r%   r%   r&   _SpeechConfig_to_vertex#  s   r  c                 C   r   r   r    r#   r%   r%   r&   _ThinkingConfig_to_vertex:  r   r  c              
      sd  i t |dgd urt|dgttt |dg t |dgd ur.tdgt |dg t |dgd urAtdgt |dg t |dgd urTtdgt |dg t |dgd urgtd	gt |dg t |d
gd urztdgt |d
g t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgtt t |dg t |dgd ur.tdgt |dg t |dgd urEtdgtt |dg t |dgd ur`t|dgfd d!t |dgD  t |d"gd urt|d"g fd#d!t t |d"gD  t |d$gd urt|d%gt	t |d$g t |d&gd urt|d&gt |d&g t |d'gd urt|d(gt
 t |d'g t |d)gd urtd*gt |d)g t |d+gd urtd,gt |d+g t |d-gd urtd.gttt |d-g t |d/gd urtd0gt |d/g t |d1gd ur0td2gtt |d1g S )3Nr  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  routingConfigr  modelConfigr  r  c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z4_GenerateContentConfig_to_vertex.<locals>.<listcomp>r  c                    r  r%   )r  r   r!  rN   r"  r%   r&   rR     r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  audioTimestampr0  r1  )r!   r"   r  r   r2  r  r3  r  r4  r  r5  r  r6  r  r7  r%   r"  r&    _GenerateContentConfig_to_vertexJ  s  


	

		
r  c              	      r9  )Nr:  r;  r<  c                    rM   r%   r  rN   rQ   r%   r&   rR    	  rS   z8_GenerateContentParameters_to_vertex.<locals>.<listcomp>r>  r?  )r!   r"   r   r@  rA  r  r7  r%   rQ   r&   $_GenerateContentParameters_to_vertex  rC  r  c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|ddgt | dg t | d	gd urft|dd
gt | d	g |S )NrD  instances[]rw   rG  r   rH  r,   r-   rI  autoTruncater    r#   r%   r%   r&   _EmbedContentConfig_to_vertex	  s8   



r  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur2t|ddgt| t |dg t |dgd urHt|dgtt |dg| |S )Nr:  r;  r<  r  rL  r>  )r!   r"   r   r@  rM  r  rN  r%   r%   r&   !_EmbedContentParameters_to_vertex:	  s(   r  c                 C   sf  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|ddgt | d
g t | dgd urzt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|g dt | dg t | dgd urt|g dt | dg t | dgd urt|ddgt | dg t | dgd ur1t|ddgt | dg |S )NrP  r   
storageUrirR  r  rS  rT  rU  rV  rW  rX  r  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  rf  rg  ri  addWatermarkrj  r  r    r#   r%   r%   r&   _GenerateImagesConfig_to_vertexX	     













r  c              	   C   rn  ro  )r!   r"   r   r@  r  rN  r%   r%   r&   #_GenerateImagesParameters_to_vertex	  rs  r  c                 C      i }t | dgd urt|dgt | dg t | dgd ur+t|dgtt | dg t | dgd ur>t|dgt | dg |S )Nr  gcsUrir  r  r,   r-   r  r#   r%   r%   r&   _Image_to_vertex	     r  c                 C   r  )N	mask_modemaskModesegmentation_classesmaskClassesmask_dilationdilationr    r#   r%   r%   r&   _MaskReferenceConfig_to_vertex	  s   r  c                 C   r   )Ncontrol_typecontrolType enable_control_image_computationcomputeControlr    r#   r%   r%   r&   !_ControlReferenceConfig_to_vertex

  r   r  c                 C   r   )Nstyle_descriptionstyleDescriptionr    r#   r%   r%   r&   _StyleReferenceConfig_to_vertex
  r  r  c                 C   r   )Nsubject_typesubjectTypesubject_descriptionsubjectDescriptionr    r#   r%   r%   r&   !_SubjectReferenceConfig_to_vertex+
  r   r  c                 C   s0  i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd ur>t|dgt | dg t | dgd urTt|dgtt | dg| t | d	gd urjt|d
gtt | d	g| t | dgd urt|dgtt | dg| t | dgd urt|dgtt | dg| |S )Nreference_imagereferenceImagereference_idreferenceIdreference_typereferenceTypemask_image_configmaskImageConfigcontrol_image_configcontrolImageConfigstyle_image_configstyleImageConfigsubject_image_configsubjectImageConfig)r!   r"   r  r  r  r  r  r#   r%   r%   r&   _ReferenceImageAPI_to_vertex=
  sX   r  c                 C   sf  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|ddgt | d
g t | dgd urzt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|g dt | dg t | dgd urt|g dt | dg t | dgd urt|ddgt | dg t | dgd ur1t|g dt | dg |S )NrP  r   r  rR  r  rS  rT  rU  rV  rW  rX  r  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  rf  rg  	edit_modeeditMode
base_steps)r   
editConfig	baseStepsr    r#   r%   r%   r&   _EditImageConfig_to_vertexv
  r  r  c              	      s   i  t |dgd urt ddgt| t |dg t |dgd ur.t ddgt |dg t |dgd urIt ddg fddt |dgD  t |d	gd ur_t d	gtt |d	g   S )
Nr:  r;  rp  rq  reference_imagesreferenceImagesc                    rM   r%   )r  rN   rQ   r%   r&   rR   
  rS   z2_EditImageParameters_to_vertex.<locals>.<listcomp>r>  )r!   r"   r   r@  r  r7  r%   rQ   r&   _EditImageParameters_to_vertex
  s0   

	r  c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur*t|g dt | dg t | dgd ur>t|g dt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|dd
gt | d
g |S )Nr`  r   ra  rc  rd  rf  rg  rS  rT  r   r    r#   r%   r%   r&    _UpscaleImageAPIConfig_to_vertex  s8   



r  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur1t|ddgtt |dg| t |dgd urEt|g dt |dg t |dgd ur[t|dgtt |dg| |S )Nr:  r;  r  rq  upscale_factor)r   upscaleConfigupscaleFactorr>  )r!   r"   r   r@  r  r  rN  r%   r%   r&   $_UpscaleImageAPIParameters_to_vertex0  s8   
r  c              	   C   rt  ru  rv  rN  r%   r%   r&   _GetModelParameters_to_vertexW  rx  r  c              	   C   ry  rz  r  rN  r%   r%   r&   _ListModelsConfig_to_vertexj  r  r  c                 C   r  r  )r!   r"   r  rN  r%   r%   r&   _ListModelsParameters_to_vertex  r  r  c                 C   r  r  r    r#   r%   r%   r&   _UpdateModelConfig_to_vertex  r  r   c              	   C   sd   i }t |dgd urt|ddgt| t |dg t |dgd ur0t|dgtt |dg| |S )Nr:  r;  r>  )r!   r"   r   r@  r   rN  r%   r%   r&    _UpdateModelParameters_to_vertex  r  r!  c              	   C   rt  ru  rv  rN  r%   r%   r&    _DeleteModelParameters_to_vertex  rx  r"  c              	      s   i  t | dgd urt|dgttt | dg  t | dgd ur5t|dg fddt | dgD  t | dgd urHt|dgt | dg  S )Nr  r  r  c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z0_CountTokensConfig_to_vertex.<locals>.<listcomp>r  r?  )r!   r"   r  r   r2  rU   r%   rQ   r&   _CountTokensConfig_to_vertex  s0   

	
r#  c              	      r  )Nr:  r;  r<  c                    rM   r%   r  rN   rQ   r%   r&   rR     rS   z4_CountTokensParameters_to_vertex.<locals>.<listcomp>r>  )r!   r"   r   r@  rA  r#  r7  r%   rQ   r&    _CountTokensParameters_to_vertex  r  r$  c              	      s   i  t |dgd urt ddgt| t |dg t |dgd ur7t dg fddtt |dgD  t |dgd urJt dgt |dg  S )Nr:  r;  r<  c                    rM   r%   r  rN   rQ   r%   r&   rR   1  rS   z6_ComputeTokensParameters_to_vertex.<locals>.<listcomp>r>  )r!   r"   r   r@  rA  r7  r%   rQ   r&   "_ComputeTokensParameters_to_vertex   s$   
	r%  c                 C   r  )Nr  r  r  r  r,   r-   r  r#   r%   r%   r&   _Video_to_vertex=  r  r&  c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|ddgt | dg t | d	gd urft|dd	gt | d	g t | d
gd urzt|ddgt | d
g t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd ur
t|ddgtt | dg| |S )Nr  r   rT  rP  r  r   r  r  r  rU  rV  r  r\  r]  r  pubsubTopicrR  r  rj  r  r  generateAudior  rq  	lastFrame)r!   r"   r  r#   r%   r%   r&   _GenerateVideosConfig_to_vertexR  s   









r*  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur.t|ddgt |dg t |dgd urEt|ddgtt |dg| t |dgd ur\t|ddgtt |dg| t |dgd urrt|dgtt |dg| |S )Nr:  r;  rp  rq  r  r  r>  )r!   r"   r   r@  r  r&  r*  rN  r%   r%   r&   #_GenerateVideosParameters_to_vertex  s<   r+  
enum_valuec                 C   "   | t g dv rt|  dd S )N)(FEATURE_SELECTION_PREFERENCE_UNSPECIFIEDPRIORITIZE_QUALITYBALANCEDPRIORITIZE_COST+ enum value is not supported in Gemini API.setr/   r,  r%   r%   r&   2_FeatureSelectionPreference_to_mldev_enum_validate  s
   r6  c                 C       | t dgv rt|  dd S )N
BLOCK_NONEr2  r3  r5  r%   r%   r&   rk       rk  c                 C   r7  )N	ALLOW_ALLr2  r3  r5  r%   r%   r&   rl    r9  rl  c                 C   r-  )N)UNSPECIFIEDBLOCKINGNON_BLOCKINGz* enum value is not supported in Vertex AI.r3  r5  r%   r%   r&   !_Behavior_to_vertex_enum_validate  s   r>  c                 C   r   Nr   r   r   r   r   r    r#   r%   r%   r&   _VideoMetadata_from_mldev  r(   r@  c                 C   r   )Nr+   r-   r,   r    r#   r%   r%   r&   _Blob_from_mldev     rA  c                 C   r   )Nr3   r2   r-   r,   r    r#   r%   r%   r&   _FileData_from_mldev  rB  rC  c                 C   r5   Nr8   r7   r9   r;   r:   r=   r<   r?   r>   rA   r@   rC   rB   rE   rD   rG   rF   rH   )r!   r"   r@  rA  rC  r#   r%   r%   r&   _Part_from_mldev"  rJ   rE  c                    rK   )NrL   c                    rM   r%   )rE  rN   rQ   r%   r&   rR   k  rS   z'_Content_from_mldev.<locals>.<listcomp>rT   r    rU   r%   rQ   r&   _Content_from_mldevb  rW   rF  c                 C   r   )NcitationSources	citationsr    r#   r%   r%   r&   _CitationMetadata_from_mldevw  r   rI  c                 C   r   NretrievedUrlretrieved_urlurlRetrievalStatusurl_retrieval_statusr    r#   r%   r%   r&   _UrlMetadata_from_mldev  r   rO  c                    r   )NurlMetadataurl_metadatac                    rM   r%   )rO  rN   rQ   r%   r&   rR     rS   z2_UrlContextMetadata_from_mldev.<locals>.<listcomp>r    rU   r%   rQ   r&   _UrlContextMetadata_from_mldev  r   rR  c                 C     i }t | dgd urt|dgtt | dg| t | dgd ur.t|dgtt | dg| t | dgd urAt|dgt | dg t | dgd urTt|dgt | dg t | dgd urjt|d	gtt | dg| t | d
gd ur}t|dgt | d
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg |S )NrL  citationMetadatacitation_metadata
tokenCounttoken_countfinishReasonfinish_reasonurlContextMetadataurl_context_metadataavgLogprobsavg_logprobsgroundingMetadatagrounding_metadataindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratings)r!   r"   rF  rI  rR  r#   r%   r%   r&   _Candidate_from_mldev  T   
re  c                    s   i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg t | dgd urBt dgt | dg t | dgd urUt d	gt | dg  S )
N
candidatesc                    rM   r%   )re  rN   rQ   r%   r&   rR     rS   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>modelVersionmodel_versionpromptFeedbackprompt_feedbackusageMetadatausage_metadatar    rU   r%   rQ   r&   #_GenerateContentResponse_from_mldev  s    

	rn  c                 C   r   r   r%   r#   r%   r%   r&   &_ContentEmbeddingStatistics_from_mldev  r   ro  c                 C   .   i }t | dgd urt|dgt | dg |S )Nvaluesr    r#   r%   r%   r&   _ContentEmbedding_from_mldev  r   rr  c                 C   r   r   r%   r#   r%   r%   r&    _EmbedContentMetadata_from_mldev  r   rs  c                    sh   i  t | dgd urt dg fddt | dgD  t | dgd ur2t dgtt | dg   S )N
embeddingsc                    rM   r%   )rr  rN   rQ   r%   r&   rR   !  rS   z4_EmbedContentResponse_from_mldev.<locals>.<listcomp>metadata)r!   r"   rs  rU   r%   rQ   r&    _EmbedContentResponse_from_mldev  $   

	rv  c                 C   sZ   i }t | dgd urt|dgtt | dg t | dgd ur+t|dgt | dg |S )Nr  r  r-   r,   r  r#   r%   r%   r&   _Image_from_mldev3  s   rx  c                 C      i }t | ddgd urt|dgt | ddg t | ddgd ur,t|dgt | ddg t | dgd ur?t|dgt | dg |S NsafetyAttributes
categoriesscorescontentTypecontent_typer    r#   r%   r%   r&   _SafetyAttributes_from_mldevF     r  c                 C   s   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd urAt|dgtt | dg| |S )N_selfr  raiFilteredReasonrai_filtered_reasonsafety_attributes)r!   r"   rx  r  r#   r%   r%   r&   _GeneratedImage_from_mldev]  s(   
r  c                    h   i  t | dgd urt dg fddt | dgD  t | dgd ur2t dgtt | dg   S )Npredictionsgenerated_imagesc                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z6_GenerateImagesResponse_from_mldev.<locals>.<listcomp>positivePromptSafetyAttributes!positive_prompt_safety_attributes)r!   r"   r  rU   r%   rQ   r&   "_GenerateImagesResponse_from_mldevz  rw  r  c                 C   r   r   r%   r#   r%   r%   r&   _Endpoint_from_mldev  r   r  c                 C   r  )N	baseModel
base_model
createTimecreate_time
updateTimeupdate_timer    r#   r%   r%   r&   _TunedModelInfo_from_mldev  r(   r  c                 C   r   r   r%   r#   r%   r%   r&   _Checkpoint_from_mldev  r   r  c                 C   s>  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | dgd urdt|dgtt | dg| t | dgd urwt|d	gt | dg t | d
gd urt|dgt | d
g t | dgd urt|dgt | dg |S )Nr   r  r)   r^   versionr  tuned_model_infoinputTokenLimitinput_token_limitoutputTokenLimitoutput_token_limitsupportedGenerationMethodssupported_actions)r!   r"   r  r#   r%   r%   r&   _Model_from_mldev  s@   

r  c              	      h   i  t | dgd urt dgt | dg t | dgd ur2t dg fddtt | dgD   S )NnextPageTokennext_page_tokenr  modelsc                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z2_ListModelsResponse_from_mldev.<locals>.<listcomp>r!   r"   r   t_extract_modelsrU   r%   rQ   r&   _ListModelsResponse_from_mldev     
	r  c                 C   r   r   r%   r#   r%   r%   r&   _DeleteModelResponse_from_mldev  r   r  c                 C   r   )NtotalTokenstotal_tokenscachedContentTokenCountcached_content_token_countr    r#   r%   r%   r&   _CountTokensResponse_from_mldev  r   r  c              	   C   s   i }t | ddgd urt|dgt | ddg t | ddgd ur/t|dgtt | ddg t | dgd urBt|dgt | dg |S )Nr  r  r  r  r  r,   r  r#   r%   r%   r&   _Video_from_mldev  s   r  c                 C   r   Nr  r  )r!   r"   r  r#   r%   r%   r&   _GeneratedVideo_from_mldev+  r   r  c                       i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg t | dgd urBt dgt | dg  S )	NgeneratedSamplesgenerated_videosc                    rM   r%   )r  rN   rQ   r%   r&   rR   C  rS   z6_GenerateVideosResponse_from_mldev.<locals>.<listcomp>raiMediaFilteredCountrai_media_filtered_countraiMediaFilteredReasonsrai_media_filtered_reasonsr    rU   r%   rQ   r&   "_GenerateVideosResponse_from_mldev:  ,   

	

r  c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | ddgd urft|dgtt | ddg| t | ddgd ur~t|dgtt | ddg| |S )Nr   ru  doneerrorr   generateVideoResponseresult)r!   r"   r  r#   r%   r%   r&   #_GenerateVideosOperation_from_mldevZ  s4   r  c                 C   r   r?  r    r#   r%   r%   r&   _VideoMetadata_from_vertex  r(   r  c                 C   r  )Nr  r)   r+   r-   r,   r    r#   r%   r%   r&   _Blob_from_vertex  r(   r  c                 C   r  )Nr  r)   r3   r2   r-   r,   r    r#   r%   r%   r&   _FileData_from_vertex  r(   r  c                 C   r5   rD  )r!   r"   r  r  r  r#   r%   r%   r&   _Part_from_vertex  rJ   r  c                    rK   )NrL   c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z(_Content_from_vertex.<locals>.<listcomp>rT   r    rU   r%   rQ   r&   _Content_from_vertex  rW   r  c                 C   rp  )NrH  r    r#   r%   r%   r&   _CitationMetadata_from_vertex  r   r  c                 C   r   rJ  r    r#   r%   r%   r&   _UrlMetadata_from_vertex  r   r  c                    r   )NrP  rQ  c                    rM   r%   )r  rN   rQ   r%   r&   rR   .  rS   z3_UrlContextMetadata_from_vertex.<locals>.<listcomp>r    rU   r%   rQ   r&   _UrlContextMetadata_from_vertex%  r   r  c                 C   rS  )NrL  rT  rU  finishMessagefinish_messagerX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  )r!   r"   r  r  r  r#   r%   r%   r&   _Candidate_from_vertex7  rf  r  c                    s   i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg t | dgd urBt dgt | dg t | dgd urUt d	gt | dg t | d
gd urht dgt | d
g t | dgd ur{t dgt | dg  S )Nrg  c                    rM   r%   )r  rN   rQ   r%   r&   rR   z  rS   z8_GenerateContentResponse_from_vertex.<locals>.<listcomp>r  r  
responseIdresponse_idrh  ri  rj  rk  rl  rm  r    rU   r%   rQ   r&   $_GenerateContentResponse_from_vertexq  s(   

	r  c                 C   r   )N	truncatedrW  r    r#   r%   r%   r&   '_ContentEmbeddingStatistics_from_vertex  r   r  c                 C   sZ   i }t | dgd urt|dgt | dg t | dgd ur+t|dgtt | dg| |S )Nrq  
statistics)r!   r"   r  r#   r%   r%   r&   _ContentEmbedding_from_vertex  s   r  c                 C   r   )NbillableCharacterCountbillable_character_countr    r#   r%   r%   r&   !_EmbedContentMetadata_from_vertex  r  r  c                    sl   i  t | ddgd urt dg fddt | ddgD  t | dgd ur4t dgtt | dg   S )Nzpredictions[]rt  c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z5_EmbedContentResponse_from_vertex.<locals>.<listcomp>ru  )r!   r"   r  rU   r%   rQ   r&   !_EmbedContentResponse_from_vertex  s$   
	r  c                 C   r  )Nr  r  r  r  r-   r,   r  r#   r%   r%   r&   _Image_from_vertex  r  r  c                 C   ry  rz  r    r#   r%   r%   r&   _SafetyAttributes_from_vertex  r  r  c                 C   s   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd urAt|dgtt | dg| t | dgd urTt|dgt | dg |S )Nr  r  r  r  r  rp  enhanced_prompt)r!   r"   r  r  r#   r%   r%   r&   _GeneratedImage_from_vertex
  s,   
r  c                    r  )Nr  r  c                    rM   r%   r  rN   rQ   r%   r&   rR   3  rS   z7_GenerateImagesResponse_from_vertex.<locals>.<listcomp>r  r  )r!   r"   r  rU   r%   rQ   r&   #_GenerateImagesResponse_from_vertex*  rw  r  c                    r   )Nr  r  c                    rM   r%   r  rN   rQ   r%   r&   rR   N  rS   z2_EditImageResponse_from_vertex.<locals>.<listcomp>r    rU   r%   rQ   r&   _EditImageResponse_from_vertexE  r   r  c                    r   )Nr  r  c                    rM   r%   r  rN   rQ   r%   r&   rR   `  rS   z5_UpscaleImageResponse_from_vertex.<locals>.<listcomp>r    rU   r%   rQ   r&   !_UpscaleImageResponse_from_vertexW  r   r  c                 C   r   )Nendpointr   deployedModelIddeployed_model_idr    r#   r%   r%   r&   _Endpoint_from_vertexi  s   r  c                 C   s~   i }t | ddgd urt|dgt | ddg t | dgd ur*t|dgt | dg t | dgd ur=t|dgt | dg |S )Nr&  z&google-vertex-llm-tuning-base-model-idr  r  r  r  r  r    r#   r%   r%   r&   _TunedModelInfo_from_vertexy  s   r  c                 C   sz   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg |S )NcheckpointIdcheckpoint_idepochstepr    r#   r%   r%   r&   _Checkpoint_from_vertex  r(   r  c                    s  i  t | dgd urt dgt | dg t | dgd ur(t dgt | dg t | dgd ur;t dgt | dg t | dgd urNt dgt | dg t | dgd urht dg fd	d
t | dgD  t | dgd ur{t dgt | dg t | dgd urt dgtt | dg  t | dgd urt dgt | dg t | dgd urt dg fdd
t | dgD   S )Nr   r  r)   r^   	versionIdr  deployedModels	endpointsc                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z&_Model_from_vertex.<locals>.<listcomp>r&  r  r  r  r  checkpointsc                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   )r!   r"   r  rU   r%   rQ   r&   _Model_from_vertex  sP   

	


	r  c              	      r  )Nr  r  r  r  c                    rM   r%   )r  rN   rQ   r%   r&   rR     rS   z3_ListModelsResponse_from_vertex.<locals>.<listcomp>r  rU   r%   rQ   r&   _ListModelsResponse_from_vertex  r  r  c                 C   r   r   r%   r#   r%   r%   r&    _DeleteModelResponse_from_vertex  r   r  c                 C   r   )Nr  r  r    r#   r%   r%   r&    _CountTokensResponse_from_vertex  r   r  c                 C   r   )N
tokensInfotokens_infor    r#   r%   r%   r&   "_ComputeTokensResponse_from_vertex  r   r  c                 C   r  )Nr  r  r  r  r-   r,   r  r#   r%   r%   r&   _Video_from_vertex  r  r  c                 C   r   r  )r!   r"   r  r#   r%   r%   r&   _GeneratedVideo_from_vertex$  r   r  c                    r  )	Nvideosr  c                    rM   r%   )r  rN   rQ   r%   r&   rR   <  rS   z7_GenerateVideosResponse_from_vertex.<locals>.<listcomp>r  r  r  r  r    rU   r%   rQ   r&   #_GenerateVideosResponse_from_vertex3  r  r  c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg t | dgd urdt|dgtt | dg| t | dgd urzt|dgtt | dg| |S )Nr   ru  r  r  r   r  )r!   r"   r  r#   r%   r%   r&   $_GenerateVideosOperation_from_vertexS  s4   r  c                   @   s  e Zd Zdddedeejejf deej	 dej
fddZdddedeejejf deej	 deej
 fd	d
Zdddedeejejf deej dejfddZdddededeej dejfddZdddededeej deej dejf
ddZdddedejdedeej dejf
ddZdddedeej dejfddZdddeej  dej!fddZ"dddedeej# dejfddZ$dddedeej% dej&fddZ'dddedeejejf deej( dej)fdd Z*dddedeejejf deej+ dej,fd!d"Z-ddddd#dedee deej d$eej. deej/ dej0fd%d&Z1dddedeejejf deej	 dej
fd'd(Z2dddedeejejf deej	 deej
 fd)d*Z3dddededeej dejfd+d,Z4dddededeej deej dejf
d-d.Z5dddedejdedeej6 dejf
d/d0Z7dddeej  de8ej fd1d2ZdS )3ModelsNr>  r:  r<  r>  r   c                C   s6  t j|||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd  d }	|j
d ur^|j
jd ur^|j
j}	t|}t|}| jd|||	}
|
jsvdnt|
j}| jjrt|}nt|}t jj|| d	}| j| |S 
Nr:  r<  r>  r;  z{model}:generateContentr|  ?r>  post r   kwargs)r   _GenerateContentParameters_api_clientvertexair  get
format_maprB  r   popr>  http_optionsr   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsr  rn  GenerateContentResponse_from_response
model_dump_verify_responseselfr:  r<  r>  parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  r   response_dictreturn_valuer%   r%   r&   _generate_content{  sT   






zModels._generate_contentc                c   sJ   t j|||d}| jjr#t| j|}|d}|r d|}nd}nt| j|}|d}|r6d|}nd}|d}|rH| dt| }|	dd  d }	|j
d ur_|j
jd ur_|j
j}	t|}t|}|d urwt|dd rwtd| jd	|||	D ]"}
| jjrt|
}
nt|
}
t jj|
| d
}| j| |V  qd S )Nr  r;  %{model}:streamGenerateContent?alt=sser|  r  r>  should_return_http_responseFAccessing the raw HTTP response is not supported in streaming methods.r  r  )r   r  r   r  r  r  r  rB  r   r  r>  r  r   r  r  getattrr/   request_streamedr  rn  r  r  r  r  )r  r:  r<  r>  r  r  r  r  r  r  r  r  r%   r%   r&   _generate_content_stream  sj   







zModels._generate_content_streamc                C   s6  t j|||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}	|j
dur^|j
jdur^|j
j}	t|}t|}| jd	|||	}
|
jsvd
nt|
j}| jjrt|}nt|}t jj|| d}| j| |S )aA  Calculates embeddings for the given contents. Only text is supported.

    Args:
      model (str): The model to use.
      contents (list[Content]): The contents to embed.
      config (EmbedContentConfig): Optional configuration for embeddings.

    Usage:

    .. code-block:: python

      embeddings = client.models.embed_content(
          model= 'text-embedding-004',
          contents=[
              'What is your name?',
              'What is your favorite color?',
          ],
          config={
              'output_dimensionality': 64
          },
      )
    r  r;  {model}:predict{model}:batchEmbedContentsr|  r  r>  Nr  r  r  )r   _EmbedContentParametersr   r  r  r  r  rO  r   r  r>  r  r   r  r  r  r	  r
  r  r  rv  EmbedContentResponser  r  r  r  r%   r%   r&   embed_content  sT   






zModels.embed_contentrp  c                C   6  t j|||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}	|j
dur^|j
jdur^|j
j}	t|}t|}| jd|||	}
|
jsvd	nt|
j}| jjrt|}nt|}t jj|| d
}| j| |S zGenerates images based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the images to generate.
      config (GenerateImagesConfig): Configuration for generation.
    r:  rp  r>  r;  r   r|  r  r>  Nr  r  r  )r   _GenerateImagesParametersr   r  r  r  r  rr  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  GenerateImagesResponser  r  r  r  r:  rp  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   _generate_imagese  sT   






zModels._generate_imagesr  c                C   
  t j||||d}| jjstdt| j|}|d}|r$d|}nd}|d}	|	r6| dt|	 }|	dd d}
|j
durM|j
jdurM|j
j}
t|}t|}| jd	|||
}|jsed
nt|j}| jjrst|}t jj|| d}| j| |S )L  Edits an image based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the edit to apply to the image.
        reference_images (list[Union[RawReferenceImage, MaskReferenceImage,
        ControlReferenceImage, StyleReferenceImage, SubjectReferenceImage]): The
        reference images for editing.
      config (EditImageConfig): Configuration for editing.

    Usage:

    .. code-block:: python

      from google.genai.types import RawReferenceImage, MaskReferenceImage

      raw_ref_image = RawReferenceImage(
        reference_id=1,
        reference_image=types.Image.from_file(IMAGE_FILE_PATH),
      )

      mask_ref_image = MaskReferenceImage(
        reference_id=2,
        config=types.MaskReferenceConfig(
            mask_mode='MASK_MODE_FOREGROUND',
            mask_dilation=0.06,
        ),
      )
      response = client.models.edit_image(
        model='imagen-3.0-capability-001',
        prompt='man with dog',
        reference_images=[raw_ref_image, mask_ref_image],
        config=types.EditImageConfig(
            edit_mode= "EDIT_MODE_INPAINT_INSERTION",
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog instead of a cat.
    r:  rp  r  r>  6This method is only supported in the Vertex AI client.r;  r   r|  r  r>  Nr  r  r  )r   _EditImageParametersr   r  r/   r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  EditImageResponser  r  r  r  r:  rp  r  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   _edit_image  sH   2




zModels._edit_imager  r  c                C   r,  a  Upscales an image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (_UpscaleImageAPIConfig): Configuration for upscaling.
    r:  r  r  r>  r/  r;  r   r|  r  r>  Nr  r  r  )r   _UpscaleImageAPIParametersr   r  r/   r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  UpscaleImageResponser  r  r  r  r:  r  r  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   _upscale_image  sH   




zModels._upscale_imagec                C   4  t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd  d }|j
d ur]|j
jd ur]|j
j}t|}t|}| jd|||}	|	jsudnt|	j}
| jjrt|
}
nt|
}
t jj|
| d	}| j| |S 
Nr:  r>  r;  {name}r|  r  r>  r  r  r  )r   _GetModelParametersr   r  r  r  r  rw  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  Modelr  r  r  r  r:  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   r  Y  sN   






z
Models.getc                C   s2  t j|d}| jjr t| j|}|d}|rd|}nd}nt| j|}|d}|r3d|}nd}|d}|rE| dt| }|	dd  d }|j
d ur\|j
jd ur\|j
j}t|}t|}| jd|||}|jstdnt|j}	| jjrt|	}	nt|	}	t jj|	| d	}
| j|
 |
S 
Nr  r;  z{models_url}r|  r  r>  r  r  r  )r   _ListModelsParametersr   r  r  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  ListModelsResponser  r  r  r  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   _list  sL   






zModels._listc                C   s4  t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd  d }|j
d ur]|j
jd ur]|j
j}t|}t|}| jd|||}	|	jsud	nt|	j}
| jjrt|
}
nt|
}
t jj|
| d
}| j| |S Nr<  r;  z{model}r=  r|  r  r>  patchr  r  )r   _UpdateModelParametersr   r  r!  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  r?  r  r  r  r@  r%   r%   r&   update  R   






zModels.updatec                C   r:  
Nr<  r;  r=  r|  r  r>  deleter  r  )r   _DeleteModelParametersr   r  r"  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  DeleteModelResponser  r  r  r@  r%   r%   r&   rL    rJ  zModels.deletec                C   r%  )a8  Counts the number of tokens in the given content.

    Multimodal input is supported for Gemini models.

    Args:
      model (str): The model to use for counting tokens.
      contents (list[types.Content]): The content to count tokens for.
      config (CountTokensConfig): The configuration for counting tokens.

    Usage:

    .. code-block:: python

      response = client.models.count_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # total_tokens=5 cached_content_token_count=None
    r  r;  {model}:countTokensr|  r  r>  Nr  r  r  )r   _CountTokensParametersr   r  r$  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  CountTokensResponser  r  r  r  r%   r%   r&   count_tokensR  sT   






zModels.count_tokensc                C   s  t j|||d}| jjstdt| j|}|d}|r#d|}nd}|d}|r5| dt| }|	dd d}	|j
durL|j
jdurL|j
j}	t|}t|}| jd	|||	}
|
jsdd
nt|
j}| jjrrt|}t jj|| d}| j| |S )az  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.

    This method is not supported by the Gemini Developer API.

    Args:
      model (str): The model to use.
      contents (list[shared.Content]): The content to compute tokens for.

    Usage:

    .. code-block:: python

      response = client.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r/  r;  {model}:computeTokensr|  r  r>  Nr  r  r  )r   _ComputeTokensParametersr   r  r/   r%  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  ComputeTokensResponser  r  r  r  r%   r%   r&   compute_tokens  sF   




zModels.compute_tokensrp  r  r  r>  r  c                C   s:  t j|||||d}| jjr$t| j|}|d}|r!d|}	nd}	nt| j|}|d}|r7d|}	nd}	|d}
|
rI|	 dt|
 }	|	dd d}|j
dur`|j
jdur`|j
j}t|}t|}| jd|	||}|jsxd	nt|j}| jjrt|}nt|}t jj|| d
}| j| |S aw  Generates videos based on an input (text, image, or video) and configuration.

    The following use cases are supported:
    1. Text to video generation.
    2a. Image to video generation (additional text prompt is optional).
    2b. Image to video generation with frame interpolation (specify last_frame
    in config).
    3. Video extension (additional text prompt is optional)

    Args:
      model: The model to use.
      prompt: The text prompt for generating the videos. Optional for image to
        video use cases.
      image: The input image for generating the videos. Optional if prompt is
        provided.
      video: The input video for video extension use cases. Optional if prompt
        or image is provided.
      config: Configuration for generation.

    Usage:

      ```
      operation = client.models.generate_videos(
          model="veo-2.0-generate-001",
          prompt="A neon hologram of a cat driving at top speed",
      )
      while not operation.done:
          time.sleep(10)
          operation = client.operations.get(operation)

      operation.result.generated_videos[0].video.uri
      ```
    )r:  rp  r  r  r>  r;  z{model}:predictLongRunningr|  r  r>  Nr  r  r  )r   _GenerateVideosParametersr   r  r+  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  GenerateVideosOperationr  r  r  r  r:  rp  r  r  r>  r  r  r  r  r  r  r   r  r  r%   r%   r&   generate_videos  sX   +







zModels.generate_videosc                C   s  t |}|r|jrt|jrtdt |r"| j|||dS t 	|}t
d| d g }t }d}|dkr|d7 }| j|||d}t
d| d |d8 }|dkr^t
d	 t |}	|	sfnS|sinP|jry|jd jry|jd jjszn?t ||	}
|
sn6|jd j}tjd
|
d}t|}|s|| t|tr|| || || || |dks<t |r|dur||_|S )a9  Makes an API request to generate content using a model.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
      'publishers/meta/models/llama-3.1-405b-instruct-maas'
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash' or 'meta/llama-3.1-405b-instruct-maas'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      response = client.models.generate_content(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      )
      print(response.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      response = client.models.generate_content(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      )
      print(response.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    6MCP sessions are not supported in synchronous methods.r  &AFC is enabled with max remote calls: .r   r	   AFC remote call 	 is done.8Reached max remote calls for automatic function calling.userrT   rL   N)r   parse_config_for_mcp_usager  r   has_mcp_session_usager   UnsupportedFunctionErrorshould_disable_afcr  get_max_remote_calls_afcloggerinfor   r  get_function_maprg  rL  rL   get_function_response_partsContentr   rA  extend
isinstancelistappendshould_append_afc_history"automatic_function_calling_history)r  r:  r<  r>  parsed_configremaining_remote_calls_afcrt  r   ifunction_mapfunc_response_partsfunc_call_contentfunc_response_contentr%   r%   r&   generate_contentc  s   
B












(zModels.generate_contentc                c   s6   t |}|r|jrt|jrtdt |r(| j|||dE dH  dS t 	|}t
d| d g }d}d}d}	|dkr|	d7 }	| j|||d}
t
d|	 d	 |d8 }|dkret
d
 t |}|	dkr|
D ]%}|sx|V  qp|jr|jd jr|jd jjs nt ||}|s|V  qpn,|
D ]}t |r||_|V  q|du s|jr|jd jr|jd jjsdS t ||}|sdS |sdS |dur|jdur|jd j}tjd|d}t|}|s|| t|tr|dur|| || |dur|| || |dksCdS dS )au  Makes an API request to generate content using a model and yields the model's response in chunks.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
      'publishers/meta/models/llama-3.1-405b-instruct-maas'
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash' or 'meta/llama-3.1-405b-instruct-maas'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      ):
        print(chunk.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      ):
        print(chunk.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    r]  r  Nr^  r_  r   r	   r`  ra  rb  rc  rd  )r   re  r  r   rf  r   rg  rh  r  ri  rj  rk  rl  rg  rL  rL   rm  rs  rt  r   rn  r   rA  ro  rp  rq  rr  )r  r:  r<  r>  ru  rv  rt  chunkry  rw  r   rx  rz  r{  r%   r%   r&   generate_content_stream  s   
B















zModels.generate_content_streamc          	      C   sh   | j |||d}d}g }|r|js|S |jD ]}|jr%|jjdkr%|j}q|| qtj||d}|S )ap  Generates images based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the images to generate.
      config (GenerateImagesConfig): Configuration for generation.

    Usage:

    .. code-block:: python

      response = client.models.generate_images(
        model='imagen-3.0-generate-002',
        prompt='Man with a dog',
        config=types.GenerateImagesConfig(
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog.
    r'  NPositive Promptr  r  r+  r  r  r  rr  r   r)  	r  r:  rp  r>  api_responser  r  generated_imager   r%   r%   r&   generate_images  s,   

zModels.generate_imagesc                C   s   | j ||||dS )r-  r.  r3  r  r:  rp  r  r>  r%   r%   r&   
edit_image  s   1zModels.edit_imagec                C   s   t j||||d |pi }t|t jr| }nt|}t j|dd|dd|dd|ddd}d|d	< d
|d< | j||||dS )a  Makes an API request to upscale a provided image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (UpscaleImageConfig): Configuration for upscaling.

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response=client.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(IMAGE_FILE_PATH),
          upscale_factor='x2',
      )
      response.generated_images[0].image.show()
      # Opens my-image.png which is upscaled by a factor of 2.
    r5  r  Nr`  rc  rf  r  r`  rc  rf  upscaler   r	   rS  	r   UpscaleImageParametersrp  UpscaleImageConfigr  dict_UpscaleImageAPIConfigDictr  r9  r  r:  r  r  r>  
config_dct
api_configr%   r%   r&   upscale_image  s4   !




zModels.upscale_imagec                C   sl   t j|djp
t  }|jdu rd|_| jjr*| }|js*|j}|r'|d nd|_t	d| j
| j
|d|S )a  Makes an API request to list the available models.

    If `query_base` is set to True in the config or not set (default), the
    API will return all available base models. If set to False, it will return
    all tuned models.

    Args:
      config (ListModelsConfigOrDict): Configuration for retrieving models.

    Usage:

    .. code-block:: python

      response=client.models.list(config={'page_size': 5})
      print(response.page)
      # [Model(name='projects/./locations/./models/123', display_name='my_model'

      response=client.models.list(config={'page_size': 5, 'query_base': True})
      print(response.page)
      # [Model(name='publishers/google/models/gemini-2.0-flash-exp' ...
    r  NT&filter=labels.tune-type:*labels.tune-type:*r  )r   rB  r>  ListModelsConfigr  r   r  copyr  r   rE  r  r>  filter_valuer%   r%   r&   rq  @  s&   


zModels.list)9__name__
__module____qualname__strr   r   ContentListUnionContentListUnionDictr   GenerateContentConfigOrDictr  r  r   r  EmbedContentConfigOrDictr#  r$  GenerateImagesConfigOrDictr)  r+  rq  _ReferenceImageAPIOrDictEditImageConfigOrDictr1  r3  ImageOrDict_UpscaleImageAPIConfigOrDictr7  r9  GetModelConfigOrDictr?  r  ListModelsConfigOrDictrC  rE  UpdateModelConfigOrDictrI  DeleteModelConfigOrDictrN  rL  CountTokensConfigOrDictrQ  rR  ComputeTokensConfigOrDictrU  rV  VideoOrDictGenerateVideosConfigOrDictrZ  r\  r|  r~  r  r  UpscaleImageConfigOrDictr  r   r%   r%   r%   r&   r  y  s   
H
R
_
Q
k
E
=
?
E
F
]
T
n
 
 *
=
>
Er  c                   @   s  e Zd Zdddedeejejf deej	 dej
fddZdddedeejejf deej	 deeej
  fd	d
Zdddedeejejf deej dejfddZdddededeej dejfddZdddededeej deej dejf
ddZdddedejdedeej dejf
ddZdddedeej dejfddZ dddeej! dej"fddZ#dddedeej$ dejfddZ%dddedeej& dej'fddZ(dddedeejejf deej) dej*fdd Z+dddedeejejf deej, dej-fd!d"Z.ddddd#dedee deej d$eej/ deej0 dej1fd%d&Z2dddedeejejf deej	 dej
fd'd(Z3dddedeejejf deej	 deej
 fd)d*Z4dddededeej deej dejf
d+d,Z5dddeej! de6ej fd-d.Zdddededeej dejfd/d0Z7dddedejdedeej8 dejf
d1d2Z9dS )3AsyncModelsNr  r:  r<  r>  r   c                   s>  t j|||d}| jjr#t| j|}|d}|r d|}nd}nt| j|}|d}|r6d|}nd}|d}|rH| dt| }|	dd  d }	|j
d ur_|j
jd ur_|j
j}	t|}t|}| jd|||	I d H }
|
jszdnt|
j}| jjrt|}nt|}t jj|| d	}| j| |S r  )r   r  r   r  r  r  r  rB  r   r  r>  r  r   r  r  async_requestr	  r
  r  r  rn  r  r  r  r  r  r%   r%   r&   r  u  sV   







zAsyncModels._generate_contentc          
         s  t j|||d jjr#tj }|d}|r d|}nd}ntj }|d}|r6d|}nd}|d}|rH| dt| }|	dd  d } j
d ur_ j
jd ur_ j
j}t|}t|}|d urwt|dd rwtdjd	|||I d H  fd
d}	|	 S )Nr  r;  r  r|  r  r>  r  r  r  c                    sZ   2 z&3 d H W } j jrt| } nt| } tjj|   d}j | |V  q6 d S )Nr  )	r   r  r  rn  r   r  r  r  r  )r  r  r  response_streamr  r%   r&   async_generator  s   
z=AsyncModels._generate_content_stream.<locals>.async_generator)r   r  r   r  r  r  r  rB  r   r  r>  r  r   r  r  r  r/   async_request_streamed)
r  r:  r<  r>  r  r  r  r  r  r  r%   r  r&   r    s\   







z$AsyncModels._generate_content_streamc                   s>  t j|||d}| jjr#t| j|}|d}|r d|}nd}nt| j|}|d}|r6d|}nd}|d}|rH| dt| }|	dd d}	|j
dur_|j
jdur_|j
j}	t|}t|}| jd	|||	I dH }
|
jszd
nt|
j}| jjrt|}nt|}t jj|| d}| j| |S )aK  Calculates embeddings for the given contents. Only text is supported.

    Args:
      model (str): The model to use.
      contents (list[Content]): The contents to embed.
      config (EmbedContentConfig): Optional configuration for embeddings.

    Usage:

    .. code-block:: python

      embeddings = await client.aio.models.embed_content(
          model= 'text-embedding-004',
          contents=[
              'What is your name?',
              'What is your favorite color?',
          ],
          config={
              'output_dimensionality': 64
          },
      )
    r  r;  r   r!  r|  r  r>  Nr  r  r  )r   r"  r   r  r  r  r  rO  r   r  r>  r  r   r  r  r  r	  r
  r  r  rv  r#  r  r  r  r  r%   r%   r&   r$  
  sV   







zAsyncModels.embed_contentrp  c                   >  t j|||d}| jjr#t| j|}|d}|r d|}nd}nt| j|}|d}|r6d|}nd}|d}|rH| dt| }|	dd d}	|j
dur_|j
jdur_|j
j}	t|}t|}| jd|||	I dH }
|
jszd	nt|
j}| jjrt|}nt|}t jj|| d
}| j| |S r&  )r   r(  r   r  r  r  r  rr  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  r)  r  r  r  r*  r%   r%   r&   r+  d  sV   







zAsyncModels._generate_imagesr  c                     t j||||d}| jjstdt| j|}|d}|r%d|}nd}|d}	|	r7| dt|	 }|	dd d}
|j
durN|j
jdurN|j
j}
t|}t|}| jd	|||
I dH }|jsid
nt|j}| jjrwt|}t jj|| d}| j| |S )V  Edits an image based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the edit to apply to the image.
        reference_images (list[Union[RawReferenceImage, MaskReferenceImage,
        ControlReferenceImage, StyleReferenceImage, SubjectReferenceImage]): The
        reference images for editing.
      config (EditImageConfig): Configuration for editing.

    Usage:

    .. code-block:: python

      from google.genai.types import RawReferenceImage, MaskReferenceImage

      raw_ref_image = RawReferenceImage(
        reference_id=1,
        reference_image=types.Image.from_file(IMAGE_FILE_PATH),
      )

      mask_ref_image = MaskReferenceImage(
        reference_id=2,
        config=types.MaskReferenceConfig(
            mask_mode='MASK_MODE_FOREGROUND',
            mask_dilation=0.06,
        ),
      )
      response = await client.aio.models.edit_image(
        model='imagen-3.0-capability-001',
        prompt='man with dog',
        reference_images=[raw_ref_image, mask_ref_image],
        config=types.EditImageConfig(
            edit_mode= "EDIT_MODE_INPAINT_INSERTION",
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog instead of a cat.
    r.  r/  r;  r   r|  r  r>  Nr  r  r  )r   r0  r   r  r/   r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r1  r  r  r  r2  r%   r%   r&   r3    sJ   2





zAsyncModels._edit_imager  r  c                   r  r4  )r   r6  r   r  r/   r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r7  r  r  r  r8  r%   r%   r&   r9    sJ   





zAsyncModels._upscale_imagec                   <  t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd  d }|j
d ur^|j
jd ur^|j
j}t|}t|}| jd|||I d H }	|	jsydnt|	j}
| jjrt|
}
nt|
}
t jj|
| d	}| j| |S r;  )r   r>  r   r  r  r  r  rw  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  r?  r  r  r  r@  r%   r%   r&   r  X  sT   







zAsyncModels.getc                   s:  t j|d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd  d }|j
d ur]|j
jd ur]|j
j}t|}t|}| jd|||I d H }|jsxdnt|j}	| jjrt|	}	nt|	}	t jj|	| d	}
| j|
 |
S rA  )r   rB  r   r  r  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  rC  r  r  r  rD  r%   r%   r&   rE    sR   







zAsyncModels._listc                   s<  t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd  d }|j
d ur^|j
jd ur^|j
j}t|}t|}| jd|||I d H }	|	jsyd	nt|	j}
| jjrt|
}
nt|
}
t jj|
| d
}| j| |S rF  )r   rH  r   r  r!  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  r?  r  r  r  r@  r%   r%   r&   rI    T   







zAsyncModels.updatec                   r  rK  )r   rM  r   r  r"  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  rN  r  r  r  r@  r%   r%   r&   rL    r  zAsyncModels.deletec                   r  )aB  Counts the number of tokens in the given content.

    Multimodal input is supported for Gemini models.

    Args:
      model (str): The model to use for counting tokens.
      contents (list[types.Content]): The content to count tokens for.
      config (CountTokensConfig): The configuration for counting tokens.

    Usage:

    .. code-block:: python

      response = await client.aio.models.count_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # total_tokens=5 cached_content_token_count=None
    r  r;  rO  r|  r  r>  Nr  r  r  )r   rP  r   r  r$  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  rQ  r  r  r  r  r%   r%   r&   rR  U  sV   







zAsyncModels.count_tokensc                   s  t j|||d}| jjstdt| j|}|d}|r$d|}nd}|d}|r6| dt| }|	dd d}	|j
durM|j
jdurM|j
j}	t|}t|}| jd	|||	I dH }
|
jshd
nt|
j}| jjrvt|}t jj|| d}| j| |S )aF  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.


    Args:
      model (str): The model to use.
      contents (list[shared.Content]): The content to compute tokens for.

    Usage:

    .. code-block:: python

      response = await client.aio.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r/  r;  rS  r|  r  r>  Nr  r  r  )r   rT  r   r  r/   r%  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  rU  r  r  r  r  r%   r%   r&   rV    sH   





zAsyncModels.compute_tokensrW  r  c                   sB  t j|||||d}| jjr%t| j|}|d}|r"d|}	nd}	nt| j|}|d}|r8d|}	nd}	|d}
|
rJ|	 dt|
 }	|	dd d}|j
dura|j
jdura|j
j}t|}t|}| jd|	||I dH }|js|d	nt|j}| jjrt|}nt|}t jj|| d
}| j| |S rX  )r   rY  r   r  r+  r  r  r  r   r  r>  r  r   r  r  r  r	  r
  r  r  r  rZ  r  r  r  r[  r%   r%   r&   r\    sZ   +








zAsyncModels.generate_videosc                   st  t |I dH \}}t |r| j|||dI dH S t |}td| d g }t }|dkr| j|||dI dH }|d8 }|dkrKtd t j	||dd	}	|	sVnV|sYnS|j
ri|j
d jri|j
d jjsjnBt ||	I dH }
|
svn6|j
d j}tjd
|
d}t|}|s|| t|tr|| || || || |dks3t |r|dur||_|S )ad  Makes an API request to generate content using a model.

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      response = await client.aio.models.generate_content(
          model='gemini-2.0-flash',
          contents='User input: I like bagels. Answer:',
          config=types.GenerateContentConfig(
              system_instruction=
                [
                  'You are a helpful language translator.',
                  'Your mission is to translate text in English to French.'
                ]
          ),
      )
      print(response.text)
      # J'aime les bagels.
    Nr  r^  r_  r   r	   rb  Tis_caller_method_asyncrc  rd  )r   parse_config_for_mcp_sessionsrh  r  ri  rj  rk  r   r  rl  rg  rL  rL   !get_function_response_parts_asyncrn  r   rA  ro  rp  rq  rr  rs  rt  )r  r:  r<  r>  ru  mcp_to_genai_tool_adaptersrv  rt  r   rx  ry  rz  r{  r%   r%   r&   r|  e  s|   (










+zAsyncModels.generate_contentc                   sh   t |I dH \} t |r'j|||dI dH fdd}||||S  fdd}||||S )a  Makes an API request to generate content using a model and yields the model's response in chunks.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
      'publishers/meta/models/llama-3.1-405b-instruct-maas'
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash' or 'meta/llama-3.1-405b-instruct-maas'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      async for chunk in await client.aio.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      ):
        print(chunk.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      async for chunk in awiat client.aio.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      ):
        print(chunk.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    Nr  c                   s     2 z	3 d H W }|V  q6 d S r   r%   )r:  r<  r>  r}  )r   r%   r&   base_async_generator  s   zAAsyncModels.generate_content_stream.<locals>.base_async_generatorc                   s   t |}td| d g }d }d }d}|dkr|d7 }j| ||dI d H }td| d |d8 }|dkr@td t j| d	d
}	|dkr}|2 z,3 d H W }|	sZ|V  qN|jrj|jd jrj|jd jjsl nt 	||	I d H }|sz|V  qN6 n4|2 z3 d H W }t 
|r||_|V  q6 |d u s|jr|jd jr|jd jjsd S t 	||	I d H }|	sd S |sd S |d u rq|jd j}
tjd|d}t|}|s|| t|tr|
d ur||
 || |
d ur||
 || |dksd S d S )Nr^  r_  r   r	   r  r`  ra  rb  Tr  rc  rd  )r   ri  rj  rk  r  rl  rg  rL  rL   r  rs  rt  r   rn  r   rA  ro  rp  rq  rr  )r:  r<  r>  rv  rt  ry  r}  rw  r   rx  rz  r{  )r  r  r%   r&   r    s   










z<AsyncModels.generate_content_stream.<locals>.async_generator)r   r  rh  r  )r  r:  r<  r>  ru  r  r  r%   )r  r   r  r&   r~    s   D
\z#AsyncModels.generate_content_streamc                   s   | j ||||dI dH S )r  r.  Nr  r  r%   r%   r&   r  }  s   1zAsyncModels.edit_imagec                   st   t j|djpt  }|jdu rd|_| jjr+| }|js+|j}|r(|d nd|_t	d| j
| j
|dI dH |S )a  Makes an API request to list the available models.

    If `query_base` is set to True in the config or not set (default), the
    API will return all available base models. If set to False, it will return
    all tuned models.

    Args:
      config (ListModelsConfigOrDict): Configuration for retrieving models.

    Usage:

    .. code-block:: python

      response = await client.aio.models.list(config={'page_size': 5})
      print(response.page)
      # [Model(name='projects/./locations/./models/123', display_name='my_model'

      response = await client.aio.models.list(
          config={'page_size': 5, 'query_base': True}
        )
      print(response.page)
      # [Model(name='publishers/google/models/gemini-2.0-flash-exp' ...
    r  NTr  r  r  )r   rB  r>  r  r  r   r  r  r  r   rE  r  r%   r%   r&   rq    s(   

zAsyncModels.listc          	         sp   | j |||dI dH }d}g }|r|js|S |jD ]}|jr)|jjdkr)|j}q|| qtj||d}|S )az  Generates images based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the images to generate.
      config (GenerateImagesConfig): Configuration for generation.

    Usage:

    .. code-block:: python

      response = await client.aio.models.generate_images(
        model='imagen-3.0-generate-002',
        prompt='Man with a dog',
        config=types.GenerateImagesConfig(
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog.
    r'  Nr  r  r  r  r%   r%   r&   r    s.   

zAsyncModels.generate_imagesc                   s   t j||||d |pi }t|t jr| }nt|}t j|dd|dd|dd|ddd}d|d	< d
|d< | j||||dI dH S )a  Makes an API request to upscale a provided image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (UpscaleImageConfig): Configuration for upscaling.

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response = await client.aio.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(IMAGE_FILE_PATH),
          upscale_factor='x2',
      )
      response.generated_images[0].image.show()
      # Opens my-image.png which is upscaled by a factor of 2.
    r5  r  Nr`  rc  rf  r  r  r   r	   rS  r  r  r%   r%   r&   r     s6   !




zAsyncModels.upscale_image):r  r  r  r  r   r   r  r  r   r  r  r  r   r   r  r  r#  r$  r  r)  r+  rq  r  r  r1  r3  r  r  r7  r9  r  r?  r  r  rC  rE  r  rI  r  rN  rL  r  rQ  rR  r  rU  rV  r  r  rZ  r\  r|  r~  r  r   r  r  r  r%   r%   r%   r&   r  s  s   
H
W
_
Q
k
E
?
A
E
F
]
S
n
n
 6
;
9
=r  r   )r
  loggingtypingr   r   r   r   r   r   urllib.parser   r  r
   r   r   r   r   r   r   r   r   r   r   r!   r   r"   pagersr   r   	getLoggerrj  r  r  objectr'   r0   r4   rI   rV   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  rB  rK  rO  rm  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r*  r+  r6  rk  rl  r>  r@  rA  rC  rE  rF  rI  rO  rR  re  rn  ro  rr  rs  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  
BaseModuler  r  r%   r%   r%   r&   <module>   s
   








B



[





'













$





9





















 '

%

#

%

i





#











#





K

(







B



]





'













*





C





















 )

%

+

 

q













;

q

&

+

*



#









&

$





_

*







B









<












0





"
(



B




<
#






"






;






"
&            