o
    ZhB                 	   @   s  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mZ e dZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ 	d4dedeeef dee defddZ!	d4dedeeef dee defddZ"	d4dedeeef dee defddZ#	d4dedeeef dee defdd Z$	d4dedeeef dee defd!d"Z%	d4dedeeef dee defd#d$Z&	d4dedeeef dee defd%d&Z'	d4dedeeef dee defd'd(Z(	d4dedeeef dee defd)d*Z)	d4dedeeef dee defd+d,Z*	d4dedeeef dee defd-d.Z+	d4dedeeef dee defd/d0Z,	d4dedeeef dee defd1d2Z-	d4dedeeef dee defd3d4Z.	d4dedeeef dee defd5d6Z/	d4dedeeef dee defd7d8Z0	d4dedeeef dee defd9d:Z1	d4dedeeef dee defd;d<Z2	d4dedeeef dee defd=d>Z3	d4dedeeef dee defd?d@Z4	d4dedeeef dee defdAdBZ5	d4dedeeef dee defdCdDZ6	d4dedeeef dee defdEdFZ7	d4dedeeef dee defdGdHZ8	d4dedeeef dee defdIdJZ9	d4dedeeef dee defdKdLZ:	d4dedeeef dee defdMdNZ;	d4dedeeef dee defdOdPZ<	d4dedeeef dee defdQdRZ=	d4dedeeef dee defdSdTZ>	d4dedeeef dee defdUdVZ?	d4dedeeef dee defdWdXZ@	d4dedeeef dee defdYdZZA	d4dedeeef dee defd[d\ZB	d4dedeeef dee defd]d^ZC	d4dedeeef dee defd_d`ZD	d4dedeeef dee defdadbZE	d4dedeeef dee defdcddZF	d4dedeeef dee defdedfZG	d4dedeeef dee defdgdhZH	d4dedeeef dee defdidjZI	d4dedeeef dee defdkdlZJ	d4dedeeef dee defdmdnZK	d4dedeeef dee defdodpZL	d4dedeeef dee defdqdrZM	d4dedeeef dee defdsdtZN	d4dedeeef dee defdudvZO	d4dedeeef dee defdwdxZP	d4dedeeef dee defdydzZQ	d4dedeeef dee defd{d|ZR	d4dedeeef dee defd}d~ZS	d4dedeeef dee defddZT	d4dedeeef dee defddZU	d4dedeeef dee defddZV	d4dedeeef dee defddZW	d4dedeeef dee defddZX	d4dedeeef dee defddZY	d4dedeeef dee defddZZ	d4dedeeef dee defddZ[	d4dedeeef dee defddZ\	d4dedeeef dee defddZ]	d4dedeeef dee defddZ^	d4dedeeef dee defddZ_	d4dedeeef dee defddZ`	d4dedeeef dee defddZa	d4dedeeef dee defddZb	d4dedeeef dee defddZc	d4dedeeef dee defddZd	d4dedeeef dee defddZe	d4dedeeef dee defddZf	d4dedeeef dee defddZg	d4dedeeef dee defddZh	d4dedeeef dee defddZi	d4dedeeef dee defddZj	d4dedeeef dee defddZk	d4dedeeef dee defddZl	d4dedeeef dee defddZm	d4dedeeef dee defddZn	d4dedeeef dee defddZo	d4dedeeef dee defddZp	d4dedeeef dee defddZqdefddZrdefddZsdefddZtdefddÄZudefddńZvdefddǄZw	d4dedeeef dee defddɄZx	d4dedeeef dee defdd˄Zy	d4dedeeef dee defdd̈́Zz	d4dedeeef dee defddτZ{	d4dedeeef dee defddфZ|	d4dedeeef dee defddӄZ}	d4dedeeef dee defddՄZ~	d4dedeeef dee defddׄZ	d4dedeeef dee defddلZ	d4dedeeef dee defddۄZ	d4dedeeef dee defdd݄Z	d4dedeeef dee defdd߄Z	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defd dZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defdd	Z	d4dedeeef dee defd
dZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defddZ	d4dedeeef dee defd d!Z	d4dedeeef dee defd"d#Z	d4dedeeef dee defd$d%Z	d4dedeeef dee defd&d'Z	d4dedeeef dee defd(d)Z	d4dedeeef dee defd*d+Z	d4dedeeef dee defd,d-Z	d4dedeeef dee defd.d/ZG d0d1 d1ejZG d2d3 d3ejZdS (5      N)AnyAsyncIterator	AwaitableIteratorOptionalUnion)	urlencode   )_api_module)_common)_extra_utils)_transformers)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.models
api_clientfrom_objectparent_objectreturnc                 C   sP  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 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_metadataz8video_metadata parameter is not supported in Gemini API.thoughtcode_execution_resultcodeExecutionResultexecutable_codeexecutableCode	file_datafileDatafunction_callfunctionCallfunction_responsefunctionResponseinline_data
inlineDatatextgetv
ValueErrorsetvr   r   r   	to_object r-   J/var/www/html/lang_env/lib/python3.10/site-packages/google/genai/models.py_Part_to_mldev"   s8   

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 |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 |S )Nr   videoMetadatar   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r(   r*   r+   r-   r-   r.   _Part_to_vertexN   8   

r3   c                    d   i t |dgd urtdg fddt |dgD  t |dgd ur0tdgt |dg S )Npartsc                       g | ]}t  |qS r-   )r/   .0itemr   r,   r-   r.   
<listcomp>       
z%_Content_to_mldev.<locals>.<listcomp>roler2   r   r   r   r-   r;   r.   _Content_to_mldevz      
	r@   c                    r5   )Nr6   c                    r7   r-   )r3   r8   r;   r-   r.   r<      r=   z&_Content_to_vertex.<locals>.<listcomp>r>   r2   r?   r-   r;   r.   _Content_to_vertex   rA   rB   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r2tdt |d	gd ur>td
t |dgd urJtdt |dgd urVtdt |dgd urbtdt |dgd urut|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r6t|dg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rrt|d"gt |d"g |S )#Nexamplez1example parameter is not supported in Gemini API.patternz1pattern parameter is not supported in Gemini API.defaultz1default parameter is not supported in Gemini API.
max_lengthz4max_length parameter is not supported in Gemini API.titlez/title parameter is not supported in Gemini API.
min_lengthz4min_length parameter is not supported in Gemini API.min_propertiesz8min_properties parameter is not supported in Gemini API.max_propertiesz8max_properties parameter is not supported in Gemini API.any_ofanyOfdescriptionenumformatitems	max_itemsmaxItemsmaximum	min_itemsminItemsminimumnullable
propertiesproperty_orderingpropertyOrderingrequiredtyper'   r+   r-   r-   r.   _Schema_to_mldev   sd   
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 |S )NrC   rD   rE   rF   Z	maxLengthrG   rH   Z	minLengthrI   ZminPropertiesrJ   ZmaxPropertiesrK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r2   r+   r-   r-   r.   _Schema_to_vertex   sd   
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_mldevD  s   rb   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`   ra   r2   r+   r-   r-   r.   _SafetySetting_to_vertexV     rc   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 |S )Nresponsez2response parameter is not supported in Gemini API.rM   name
parametersr'   r+   r-   r-   r.   _FunctionDeclaration_to_mldevh  s   rh   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rRt|dgt |dg |S )Nre   rM   rf   rg   )r(   r*   r^   r+   r-   r-   r.   _FunctionDeclaration_to_vertex}  s    ri   c                 C      i }|S Nr-   r+   r-   r-   r.   _GoogleSearch_to_mldev     rl   c                 C   rj   rk   r-   r+   r-   r-   r.   _GoogleSearch_to_vertex  rm   rn   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modeZdynamic_thresholdZdynamicThresholdr2   r+   r-   r-   r.    _DynamicRetrievalConfig_to_mldev     
rr   c                 C   ro   rp   r2   r+   r-   r-   r.   !_DynamicRetrievalConfig_to_vertex  rs   rt   c                 C   6   i }t |dgd urt|dgt| t |dg| |S NZdynamic_retrieval_configZdynamicRetrievalConfig)r(   r*   rr   r+   r-   r-   r.   _GoogleSearchRetrieval_to_mldev     

rw   c                 C   ru   rv   )r(   r*   rt   r+   r-   r-   r.    _GoogleSearchRetrieval_to_vertex  rx   ry   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rWtd
gt t |d	g t |dgd urjtdgt |dg S )Nfunction_declarationsfunctionDeclarationsc                    r7   r-   )rh   r8   r;   r-   r.   r<     r=   z"_Tool_to_mldev.<locals>.<listcomp>	retrievalz3retrieval parameter is not supported in Gemini API.google_searchgoogleSearchgoogle_search_retrievalgoogleSearchRetrievalcode_executioncodeExecution)r(   r*   r)   rl   rw   r?   r-   r;   r.   _Tool_to_mldev  s@   
	

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r0tdgt |dg t |dgd urGt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 |d
g S )Nrz   r{   c                    r7   r-   )ri   r8   r;   r-   r.   r<   1  r=   z#_Tool_to_vertex.<locals>.<listcomp>r|   r}   r~   r   r   r   r   )r(   r*   rn   ry   r?   r-   r;   r.   _Tool_to_vertex'  s@   
	

r   c                 C   ro   Nrq   Zallowed_function_namesZallowedFunctionNamesr2   r+   r-   r-   r.   _FunctionCallingConfig_to_mldevT  rs   r   c                 C   ro   r   r2   r+   r-   r-   r.    _FunctionCallingConfig_to_vertexg  rs   r   c                 C   ru   NZfunction_calling_configZfunctionCallingConfig)r(   r*   r   r+   r-   r-   r.   _ToolConfig_to_mldevz  rx   r   c                 C   ru   r   )r(   r*   r   r+   r-   r-   r.   _ToolConfig_to_vertex  rx   r   c                 C   .   i }t |dgd urt|dgt |dg |S NZ
voice_nameZ	voiceNamer2   r+   r-   r-   r.   _PrebuiltVoiceConfig_to_mldev     r   c                 C   r   r   r2   r+   r-   r-   r.   _PrebuiltVoiceConfig_to_vertex  r   r   c                 C   ru   NZprebuilt_voice_configZprebuiltVoiceConfig)r(   r*   r   r+   r-   r-   r.   _VoiceConfig_to_mldev     r   c                 C   ru   r   )r(   r*   r   r+   r-   r-   r.   _VoiceConfig_to_vertex  r   r   c                 C   ru   NZvoice_configZvoiceConfig)r(   r*   r   r+   r-   r-   r.   _SpeechConfig_to_mldev  r   r   c                 C   ru   r   )r(   r*   r   r+   r-   r-   r.   _SpeechConfig_to_vertex  r   r   c                 C   r   NZinclude_thoughtsZincludeThoughtsr2   r+   r-   r-   r.   _ThinkingConfig_to_mldev     r   c                 C   r   r   r2   r+   r-   r-   r.   _ThinkingConfig_to_vertex  r   r   c                    s  i t |dgd urt|dgt t t |dg t |dgd ur0tdgt |dg t |dgd urCtdgt |dg t |dgd urVt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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 t t |dg t |dgd ur+tdt |dgd urGt|dg fddt |dgD  t |d gd urgt|d g fd!dt t |d gD  t |d"gd urt|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 |d.gd urtd/t |d0gd urtd1gt t |d0g S )2N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.safety_settingssafetySettingsc                    r7   r-   )rb   r8   r;   r-   r.   r<   v  r=   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>toolsc                        g | ]}t  t |qS r-   )r   tt_toolr8   r;   r-   r.   r<         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*   r@   r   	t_contentr]   t_schemar)   t_toolsr   t_cached_content_namer   t_speech_configr   r?   r-   r;   r.   _GenerateContentConfig_to_mldev  s  





		

r   c                    sH  i t |dgd urt|dgt t t |dg t |dgd ur0tdgt |dg t |dgd urCtdgt |dg t |dgd urVt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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 t t |dg t |dgd ur2tdgt |dg t |dgd urNt|dg fddt |dgD  t |d gd urnt|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rtd,gt
 t t |d+g t |d-gd ur
td.gt |d-g t |d/gd ur"td0gt t |d/g S )1Nr   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   ZroutingConfigr   r   c                    r7   r-   )rc   r8   r;   r-   r.   r<     r=   z4_GenerateContentConfig_to_vertex.<locals>.<listcomp>r   c                    r   r-   )r   r   r   r8   r;   r-   r.   r<   %  r   r   r   r   r   r   r   r   r   r   r   r   r   ZaudioTimestampr   r   )r(   r*   rB   r   r   r^   r   r   r   r   r   r   r   r?   r-   r;   r.    _GenerateContentConfig_to_vertex  s   





		

r   c              
         i t |dgd urtddgt t |dg t |dgd ur9tdg fddt t |dgD  t |dgd urPtdgt t |dg S )Nmodel_urlcontentsc                    r7   r-   r@   r8   r;   r-   r.   r<   w  r=   z7_GenerateContentParameters_to_mldev.<locals>.<listcomp>configgenerationConfig)r(   r*   r   t_model
t_contentsr   r?   r-   r;   r.   #_GenerateContentParameters_to_mldevf  4   r   c              
      r   )Nr   r   r   c                    r7   r-   rB   r8   r;   r-   r.   r<     r=   z8_GenerateContentParameters_to_vertex.<locals>.<listcomp>r   r   )r(   r*   r   r   r   r   r?   r-   r;   r.   $_GenerateContentParameters_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rJtdt |d	gd urVtd
|S )N	task_type
requests[]ZtaskTyperG   output_dimensionalityoutputDimensionality	mime_typez3mime_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(   

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 )Nr   instances[]rG   r   rg   r   r   mimeTyper   ZautoTruncater2   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rIt|dgt| t |dg| t|ddgt| t |dg |S )Nr   r   r   r   contentr   )r(   r*   r   r   t_contents_for_embedr   r+   r-   r-   r.    _EmbedContentParameters_to_mldev  s6   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rIt|dgt| t |dg| |S )Nr   r   r   r   r   r   )r(   r*   r   r   r   r   r+   r-   r-   r.   !_EmbedContentParameters_to_vertex  s,   r   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_prompt9negative_prompt parameter is not supported in Gemini API.number_of_imagesrg   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rg   outputOptionsr   output_compression_qualityrg   r  ZcompressionQualityadd_watermarkz7add_watermark parameter is not supported in Gemini API.enhance_prompt8enhance_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   











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 )Nr   rg   
storageUrir   negativePromptr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  ZaddWatermarkr  enhancePromptr2   r+   r-   r-   r.   _GenerateImagesConfig_to_vertex     













r  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rEt|dgt| t |dg| |S Nr   r   promptinstances[0]r   )r(   r*   r   r   r  r+   r-   r-   r.   "_GenerateImagesParameters_to_mldev  $   r  c              	   C   r  r  )r(   r*   r   r   r  r+   r-   r-   r.   #_GenerateImagesParameters_to_vertex1  r  r  c              	   C   st   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r8t|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_mldevM  s   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+   r-   r-   r.   _Image_to_vertexc     r   c                 C   P   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 )N	mask_modez3mask_mode parameter is not supported in Gemini API.segmentation_classesz>segmentation_classes parameter is not supported in Gemini API.mask_dilationz7mask_dilation parameter is not supported in Gemini API.r(   r)   r+   r-   r-   r.   _MaskReferenceConfig_to_mldevy  s   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#  ZmaskModer$  ZmaskClassesr%  Zdilationr2   r+   r-   r-   r.   _MaskReferenceConfig_to_vertex  s   r)  c                 C   8   i }t |dgd urtdt |dgd urtd|S )Ncontrol_typez6control_type parameter is not supported in Gemini API. enable_control_image_computationzJenable_control_image_computation parameter is not supported in Gemini API.r&  r+   r-   r-   r.    _ControlReferenceConfig_to_mldev  s   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 )Nr+  ZcontrolTyper,  ZcomputeControlr2   r+   r-   r-   r.   !_ControlReferenceConfig_to_vertex  rs   r/  c                 C   s    i }t |dgd urtd|S )Nstyle_descriptionz;style_description parameter is not supported in Gemini API.r&  r+   r-   r-   r.   _StyleReferenceConfig_to_mldev  s   r1  c                 C   r   )Nr0  ZstyleDescriptionr2   r+   r-   r-   r.   _StyleReferenceConfig_to_vertex     
r2  c                 C   r*  )Nsubject_typez6subject_type parameter is not supported in Gemini API.subject_descriptionz=subject_description parameter is not supported in Gemini API.r&  r+   r-   r-   r.    _SubjectReferenceConfig_to_mldev  s   r6  c                 C   r.  )Nr4  ZsubjectTyper5  ZsubjectDescriptionr2   r+   r-   r-   r.   !_SubjectReferenceConfig_to_vertex  rs   r7  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r2tdt |d	gd ur>td
t |dgd urJtdt |dgd urVtd|S )Nreference_imagez9reference_image parameter is not supported in Gemini API.reference_idz6reference_id parameter is not supported in Gemini API.reference_typez8reference_type parameter is not supported in Gemini API.mask_image_configz;mask_image_config parameter is not supported in Gemini API.control_image_configz>control_image_config parameter is not supported in Gemini API.style_image_configz<style_image_config parameter is not supported in Gemini API.subject_image_configz>subject_image_config parameter is not supported in Gemini API.r&  r+   r-   r-   r.   _ReferenceImageAPI_to_mldev  s4   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rVt|dgt| t |dg| t |d	gd urmt|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 )Nr8  ZreferenceImager9  ZreferenceIdr:  ZreferenceTyper;  ZmaskImageConfigr<  ZcontrolImageConfigr=  ZstyleImageConfigr>  ZsubjectImageConfig)r(   r*   r   r)  r/  r2  r7  r+   r-   r-   r.   _ReferenceImageAPI_to_vertex0  s\   r@  c                 C   sT  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t |dg t|ddgt |dg t |dgd ur(td|S )Nr   r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  	edit_modeeditMode
base_stepsz4base_steps parameter is not supported in Gemini API.)r(   r)   r*   r	  r
   _EditMode_to_mldev_enum_validater+   r-   r-   r.   _EditImageConfig_to_mldevl  s   












rE  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 )Nr   rg   r  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rA  rB  rC  )rg   Z
editConfigZ	baseStepsr2   r+   r-   r-   r.   _EditImageConfig_to_vertex  r  rF  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rJtddg fddt |dgD  t |d	gd uratd	gt t |d	g S )
Nr   r   r  r  reference_imagesreferenceImagesc                    r7   r-   )r?  r8   r;   r-   r.   r<   [  r=   z1_EditImageParameters_to_mldev.<locals>.<listcomp>r   )r(   r*   r   r   rE  r?   r-   r;   r.   _EditImageParameters_to_mldevG  4   
	rJ  c              	      rG  )
Nr   r   r  r  rH  rI  c                    r7   r-   )r@  r8   r;   r-   r.   r<     r=   z2_EditImageParameters_to_vertex.<locals>.<listcomp>r   )r(   r*   r   r   rF  r?   r-   r;   r.   _EditImageParameters_to_vertexm  rK  rL  c                 C      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   rg   r   r  r  r  r  r   r   rq   r2   r+   r-   r-   r.   _UpscaleImageAPIConfig_to_mldev  8   



rO  c                 C   rM  rN  r2   r+   r-   r-   r.    _UpscaleImageAPIConfig_to_vertex  rP  rQ  c              	   C      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rFt|g dt |dg t |dgd ur]t|dgt| t |dg| |S Nr   r   imager  upscale_factor)rg   ZupscaleConfigZupscaleFactorr   )r(   r*   r   r   r  rO  r+   r-   r-   r.   #_UpscaleImageAPIParameters_to_mldev  8   
rV  c              	   C   rR  rS  )r(   r*   r   r   r   rQ  r+   r-   r-   r.   $_UpscaleImageAPIParameters_to_vertex	  rW  rX  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   rf   r   r(   r*   r   r   r+   r-   r-   r.   _GetModelParameters_to_mldev3	     r\  c              	   C   rY  rZ  r[  r+   r-   r-   r.   _GetModelParameters_to_vertexF	  r]  r^  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 
NZ	page_size_queryZpageSizeZ
page_tokenZ	pageTokenfilter
query_baser   Z
models_urlr(   r*   r   Zt_models_urlr+   r-   r-   r.   _ListModelsConfig_to_mldevY	  (   
re  c              	   C   r_  r`  rd  r+   r-   r-   r.   _ListModelsConfig_to_vertexy	  rf  rg  c                 C   6   i }t |dgd urt|dgt| t |dg| |S Nr   )r(   r*   re  r+   r-   r-   r.   _ListModelsParameters_to_mldev	  r   rj  c                 C   rh  ri  )r(   r*   rg  r+   r-   r-   r.   _ListModelsParameters_to_vertex	  r   rk  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display_namedisplayNamerM   r2   r+   r-   r-   r.   _UpdateModelConfig_to_mldev	     rp  c                 C   rl  rm  r2   r+   r-   r-   r.   _UpdateModelConfig_to_vertex	  rq  rr  c              	   C   sf   i }t |dgd urt|ddgt| t |dg t |dgd ur1t|dgt| t |dg| |S rZ  )r(   r*   r   r   rp  r+   r-   r-   r.   _UpdateModelParameters_to_mldev	      rs  c              	   C   sf   i }t |dgd urt|ddgt| t |dg t |dgd ur1t|dgt| t |dg| |S )Nr   r   r   )r(   r*   r   r   rr  r+   r-   r-   r.    _UpdateModelParameters_to_vertex	  rt  ru  c              	   C   rY  rZ  r[  r+   r-   r-   r.   _DeleteModelParameters_to_mldev
  r]  rv  c              	   C   rY  rZ  r[  r+   r-   r-   r.    _DeleteModelParameters_to_vertex"
  r]  rw  c                 C   r"  )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_mldev5
  s   ry  c                    s   i t |dgd urt|dgt t t |dg t |dgd ur8t|dg fddt |dgD  t |dgd urKt|dgt |dg S )Nr   r   r   c                    r7   r-   )r   r8   r;   r-   r.   r<   b
  r=   z0_CountTokensConfig_to_vertex.<locals>.<listcomp>rx  r   )r(   r*   rB   r   r   r?   r-   r;   r.   _CountTokensConfig_to_vertexL
  s4   

	
rz  c              
         i t |dgd urtddgt t |dg t |dgd ur9tdg fddt t |dgD  t |dgd urPtdgt t |dg S )Nr   r   r   c                    r7   r-   r   r8   r;   r-   r.   r<   
  r=   z3_CountTokensParameters_to_mldev.<locals>.<listcomp>r   )r(   r*   r   r   r   ry  r?   r-   r;   r.   _CountTokensParameters_to_mldevr
  r   r|  c              
      r{  )Nr   r   r   c                    r7   r-   r   r8   r;   r-   r.   r<   
  r=   z4_CountTokensParameters_to_vertex.<locals>.<listcomp>r   )r(   r*   r   r   r   rz  r?   r-   r;   r.    _CountTokensParameters_to_vertex
  r   r}  c              	   C   sv   i }t |dgd urt|ddgt| t |dg t |dgd ur&tdt |dgd ur9t|dgt |dg |S )Nr   r   r   z2contents parameter is not supported in Gemini API.r   )r(   r*   r   r   r)   r+   r-   r-   r.   !_ComputeTokensParameters_to_mldev
  s   r~  c              
      s   i t |dgd urtddgt t |dg t |dgd ur9tdg fddt t |dgD  t |dgd urLtdgt |dg S )Nr   r   r   c                    r7   r-   r   r8   r;   r-   r.   r<   
  r=   z6_ComputeTokensParameters_to_vertex.<locals>.<listcomp>r   )r(   r*   r   r   r   r?   r-   r;   r.   "_ComputeTokensParameters_to_vertex
  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|S )Nnumber_of_videosrg   r   r   r   fpsz-fps parameter is not supported in Gemini API.duration_secondsdurationSecondsr   r   r   r   
resolutionz4resolution parameter is not supported in Gemini API.r   r   pubsub_topicz6pubsub_topic parameter is not supported in Gemini API.r   r  r  r  r   r+   r-   r-   r.   _GenerateVideosConfig_to_mldev
  sX   




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 |S )Nr  rg   r   r   r  r  r  r  r   r   r   r  r   r   r  ZpubsubTopicr   r  r  r  r2   r+   r-   r-   r.   _GenerateVideosConfig_to_vertex0  sx   








r  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rFt|ddgt| t |dg| t |dgd ur]t|dgt| t |dg| |S Nr   r   r  r  rT  r   )r(   r*   r   r   r  r  r+   r-   r-   r.   "_GenerateVideosParameters_to_mldev  0   r  c              	   C   r  r  )r(   r*   r   r   r   r  r+   r-   r-   r.   #_GenerateVideosParameters_to_vertex  r  r  
enum_valuec                 C       | t dgv rt|  dd S )NZ
BLOCK_NONE+ enum value is not supported in Gemini API.setr)   r  r-   r-   r.   r	       r	  c                 C   r  )NZ	ALLOW_ALLr  r  r  r-   r-   r.   r
    r  r
  c                 C   "   | t g dv rt|  dd S )N)ZMASK_MODE_DEFAULTZMASK_MODE_USER_PROVIDEDZMASK_MODE_BACKGROUNDZMASK_MODE_FOREGROUNDZMASK_MODE_SEMANTICr  r  r  r-   r-   r.   )_MaskReferenceMode_to_mldev_enum_validate  s   r  c                 C   r  )N)ZCONTROL_TYPE_DEFAULTZCONTROL_TYPE_CANNYZCONTROL_TYPE_SCRIBBLEZCONTROL_TYPE_FACE_MESHr  r  r  r-   r-   r.   ,_ControlReferenceType_to_mldev_enum_validate     r  c                 C   r  )N)ZSUBJECT_TYPE_DEFAULTZSUBJECT_TYPE_PERSONZSUBJECT_TYPE_ANIMALZSUBJECT_TYPE_PRODUCTr  r  r  r-   r-   r.   ,_SubjectReferenceType_to_mldev_enum_validate  r  r  c                 C   r  )N)ZEDIT_MODE_DEFAULTZEDIT_MODE_INPAINT_REMOVALZEDIT_MODE_INPAINT_INSERTIONZEDIT_MODE_OUTPAINTZEDIT_MODE_CONTROLLED_EDITINGZEDIT_MODE_STYLEZEDIT_MODE_BGSWAPZEDIT_MODE_PRODUCT_IMAGEr  r  r  r-   r-   r.   rD    s   
rD  c                 C   s8  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 |S )Nr   r   r   r   r   r   r   r!   r    r#   r"   r%   r$   r&   r2   r+   r-   r-   r.   _Part_from_mldev  s4   

r  c                 C   r0   )Nr1   r   r   r   r   r   r   r   r   r!   r    r#   r"   r%   r$   r&   r2   r+   r-   r-   r.   _Part_from_vertex&  r4   r  c                    r5   )Nr6   c                    r7   r-   )r  r8   r;   r-   r.   r<   \  r=   z'_Content_from_mldev.<locals>.<listcomp>r>   r2   r?   r-   r;   r.   _Content_from_mldevR  rA   r  c                    r5   )Nr6   c                    r7   r-   )r  r8   r;   r-   r.   r<   r  r=   z(_Content_from_vertex.<locals>.<listcomp>r>   r2   r?   r-   r;   r.   _Content_from_vertexh  rA   r  c                 C   r   )NZcitationSources	citationsr2   r+   r-   r-   r.   _CitationMetadata_from_mldev~  r   r  c                 C   .   i }t |dgd urt|dgt |dg |S )Nr  r2   r+   r-   r-   r.   _CitationMetadata_from_vertex  r   r  c                 C   n  i }t |dgd urt|dgt| t |dg| t |dgd ur0t|dgt| t |dg| t |dgd urCt|dgt |dg t |dgd urVt|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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 )Nr   citationMetadatacitation_metadataZ
tokenCounttoken_countavgLogprobsavg_logprobsfinishReasonfinish_reasongroundingMetadatagrounding_metadataindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratings)r(   r*   r  r  r+   r-   r-   r.   _Candidate_from_mldev  H   
r  c                 C   r  )Nr   r  r  ZfinishMessageZfinish_messager  r  r  r  r  r  r  r  r  r  r  )r(   r*   r  r  r+   r-   r-   r.   _Candidate_from_vertex  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r0tdgt |dg t |dgd urCtdgt |dg t |dgd urVtd	gt |dg S )
N
candidatesc                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>modelVersionmodel_versionpromptFeedbackprompt_feedbackusageMetadatausage_metadatar2   r?   r-   r;   r.   #_GenerateContentResponse_from_mldev  s    
	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r0tdgt |dg t |dgd urCtdgt |dg t |dgd urVt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 S )Nr  c                    r7   r-   )r  r8   r;   r-   r.   r<   $  r=   z8_GenerateContentResponse_from_vertex.<locals>.<listcomp>
createTimecreate_timeZ
responseIdZresponse_idr  r  r  r  r  r  r2   r?   r-   r;   r.   $_GenerateContentResponse_from_vertex  s(   
	r  c                 C   rj   rk   r-   r+   r-   r-   r.   &_ContentEmbeddingStatistics_from_mldev<  rm   r  c                 C   sT   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	truncatedr  r2   r+   r-   r-   r.   '_ContentEmbeddingStatistics_from_vertexF  s   r  c                 C   r  )Nvaluesr2   r+   r-   r-   r.   _ContentEmbedding_from_mldevU  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| t |dg| |S )Nr  
statistics)r(   r*   r  r+   r-   r-   r.   _ContentEmbedding_from_vertexa  s   r  c                 C   rj   rk   r-   r+   r-   r-   r.    _EmbedContentMetadata_from_mldevv  rm   r  c                 C   r   )NZbillableCharacterCountZbillable_character_countr2   r+   r-   r-   r.   !_EmbedContentMetadata_from_vertex  r3  r  c                    sl   i t |dgd urtdg fddt |dgD  t |dgd ur4tdgt t |dg S )N
embeddingsc                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z4_EmbedContentResponse_from_mldev.<locals>.<listcomp>metadata)r(   r*   r  r?   r-   r;   r.    _EmbedContentResponse_from_mldev  s$   
	r  c                    sp   i t |ddgd urtdg fddt |ddgD  t |dgd ur6tdgt t |dg S )Nzpredictions[]r  c                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z5_EmbedContentResponse_from_vertex.<locals>.<listcomp>r  )r(   r*   r  r?   r-   r;   r.   !_EmbedContentResponse_from_vertex  s$   	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 |S )Nr  r  r   r   r  r+   r-   r-   r.   _Image_from_mldev  s   r  c              	   C   r  )Nr  r  r  r  r   r   r  r+   r-   r-   r.   _Image_from_vertex  r!  r  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 |S NZsafetyAttributes
categoriesZscoresr2   r+   r-   r-   r.   _SafetyAttributes_from_mldev     r  c                 C   r  r  r2   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rCt|dgt| t |dg| |S )N_selfrT  raiFilteredReasonrai_filtered_reasonsafety_attributes)r(   r*   r  r  r+   r-   r-   r.   _GeneratedImage_from_mldev  s,   
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rCt|dgt| t |dg| t |dgd urVt|dgt |dg |S )Nr  rT  r  r  r  r  Zenhanced_prompt)r(   r*   r  r  r+   r-   r-   r.   _GeneratedImage_from_vertex<  s0   
r  c                    >   i t |dgd urtdg fddt |dgD  S )Npredictionsgenerated_imagesc                    r7   r-   r  r8   r;   r-   r.   r<   i  r=   z6_GenerateImagesResponse_from_mldev.<locals>.<listcomp>r2   r?   r-   r;   r.   "_GenerateImagesResponse_from_mldev_     
	r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<   |  r=   z7_GenerateImagesResponse_from_vertex.<locals>.<listcomp>r2   r?   r-   r;   r.   #_GenerateImagesResponse_from_vertexr  r  r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<     r=   z1_EditImageResponse_from_mldev.<locals>.<listcomp>r2   r?   r-   r;   r.   _EditImageResponse_from_mldev  r  r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<     r=   z2_EditImageResponse_from_vertex.<locals>.<listcomp>r2   r?   r-   r;   r.   _EditImageResponse_from_vertex  r  r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<     r=   z4_UpscaleImageResponse_from_mldev.<locals>.<listcomp>r2   r?   r-   r;   r.    _UpscaleImageResponse_from_mldev  r  r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<     r=   z5_UpscaleImageResponse_from_vertex.<locals>.<listcomp>r2   r?   r-   r;   r.   !_UpscaleImageResponse_from_vertex  r  r  c                 C   rj   rk   r-   r+   r-   r-   r.   _Endpoint_from_mldev  rm   r  c                 C   r.  )NZendpointrf   ZdeployedModelIdZdeployed_model_idr2   r+   r-   r-   r.   _Endpoint_from_vertex  s   r  c                 C   r(  )NZ	baseModel
base_modelr  r  
updateTimeupdate_timer2   r+   r-   r-   r.   _TunedModelInfo_from_mldev  rd   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  r2   r+   r-   r-   r.   _TunedModelInfo_from_vertex  s   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ret|dgt| t |dg| t |dgd urxt|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 )Nrf   ro  rn  rM   versionr  tuned_model_infoZinputTokenLimitZinput_token_limitZoutputTokenLimitZoutput_token_limitZsupportedGenerationMethodsZsupported_actions)r(   r*   r  r+   r-   r-   r.   _Model_from_mldev  sD   

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rit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 S )Nrf   ro  rn  rM   Z	versionIdr  ZdeployedModelsZ	endpointsc                    r7   r-   )r  r8   r;   r-   r.   r<   ^  r=   z&_Model_from_vertex.<locals>.<listcomp>r   r  r  )r(   r*   r  r?   r-   r;   r.   _Model_from_vertexH  s8   
	r  c              
      l   i t |dgd urtdgt |dg t |dgd ur4tdg fddt t |dgD  S )NnextPageTokennext_page_tokenr  modelsc                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z2_ListModelsResponse_from_mldev.<locals>.<listcomp>r(   r*   r   Zt_extract_modelsr?   r-   r;   r.   _ListModelsResponse_from_mldevs     r  c              
      r  )Nr  r  r  r  c                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z3_ListModelsResponse_from_vertex.<locals>.<listcomp>r  r?   r-   r;   r.   _ListModelsResponse_from_vertex  r  r  c                 C   rj   rk   r-   r+   r-   r-   r.   _DeleteModelResponse_from_mldev  rm   r  c                 C   rj   rk   r-   r+   r-   r-   r.    _DeleteModelResponse_from_vertex  rm   r  c                 C   r.  )NtotalTokenstotal_tokensZcachedContentTokenCountZcached_content_token_countr2   r+   r-   r-   r.   _CountTokensResponse_from_mldev  rs   r  c                 C   r   )Nr  r  r2   r+   r-   r-   r.    _CountTokensResponse_from_vertex  r   r  c                 C   r   NZ
tokensInfoZtokens_infor2   r+   r-   r-   r.   !_ComputeTokensResponse_from_mldev  r   r  c                 C   r   r  r2   r+   r-   r-   r.   "_ComputeTokensResponse_from_vertex  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r0t|dgt| t |ddg t |dgd urCt|dgt |dg |S )NvideouriZencodedVideovideo_bytesencodingr   r  r+   r-   r-   r.   _Video_from_mldev  s   r  c              	   C   r  )Nr  r  r  r  r   r   r  r+   r-   r-   r.   _Video_from_vertex  r!  r  c                 C   ru   Nr  r  )r(   r*   r  r+   r-   r-   r.   _GeneratedVideo_from_mldev     r  c                 C   ru   r  )r(   r*   r  r+   r-   r-   r.   _GeneratedVideo_from_vertex*  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r0tdgt |dg t |dgd urCtdgt |dg S )	NZgeneratedSamplesgenerated_videosc                    r7   r-   )r  r8   r;   r-   r.   r<   D  r=   z6_GenerateVideosResponse_from_mldev.<locals>.<listcomp>raiMediaFilteredCountrai_media_filtered_countraiMediaFilteredReasonsrai_media_filtered_reasonsr2   r?   r-   r;   r.   "_GenerateVideosResponse_from_mldev:  ,   
	

r  c                    r  )	NZvideosr  c                    r7   r-   )r
  r8   r;   r-   r.   r<   e  r=   z7_GenerateVideosResponse_from_vertex.<locals>.<listcomp>r  r  r  r  r2   r?   r-   r;   r.   #_GenerateVideosResponse_from_vertex[  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rat|dgt |dg t |ddgd urzt|dgt| t |ddg| |S )Nrf   r  doneerrorre   ZgenerateVideoResponseresult)r(   r*   r  r+   r-   r-   r.   #_GenerateVideosOperation_from_mldev|  s,   
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rxt|dgt| t |dg| |S )Nrf   r  r  r  re   r  )r(   r*   r  r+   r-   r-   r.   $_GenerateVideosOperation_from_vertex  s(   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-e./d#dddd$dedee 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dejdedeej6 dejf
d-d.Z7dddeej  de8ej fd/d0ZdS )1ModelsNr   r   r   r   r   c                C   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 }	t
|tr[|dd }	nt|drg|d urg|j}	t|}t|}| jd|||	}
| jjrt| j|
}
nt| j|
}
t jj|
| d	}| j| |S 
Nr   r   r   r   z{model}:generateContentra  ?r   http_optionspostre   kwargs)r   _GenerateContentParameters_api_clientvertexair   get
format_mapr   r   pop
isinstancedicthasattrr  r   convert_to_dictencode_unserializable_typesrequestr  r  GenerateContentResponse_from_response
model_dump_verify_responseselfr   r   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  response_dictreturn_valuer-   r-   r.   _generate_content  s\   





zModels._generate_contentc                c   sH   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 }	t
|tr\|dd }	nt|drh|d urh|j}	t|}t|}| jd|||	D ]&}
| jjrt| j|
}
nt| j|
}
t jj|
| d	}| j| |V  q{d S )
Nr  r   %{model}:streamGenerateContent?alt=ssera  r  r   r  r  r   )r   r"  r#  r$  r   r%  r&  r   r   r'  r(  r)  r*  r  r   r+  r,  Zrequest_streamedr  r  r.  r/  r0  r1  r2  r-   r-   r.   _generate_content_stream  sh   





zModels._generate_content_streamc                C   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}	t
|tr[|d	d}	nt|d	rg|durg|j}	t|}t|}| jd
|||	}
| jjrt| j|
}
nt| j|
}
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}:batchEmbedContentsra  r  r   Nr  r  r   )r   _EmbedContentParametersr#  r$  r   r%  r&  r   r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  EmbedContentResponser/  r0  r1  r2  r-   r-   r.   embed_contentL  \   





zModels.embed_contentr  c                C   :  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}	t
|tr[|dd}	nt|drg|durg|j}	t|}t|}| jd	|||	}
| jjrt| j|
}
nt| j|
}
t jj|
| d
}| j| |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   r  r   r   r>  ra  r  r   Nr  r  r   )r   _GenerateImagesParametersr#  r$  r  r%  r&  r  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  GenerateImagesResponser/  r0  r1  r3  r   r  r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   generate_images  rC  zModels.generate_imagesrH  c                C     t j||||d}| jjstdt| j|}|d}|r$d|}nd}|d}	|	r6| dt|	 }|	dd d}
t
|trJ|d	d}
nt|d	rV|durV|j}
t|}t|}| jd
|||
}| jjrtt| j|}nt| j|}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   r  rH  r   6This method is only supported in the Vertex AI client.r   r>  ra  r  r   Nr  r  r   )r   _EditImageParametersr#  r$  r)   rL  r%  r&  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  EditImageResponser/  r0  r1  r3  r   r  rH  r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   _edit_image   sR   2




zModels._edit_imagerT  rU  c                C   rJ  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   rT  rU  r   rM  r   r>  ra  r  r   Nr  r  r   )r   _UpscaleImageAPIParametersr#  r$  r)   rX  r%  r&  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  UpscaleImageResponser/  r0  r1  r3  r   rT  rU  r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   _upscale_imageh  sR   




zModels._upscale_imagec                C   8  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 }t
|trZ|dd }nt|drf|d urf|j}t|}t|}| jd|||}	| jjrt| j|	}	nt| j|	}	t jj|	| d	}
| j|
 |
S 
Nr   r   r   {name}ra  r  r   r  r%  r   )r   _GetModelParametersr#  r$  r^  r%  r&  r\  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  Modelr/  r0  r1  r3  r   r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   r%    sR   





z
Models.getc          
      C   s6  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 }t
|trY|dd }nt|dre|d ure|j}t|}t|}| jd|||}| jjrt| j|}nt| j|}t jj|| d	}	| j|	 |	S 
Nr  r   z{models_url}ra  r  r   r  r%  r   )r   _ListModelsParametersr#  r$  rk  r%  r&  rj  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  ListModelsResponser/  r0  r1  
r3  r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   _list  sX   





zModels._listc                C   s8  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 }t
|trZ|dd }nt|drf|d urf|j}t|}t|}| jd	|||}	| jjrt| j|	}	nt| j|	}	t jj|	| d
}
| j|
 |
S NrZ  r   z{model}r[  ra  r  r   r  patchr   )r   _UpdateModelParametersr#  r$  ru  r%  r&  rs  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  r]  r/  r0  r1  r^  r-   r-   r.   update&  sR   





zModels.updatec                C   rX  
NrZ  r   r[  ra  r  r   r  deleter   )r   _DeleteModelParametersr#  r$  rw  r%  r&  rv  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  DeleteModelResponser/  r0  r1  r^  r-   r-   r.   ri  c  sZ   





zModels.deletec                C   rD  )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}:countTokensra  r  r   Nr  r  r   )r   _CountTokensParametersr#  r$  r}  r%  r&  r|  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  CountTokensResponser/  r0  r1  r2  r-   r-   r.   count_tokens  s\   





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}	t
|trI|d	d}	nt|d	rU|durU|j}	t|}t|}| jd
|||	}
| jjrst| j|
}
nt| j|
}
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  rM  r   {model}:computeTokensra  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/  r0  r1  r2  r-   r-   r.   compute_tokens  sP   




zModels.compute_tokens>This method is experimental and may change in future versions.r  rT  r   c                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}
t
|tr\|dd}
nt|drh|durh|j}
t|}t|}| jd	|||
}| jjrt| j|}nt| j|}t jj|| d
}| j| |S aS  Generates videos based on a text description and configuration.

    Args:
      model: The model to use.
      instances: A list of prompts, images and videos to generate videos from.
      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   r  rT  r   r   z{model}:predictLongRunningra  r  r   Nr  r  r   )r   _GenerateVideosParametersr#  r$  r  r%  r&  r  r   r'  r(  r)  r*  r  r   r+  r,  r-  r  r  GenerateVideosOperationr/  r0  r1  r3  r   r  rT  r   r4  r5  r6  r7  r8  r  r9  r:  r-   r-   r.   generate_videosO  s^   !	





zModels.generate_videosc                C   sh  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rItd t |}|sQnU|sTnR|j	rd|j	d j
rd|j	d j
jsenAt ||}	|	snn8|j	d j
}
tjd	|	d
}t| j|}|s|| t|tr||
 || ||
 || |dks't |r|dur||_|S )a  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.

    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.
    r  &AFC is enabled with max remote calls: .r   r	   AFC remote call 	 is done.8Reached max remote calls for automatic function calling.userr>   r6   Nr   should_disable_afcr;  get_max_remote_calls_afcloggerinfor   r.  get_function_mapr  r   r6   get_function_response_partsContentr   r   r#  extendr(  listappendshould_append_afc_history"automatic_function_calling_history)r3  r   r   r   remaining_remote_calls_afcr  re   ifunction_mapfunc_response_partsfunc_call_contentfunc_response_contentr-   r-   r.   generate_content  sn   
@










'zModels.generate_contentc                c   s   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rOtd	 t |}
|dkr|	D ]%}|
sb|V  qZ|jrr|jd jrr|jd jj	st nt 
||
}|s|V  qZn(|	D ]}t |r||_|V  q|jr|jd jr|jd jj	sdS t 
||
}|
sdS |sdS |jd j}tjd
|d}t| j|}|s|| t|tr|| || || || |dks-dS 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.

    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  Nr{  r|  r   r	   r}  r~  r  r  r  )r   r  r=  r  r  r  r  r  r   r6   r  r  r  r   r  r   r   r#  r  r(  r  r  )r3  r   r   r   r  r  chunkr  r  re   r  r  r  r-   r-   r.   generate_content_stream%  s   
@












zModels.generate_content_streamc                C   s   | j ||||dS )rK  rL  rQ  r3  r   r  rH  r   r-   r-   r.   
edit_image  s   1zModels.edit_imagec                C   sb   t j||||d |pi }t|tr|n| }t jdi |}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.
    rS  upscalerq   r	   r   Nr-   )r   UpscaleImageParametersr(  r)  r0  _UpscaleImageAPIConfigDictrW  r3  r   rT  rU  r   Z
config_dctZ
api_configr-   r-   r.   upscale_image  s"   !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   r`  r   ListModelsConfigrc  r#  r$  copyrb  r   rc  r3  r   Zfilter_valuer-   r-   r.   r  )  s&   


zModels.list)9__name__
__module____qualname__strr   r   ContentListUnionContentListUnionDictr   GenerateContentConfigOrDictr.  r;  r   r=  EmbedContentConfigOrDictrA  rB  GenerateImagesConfigOrDictrG  rI  r  _ReferenceImageAPIOrDictEditImageConfigOrDictrO  rQ  ImageOrDict_UpscaleImageAPIConfigOrDictrU  rW  GetModelConfigOrDictr]  r%  ListModelsConfigOrDictra  rc  UpdateModelConfigOrDictrg  DeleteModelConfigOrDictrk  ri  CountTokensConfigOrDictrn  ro  ComputeTokensConfigOrDictrr  rs  r   experimental_warningGenerateVideosConfigOrDictrx  rz  r  r  r  UpscaleImageConfigOrDictr  r   r-   r-   r-   r.   r    sn   
H
L
_
`
n
H
;
A
A
F
]
S`
}
 
>
;r  c                   @   sd  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.e/0d#dddd$dedee deej deej1 dej2f
d%d&Z3dddedeejejf deej	 dej
fd'd(Z4dddedeejejf deej	 deeej
  fd)d*Z5dddededeej deej dejf
d+d,Z6dddeej! de7ej fd-d.Zdddedejdedeej8 dejf
d/d0Z9dS )1AsyncModelsNr  r   r   r   r   c                   sB  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 }	t
|tr\|dd }	nt|drh|d urh|j}	t|}t|}| jd|||	I d H }
| jjrt| j|
}
nt| j|
}
t jj|
| d	}| j| |S r  )r   r"  r#  r$  r   r%  r&  r   r   r'  r(  r)  r*  r  r   r+  r,  async_requestr  r  r.  r/  r0  r1  r2  r-   r-   r.   r;  ^  s^   






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 }t
|tr\|dd }nt|drh|d urh|j}t|}t|}jd|||I d H  fd	d
}	|	 S )Nr  r   r<  ra  r  r   r  r  c                    sb   2 z*3 d H W } j jrtj | } ntj | } tjj|   d}j | |V  q6 d S )Nr   )	r#  r$  r  r  r   r.  r/  r0  r1  )r9  r:  r4  Zresponse_streamr3  r-   r.   async_generator  s   z=AsyncModels._generate_content_stream.<locals>.async_generator)r   r"  r#  r$  r   r%  r&  r   r   r'  r(  r)  r*  r  r   r+  r,  Zasync_request_streamed)
r3  r   r   r   r5  r6  r7  r8  r  r  r-   r  r.   r=    sR   






z$AsyncModels._generate_content_streamc                   sB  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}	t
|tr\|d	d}	nt|d	rh|durh|j}	t|}t|}| jd
|||	I dH }
| jjrt| j|
}
nt| j|
}
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?  ra  r  r   Nr  r  r   )r   r@  r#  r$  r   r%  r&  r   r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rA  r/  r0  r1  r2  r-   r-   r.   rB    ^   






zAsyncModels.embed_contentr  c                   B  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}	t
|tr\|dd}	nt|drh|durh|j}	t|}t|}| jd	|||	I dH }
| jjrt| j|
}
nt| j|
}
t jj|
| d
}| j| |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.
    rE  r   r>  ra  r  r   Nr  r  r   )r   rF  r#  r$  r  r%  r&  r  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rG  r/  r0  r1  rH  r-   r-   r.   rI  G  r  zAsyncModels.generate_imagesrH  c                      t j||||d}| jjstdt| j|}|d}|r%d|}nd}|d}	|	r7| dt|	 }|	dd d}
t
|trK|d	d}
nt|d	rW|durW|j}
t|}t|}| jd
|||
I dH }| jjrxt| j|}nt| j|}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.
    rL  rM  r   r>  ra  r  r   Nr  r  r   )r   rN  r#  r$  r)   rL  r%  r&  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rO  r/  r0  r1  rP  r-   r-   r.   rQ    sT   2





zAsyncModels._edit_imagerT  rU  c                   r  rR  )r   rT  r#  r$  r)   rX  r%  r&  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rU  r/  r0  r1  rV  r-   r-   r.   rW  	  sT   





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 }t
|tr[|dd }nt|drg|d urg|j}t|}t|}| jd|||I d H }	| jjrt| j|	}	nt| j|	}	t jj|	| d	}
| j|
 |
S rY  )r   r\  r#  r$  r^  r%  r&  r\  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  r]  r/  r0  r1  r^  r-   r-   r.   r%  P  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 }t
|trZ|dd }nt|drf|d urf|j}t|}t|}| jd|||I d H }| jjrt| j|}nt| j|}t jj|| d	}	| j|	 |	S r_  )r   r`  r#  r$  rk  r%  r&  rj  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  ra  r/  r0  r1  rb  r-   r-   r.   rc    sZ   






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 }t
|tr[|dd }nt|drg|d urg|j}t|}t|}| jd	|||I d H }	| jjrt| j|	}	nt| j|	}	t jj|	| d
}
| j|
 |
S rd  )r   rf  r#  r$  ru  r%  r&  rs  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  r]  r/  r0  r1  r^  r-   r-   r.   rg    sT   






zAsyncModels.updatec                   r  rh  )r   rj  r#  r$  rw  r%  r&  rv  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rk  r/  r0  r1  r^  r-   r-   r.   ri    s\   






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   rl  ra  r  r   Nr  r  r   )r   rm  r#  r$  r}  r%  r&  r|  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rn  r/  r0  r1  r2  r-   r-   r.   ro  E  s^   






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}	t
|trJ|d	d}	nt|d	rV|durV|j}	t|}t|}| jd
|||	I dH }
| jjrwt| j|
}
nt| j|
}
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  rM  r   rp  ra  r  r   Nr  r  r   )r   rq  r#  r$  r)   r  r%  r&  r   r'  r(  r)  r*  r  r   r+  r,  r  r   r  rr  r/  r0  r1  r2  r-   r-   r.   rs    sR   





zAsyncModels.compute_tokensrt  ru  c                   sD  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}
t
|tr]|dd}
nt|dri|duri|j}
t|}t|}| jd	|||
I dH }| jjrt| j|}nt| j|}t jj|| d
}| j| |S rv  )r   rw  r#  r$  r  r%  r&  r  r   r'  r(  r)  r*  r  r   r+  r,  r  r  r  rx  r/  r0  r1  ry  r-   r-   r.   rz    s`   !	






zAsyncModels.generate_videosc                   sX  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rAtd t |}|sInU|sLnR|j	r\|j	d j
r\|j	d j
js]nAt ||}|sfn8|j	d j
}	tjd|d	}
t| j|}|s|| t|tr||	 ||
 ||	 ||
 |dks)t |r|dur||_|S )
a.  Makes an API request to generate content using a model.

    Some models support multimodal input and output.

    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.
    r  Nr{  r|  r   r	   r  r  r  r  )r3  r   r   r   r  r  re   r  r  r  r  r-   r-   r.   r  M  sj   
$










&zAsyncModels.generate_contentc                   sR   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.

    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.
    r  Nc                   s     2 z	3 d H W }|V  q6 d S rk   r-   )r   r   r   r  )re   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 |}	|dkrw|2 z)3 d H W }|	sW|V  qK|jrg|jd jrg|jd jjsi nt 	||	}|st|V  qK6 n-|2 z3 d H W }t 
|r||_|V  qy6 |jr|jd jr|jd jjsd S t 	||	}|	sd S |sd S |jd j}
tjd	|d
}t j|}|s|| t|tr||
 || ||
 || |dksd S d S )Nr{  r|  r   r	   r  r}  r~  r  r  r  )r   r  r  r  r=  r  r  r   r6   r  r  r  r   r  r   r   r#  r  r(  r  r  )r   r   r   r  r  r  r  r  re   r  r  r  )r3  r-   r.   r    s   











z<AsyncModels.generate_content_stream.<locals>.async_generator)r   r  r=  )r3  r   r   r   r  r  r-   )re   r3  r.   r    s   
@Rz#AsyncModels.generate_content_streamc                   s   | j ||||dI dH S )r  rL  Nr  r  r-   r-   r.   r  F  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   r`  r   r  rc  r#  r$  r  rb  r   rc  r  r-   r-   r.   r  ~  s(   

zAsyncModels.listc                   sj   t j||||d |pi }t|tr|n| }t jdi |}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.
    rS  r  rq   r	   r   Nr-   )r   r  r(  r)  r  rW  r  r-   r-   r.   r    s$   !zAsyncModels.upscale_image):r  r  r  r  r   r   r  r  r   r  r.  r;  r   r   r=  r  rA  rB  r  rG  rI  r  r  r  rO  rQ  r  r  rU  rW  r  r]  r%  r  ra  rc  r  rg  r  rk  ri  r  rn  ro  r  rr  rs  r   r  r  rx  rz  r  r  r  r   r  r  r-   r-   r-   r.   r  \  sn   
H
Q
_
`
n
H
;
A
A
F
]
R`
_
 &
;
:r  rk   )loggingtypingr   r   r   r   r   r   urllib.parser    r
   r   r   r   r   r   r#  r   r   r(   r   r*   Zpagersr   r   	getLoggerr  r)  objectr/   r3   r@   rB   r]   r^   rb   rc   rh   ri   rl   rn   rr   rt   rw   ry   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/  r1  r2  r6  r7  r?  r@  rE  rF  rJ  rL  rO  rQ  rV  rX  r\  r^  re  rg  rj  rk  rp  rr  rs  ru  rv  rw  ry  rz  r|  r}  r~  r  r  r  r  r  r	  r
  r  r  r  rD  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  Z
BaseModuler  r  r-   r-   r-   r.   <module>   s
   


/

/





R

R





















0

0

























 )

 '

(

(

$

,

(

#

j

r

























+

?

o

r

)

)

,

,

*

*





#

#



















)

(

(



"

B

R

&

#



-

/









7

7



%

























#

&














4
.












$
$
&
!           '