o
    0Xxi                 	   @   sb  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 	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ 	ddedeeef dedefddZ!	ddedeeef dedefddZ"	ddedeeef dedefd d!Z#	ddedeeef dedefd"d#Z$	ddedeeef dedefd$d%Z%	ddedeeef dedefd&d'Z&	ddedeeef dedefd(d)Z'	ddedeeef dedefd*d+Z(	ddedeeef dedefd,d-Z)	ddedeeef dedefd.d/Z*	ddedeeef dedefd0d1Z+	ddedeeef dedefd2d3Z,	ddedeeef dedefd4d5Z-	ddedeeef dedefd6d7Z.	ddedeeef dedefd8d9Z/	ddedeeef dedefd:d;Z0	ddedeeef dedefd<d=Z1	ddedeeef dedefd>d?Z2	ddedeeef dedefd@dAZ3	ddedeeef dedefdBdCZ4	ddedeeef dedefdDdEZ5	ddedeeef dedefdFdGZ6	ddedeeef dedefdHdIZ7	ddedeeef dedefdJdKZ8	ddedeeef dedefdLdMZ9	ddedeeef dedefdNdOZ:	ddedeeef dedefdPdQZ;	ddedeeef dedefdRdSZ<	ddedeeef dedefdTdUZ=	ddedeeef dedefdVdWZ>	ddedeeef dedefdXdYZ?	ddedeeef dedefdZd[Z@	ddedeeef dedefd\d]ZA	ddedeeef dedefd^d_ZB	ddedeeef dedefd`daZC	ddedeeef dedefdbdcZD	ddedeeef dedefdddeZE	ddedeeef dedefdfdgZF	ddedeeef dedefdhdiZG	ddedeeef dedefdjdkZH	ddedeeef dedefdldmZI	ddedeeef dedefdndoZJ	ddedeeef dedefdpdqZK	ddedeeef dedefdrdsZL	ddedeeef dedefdtduZM	ddedeeef dedefdvdwZN	ddedeeef dedefdxdyZO	ddedeeef dedefdzd{ZP	ddedeeef dedefd|d}ZQ	ddedeeef dedefd~dZR	ddedeeef dedefddZS	ddedeeef dedefddZT	ddedeeef dedefddZU	ddedeeef dedefddZV	ddedeeef dedefddZW	ddedeeef dedefddZX	ddedeeef dedefddZY	ddedeeef dedefddZZ	ddedeeef dedefddZ[	ddedeeef dedefddZ\	ddedeeef dedefddZ]	ddedeeef dedefddZ^	ddedeeef dedefddZ_	ddedeeef dedefddZ`	ddedeeef dedefddZa	ddedeeef dedefddZb	ddedeeef dedefddZc	ddedeeef dedefddZd	ddedeeef dedefddZe	ddedeeef dedefddZf	ddedeeef dedefddZg	ddedeeef dedefddZh	ddedeeef dedefddZi	ddedeeef dedefddZj	ddedeeef dedefddZkdefddZldefddZmdefddZndefddZodefddZpdefddZq	ddedeeef dedefddZr	ddedeeef dedefddZs	ddedeeef dedefddĄZt	ddedeeef dedefddƄZu	ddedeeef dedefddȄZv	ddedeeef dedefddʄZw	ddedeeef dedefdd̄Zx	ddedeeef dedefdd΄Zy	ddedeeef dedefddЄZz	ddedeeef dedefdd҄Z{	ddedeeef dedefddԄZ|	ddedeeef dedefddքZ}	ddedeeef dedefdd؄Z~	ddedeeef dedefddڄZ	ddedeeef dedefdd܄Z	ddedeeef dedefddބZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefdd Z	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefd	d
Z	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZ	ddedeeef dedefddZG dd dejZG dd dejZdS (      N)AnyAsyncIterator	AwaitableIteratorOptionalUnion)	urlencode   )_api_module)_common)_extra_utils)_transformers)types)	ApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPager
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-   R/home/air/biblejyuku/back/venv/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_vertexL   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_mldevx      
	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gt |dg t |dgd ur9tdt |d	gd urEtd
t |dgd urQtdt |dgd ur]tdt |dgd uritdt |dgd urutdt |dgd urtdt |dgd urtdt |dgd urtdt |dgd urtdt |dgd urtdt |dgd urtd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r2t|d$gt |d$g t |d%gd urFt|d%gt |d%g |S )&N	min_itemsz3min_items parameter is not supported in Gemini API.examplez1example parameter is not supported in Gemini API.property_orderingpropertyOrderingpatternz1pattern parameter is not supported in Gemini API.minimumz1minimum parameter is not supported in Gemini API.defaultz1default parameter is not supported in Gemini API.any_ofz0any_of 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_itemsz3max_items parameter is not supported in Gemini API.maximumz1maximum parameter is not supported in Gemini API.nullablez2nullable parameter is not supported in Gemini API.max_propertiesz8max_properties parameter is not supported in Gemini API.typedescriptionenumformatitems
propertiesrequiredr'   r+   r-   r-   r.   _Schema_to_mldev   sd   
rZ   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   minItemsrD   rE   rF   rG   rH   rI   rJ   anyOfrK   	maxLengthrL   rM   	minLengthrN   minPropertiesrO   maxItemsrP   rQ   rR   maxPropertiesrS   rT   rU   rV   rW   rX   rY   r2   r+   r-   r-   r.   _Schema_to_vertex   sd   
rb   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_mldevB  s   rf   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 )Nrc   rd   re   r2   r+   r-   r-   r.   _SafetySetting_to_vertexT     rg   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.rT   name
parametersr'   r+   r-   r-   r.   _FunctionDeclaration_to_mldevf  s   rl   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 )Nri   rT   rj   rk   )r(   r*   rb   r+   r-   r-   r.   _FunctionDeclaration_to_vertex{  s    rm   c                 C      i }|S Nr-   r+   r-   r-   r.   _GoogleSearch_to_mldev     rp   c                 C   rn   ro   r-   r+   r-   r-   r.   _GoogleSearch_to_vertex  rq   rr   c                 C   T   i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg |S Nmodedynamic_thresholddynamicThresholdr2   r+   r-   r-   r.    _DynamicRetrievalConfig_to_mldev     
rx   c                 C   rs   rt   r2   r+   r-   r-   r.   !_DynamicRetrievalConfig_to_vertex  ry   rz   c                 C   6   i }t |dgd urt|dgt| t |dg| |S Ndynamic_retrieval_configdynamicRetrievalConfig)r(   r*   rx   r+   r-   r-   r.   _GoogleSearchRetrieval_to_mldev     

r   c                 C   r{   r|   )r(   r*   rz   r+   r-   r-   r.    _GoogleSearchRetrieval_to_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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-   )rl   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)   rp   r   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 )Nr   r   c                    r7   r-   )rm   r8   r;   r-   r.   r<   /  r=   z#_Tool_to_vertex.<locals>.<listcomp>r   r   r   r   r   r   r   )r(   r*   rr   r   r?   r-   r;   r.   _Tool_to_vertex%  s@   
	

r   c                 C   rs   Nru   allowed_function_namesallowedFunctionNamesr2   r+   r-   r-   r.   _FunctionCallingConfig_to_mldevR  ry   r   c                 C   rs   r   r2   r+   r-   r-   r.    _FunctionCallingConfig_to_vertexe  ry   r   c                 C   r{   Nfunction_calling_configfunctionCallingConfig)r(   r*   r   r+   r-   r-   r.   _ToolConfig_to_mldevx  r   r   c                 C   r{   r   )r(   r*   r   r+   r-   r-   r.   _ToolConfig_to_vertex  r   r   c                 C   .   i }t |dgd urt|dgt |dg |S N
voice_name	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   r{   Nprebuilt_voice_configprebuiltVoiceConfig)r(   r*   r   r+   r-   r-   r.   _VoiceConfig_to_mldev     r   c                 C   r{   r   )r(   r*   r   r+   r-   r-   r.   _VoiceConfig_to_vertex  r   r   c                 C   r{   Nvoice_configvoiceConfig)r(   r*   r   r+   r-   r-   r.   _SpeechConfig_to_mldev  r   r   c                 C   r{   r   )r(   r*   r   r+   r-   r-   r.   _SpeechConfig_to_vertex  r   r   c                 C   r   Ninclude_thoughts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-   )rf   r8   r;   r-   r.   r<   t  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_contentrZ   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   routingConfigr   r   c                    r7   r-   )rg   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   audioTimestampr   r   )r(   r*   rB   r   r   rb   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<   u  r=   z7_GenerateContentParameters_to_mldev.<locals>.<listcomp>configgenerationConfig)r(   r*   r   t_model
t_contentsr   r?   r-   r;   r.   #_GenerateContentParameters_to_mldevd  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[]taskTyperL   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[]rL   r   rk   r   r   mimeTyper   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   sD  i }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r6t|ddgt |dg t |dgd urJt|dd	gt |dg t |d
gd urVtdt |dgd urrt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rtdt |dgd urt|ddgt |dg t |dgd ur td|S )Noutput_gcs_uri8output_gcs_uri parameter is not supported in Gemini API.negative_promptrk   negativePromptnumber_of_imagessampleCount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rk   outputOptionsr   output_compression_qualityrk   r  compressionQualityadd_watermarkz7add_watermark parameter is not supported in Gemini API.aspect_ratioaspectRatioenhance_promptz8enhance_prompt parameter is not supported in Gemini API.)r(   r)   r*   )_SafetyFilterLevel_to_mldev_enum_validate(_PersonGeneration_to_mldev_enum_validater+   r-   r-   r.   _GenerateImagesConfig_to_mldev=  s   












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|g dt |dg t |dgd urt|g d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r1t|ddgt |dg |S )Nr  rk   
storageUrir  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  addWatermarkr  r  r  enhancePromptr2   r+   r-   r-   r.   _GenerateImagesConfig_to_vertex  s   













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	instancesr   )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   r2  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/  r0  r   r   r(   r*   r   r1  r+   r-   r-   r.   _Image_to_vertexc     r6  c                 C   sP   i }t |dgd urtdt |dgd urtdt |dgd ur&td|S )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 )Nr8  maskModer9  maskClassesr:  dilationr2   r+   r-   r-   r.   _MaskReferenceConfig_to_vertex  s   rA  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   rE  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 )NrC  controlTyperD  computeControlr2   r+   r-   r-   r.   !_ControlReferenceConfig_to_vertex  ry   rI  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   rK  c                 C   r   )NrJ  styleDescriptionr2   r+   r-   r-   r.   _StyleReferenceConfig_to_vertex     
rM  c                 C   rB  )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   rQ  c                 C   rF  )NrO  subjectTyperP  subjectDescriptionr2   r+   r-   r-   r.   !_SubjectReferenceConfig_to_vertex  ry   rT  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 )NrU  referenceImagerV  referenceIdrW  referenceTyperX  maskImageConfigrY  controlImageConfigrZ  styleImageConfigr[  subjectImageConfig)r(   r*   r6  rA  rI  rM  rT  r+   r-   r-   r.   _ReferenceImageAPI_to_vertex0  s\   rd  c                 C   s"  i }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r6t|ddgt |dg t |dgd urJt|dd	gt |dg t |d
gd urVtdt |dgd urrt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 |S )Nr  r  r  rk   r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  	edit_modeeditMode)r(   r)   r*   r   r!   _EditMode_to_mldev_enum_validater+   r-   r-   r.   _EditImageConfig_to_mldevl  s   












rh  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|g dt |dg t |dgd urt|g dt |dg t |dgd urt|ddgt |dg |S )Nr  rk   r#  r  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  re  rf  r2   r+   r-   r-   r.   _EditImageConfig_to_vertex  s   











ri  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<   E  r=   z1_EditImageParameters_to_mldev.<locals>.<listcomp>r   )r(   r*   r   r   rh  r?   r-   r;   r.   _EditImageParameters_to_mldev1  4   
	rm  c              	      rj  )
Nr   r   r)  r*  rk  rl  c                    r7   r-   )rd  r8   r;   r-   r.   r<   k  r=   z2_EditImageParameters_to_vertex.<locals>.<listcomp>r   )r(   r*   r   r   ri  r?   r-   r;   r.   _EditImageParameters_to_vertexW  rn  ro  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  rk   r  r  r  r  r  r  r	  ru   r2   r+   r-   r-   r.   _UpscaleImageAPIConfig_to_mldev}  8   



rr  c                 C   rp  rq  r2   r+   r-   r-   r.    _UpscaleImageAPIConfig_to_vertex  rs  rt  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)rk   upscaleConfigupscaleFactorr   )r(   r*   r   r   r2  rr  r+   r-   r-   r.   #_UpscaleImageAPIParameters_to_mldev  8   
r{  c              	   C   ru  rv  )r(   r*   r   r   r6  rt  r+   r-   r-   r.   $_UpscaleImageAPIParameters_to_vertex  r|  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gt |dg |S Nr   r   rj   r   r(   r*   r   r   r+   r-   r-   r.   _GetModelParameters_to_mldev	     r  c              	   C   r~  r  r  r+   r-   r-   r.   _GetModelParameters_to_vertex0	  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 
N	page_size_querypageSize
page_token	pageTokenfilter
query_baser   
models_urlr(   r*   r   t_models_urlr+   r-   r-   r.   _ListModelsConfig_to_mldevC	  (   
r  c              	   C   r  r  r  r+   r-   r-   r.   _ListModelsConfig_to_vertexc	  r  r  c                 C   6   i }t |dgd urt|dgt| t |dg| |S Nr   )r(   r*   r  r+   r-   r-   r.   _ListModelsParameters_to_mldev	  r   r  c                 C   r  r  )r(   r*   r  r+   r-   r-   r.   _ListModelsParameters_to_vertex	  r   r  c                 C   T   i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg |S Ndisplay_namedisplayNamerT   r2   r+   r-   r-   r.   _UpdateModelConfig_to_mldev	     r  c                 C   r  r  r2   r+   r-   r-   r.   _UpdateModelConfig_to_vertex	  r  r  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 r  )r(   r*   r   r   r  r+   r-   r-   r.   _UpdateModelParameters_to_mldev	      r  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   r  r+   r-   r-   r.    _UpdateModelParameters_to_vertex	  r  r  c              	   C   r~  r  r  r+   r-   r-   r.   _DeleteModelParameters_to_mldev	  r  r  c              	   C   r~  r  r  r+   r-   r-   r.    _DeleteModelParameters_to_vertex
  r  r  c                    s   i t |dgd urt|ddgt t t |dg t |dgd ur:t|ddg fddt |dgD  t |dgd urFtdS )	Nr   generateContentRequestr   r   c                    r7   r-   )r   r8   r;   r-   r.   r<   5
  r=   z/_CountTokensConfig_to_mldev.<locals>.<listcomp>generation_configz;generation_config parameter is not supported in Gemini API.)r(   r*   r@   r   r   r)   r?   r-   r;   r.   _CountTokensConfig_to_mldev
  s0   

	r  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<   Y
  r=   z0_CountTokensConfig_to_vertex.<locals>.<listcomp>r  r   )r(   r*   rB   r   r   r?   r-   r;   r.   _CountTokensConfig_to_vertexC
  s4   

	
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 )Nr   r   r   c                    r7   r-   r   r8   r;   r-   r.   r<   z
  r=   z3_CountTokensParameters_to_mldev.<locals>.<listcomp>r   )r(   r*   r   r   r   r  r?   r-   r;   r.   _CountTokensParameters_to_mldevi
  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   r  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  
enum_valuec                 C       | t dgv rt|  dd S )N
BLOCK_NONE+ enum value is not supported in Gemini API.setr)   r  r-   r-   r.   r   
     r   c                 C   r  )N	ALLOW_ALLr  r  r  r-   r-   r.   r!  
  r  r!  c                 C   "   | t g dv rt|  dd S )N)MASK_MODE_DEFAULTMASK_MODE_USER_PROVIDEDMASK_MODE_BACKGROUNDMASK_MODE_FOREGROUNDMASK_MODE_SEMANTICr  r  r  r-   r-   r.   )_MaskReferenceMode_to_mldev_enum_validate
  s   r  c                 C   r  )N)CONTROL_TYPE_DEFAULTCONTROL_TYPE_CANNYCONTROL_TYPE_SCRIBBLECONTROL_TYPE_FACE_MESHr  r  r  r-   r-   r.   ,_ControlReferenceType_to_mldev_enum_validate
     r  c                 C   r  )N)SUBJECT_TYPE_DEFAULTSUBJECT_TYPE_PERSONSUBJECT_TYPE_ANIMALSUBJECT_TYPE_PRODUCTr  r  r  r-   r-   r.   ,_SubjectReferenceType_to_mldev_enum_validate  r  r  c                 C   r  )N)EDIT_MODE_DEFAULTEDIT_MODE_INPAINT_REMOVALEDIT_MODE_INPAINT_INSERTIONEDIT_MODE_OUTPAINTEDIT_MODE_CONTROLLED_EDITINGEDIT_MODE_STYLEEDIT_MODE_BGSWAPEDIT_MODE_PRODUCT_IMAGEr  r  r  r-   r-   r.   rg    s   
rg  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_vertexI  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_mldevu  rA   r  c                    r5   )Nr6   c                    r7   r-   )r  r8   r;   r-   r.   r<     r=   z(_Content_from_vertex.<locals>.<listcomp>r>   r2   r?   r-   r;   r.   _Content_from_vertex  rA   r  c                 C   r   )N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_metadata
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  finishMessage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                       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!      
	r  c                    r  )
Nr  c                    r7   r-   )r  r8   r;   r-   r.   r<   G  r=   z8_GenerateContentResponse_from_vertex.<locals>.<listcomp>r  r  r  r  r  r  r2   r?   r-   r;   r.   $_GenerateContentResponse_from_vertex=  r  r  c                 C   rn   ro   r-   r+   r-   r-   r.   &_ContentEmbeddingStatistics_from_mldevY  rq   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_vertexc  s   r  c                 C   r  )Nvaluesr2   r+   r-   r-   r.   _ContentEmbedding_from_mldevr  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_vertex~  s   r  c                 C   rn   ro   r-   r+   r-   r-   r.    _EmbedContentMetadata_from_mldev  rq   r  c                 C   r   )NbillableCharacterCountbillable_character_countr2   r+   r-   r-   r.   !_EmbedContentMetadata_from_vertex  rN  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 )Nr0  r/  r   r   r5  r+   r-   r-   r.   _Image_from_mldev  s   r  c              	   C   r3  )Nr4  r.  r0  r/  r   r   r5  r+   r-   r-   r.   _Image_from_vertex  r7  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 )N_selfrw  raiFilteredReasonrai_filtered_reason)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r?t|dgt |dg |S )Nr	  rw  r
  r  r)  enhanced_prompt)r(   r*   r  r+   r-   r-   r.   _GeneratedImage_from_vertex&  s    
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<   J  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_vertexS  r  r  c                    r  )Nr  r  c                    r7   r-   r  r8   r;   r-   r.   r<   p  r=   z1_EditImageResponse_from_mldev.<locals>.<listcomp>r2   r?   r-   r;   r.   _EditImageResponse_from_mldevf  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_vertexy  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   rn   ro   r-   r+   r-   r-   r.   _Endpoint_from_mldev  rq   r  c                 C   rF  )Nendpointrj   deployedModelIddeployed_model_idr2   r+   r-   r-   r.   _Endpoint_from_vertex  s   r  c                 C   r=  )N	baseModel
base_model
createTimecreate_time
updateTimeupdate_timer2   r+   r-   r-   r.   _TunedModelInfo_from_mldev  rh   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 )Nrj   r  r  rT   versionr	  tuned_model_infoinputTokenLimitinput_token_limitoutputTokenLimitoutput_token_limitsupportedGenerationMethodssupported_actions)r(   r*   r&  r+   r-   r-   r.   _Model_from_mldev  sD   

r0  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 )Nrj   r  r  rT   	versionIdr(  deployedModels	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_vertex)  s8   
	r4  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-   )r0  r8   r;   r-   r.   r<   a  r=   z2_ListModelsResponse_from_mldev.<locals>.<listcomp>r(   r*   r   t_extract_modelsr?   r-   r;   r.   _ListModelsResponse_from_mldevT     r;  c              
      r5  )Nr6  r7  r	  r8  c                    r7   r-   )r4  r8   r;   r-   r.   r<   y  r=   z3_ListModelsResponse_from_vertex.<locals>.<listcomp>r9  r?   r-   r;   r.   _ListModelsResponse_from_vertexl  r<  r=  c                 C   rn   ro   r-   r+   r-   r-   r.   _DeleteModelResponse_from_mldev  rq   r>  c                 C   rn   ro   r-   r+   r-   r-   r.    _DeleteModelResponse_from_vertex  rq   r?  c                 C   rF  )NtotalTokenstotal_tokenscachedContentTokenCountcached_content_token_countr2   r+   r-   r-   r.   _CountTokensResponse_from_mldev  ry   rD  c                 C   r   )Nr@  rA  r2   r+   r-   r-   r.    _CountTokensResponse_from_vertex  r   rE  c                 C   r   N
tokensInfotokens_infor2   r+   r-   r-   r.   !_ComputeTokensResponse_from_mldev  r   rI  c                 C   r   rF  r2   r+   r-   r-   r.   "_ComputeTokensResponse_from_vertex  r   rJ  c                   @   s  e Zd Zdddedeejejf deej	 dej
fddZdddedeejejf deej	 deej
 fd	d
Zdddedeejejf deej dejfddZdddededeej dejfddZdddededeej deej dejf
ddZdddedejdedeej dejf
ddZdddedeej dejfddZdddeej  dej!fddZ"dddedeej# dejfddZ$dddedeej% dej&fddZ'dddedeejejf deej( dej)fdd Z*dddedeejejf deej+ dej,fd!d"Z-ddd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jdedeej0 dejf
d'd(Z1dddeej  de2ej fd)d*ZdS )+ModelsNr   r   r   r   r   c                C   s  t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r9| dt| }|	dd  d }t
|trM|dd }nt|drU|j}t|}t|}| jd|||}	| jjrst| j|	}	nt| j|	}	t jj|	|d	}
| j|
 |
S 
Nr   r   r   z{model}:generateContentr   r  ?r   http_optionspostri   kwargs)r   _GenerateContentParameters_api_clientvertexair   
format_mapgetr   r   pop
isinstancedicthasattrrP  r   convert_to_dictencode_unserializable_typesrequestr  r  GenerateContentResponse_from_response_verify_responseselfr   r   r   parameter_modelrequest_dictpathquery_paramsrP  response_dictreturn_valuer-   r-   r.   _generate_content  sP   




zModels._generate_contentc                c   s    t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r:| dt| }|	dd  d }t
|trN|dd }nt|drV|j}t|}t|}| jd|||D ]$}	| jjrvt| j|	}	nt| j|	}	t jj|	|d	}
| j|
 |
V  qid S )
NrN  %{model}:streamGenerateContent?alt=sser   r  rO  r   rP  rQ  rR  )r   rT  rU  rV  r   rW  rX  r   r   rY  rZ  r[  r\  rP  r   r]  r^  request_streamedr  r  r`  ra  rb  rc  r-   r-   r.   _generate_content_stream
  s\   




zModels._generate_content_streamc                C   s  t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r9| dt| }|	dd d}t
|trM|d	d}nt|d	rU|j}t|}t|}| jd
|||}	| jjrst| 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
          },
      )
    rN  {model}:predictr   z{model}:batchEmbedContentsr  rO  r   NrP  rQ  rR  )r   _EmbedContentParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r  r  EmbedContentResponsera  rb  rc  r-   r-   r.   embed_contentG  P   




zModels.embed_contentr)  c                C     t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r9| dt| }|	dd d}t
|trM|dd}nt|drU|j}t|}t|}| jd	|||}	| jjrst| 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-001',
        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   rp  r   r  rO  r   NrP  rQ  rR  )r   _GenerateImagesParametersrU  rV  r-  rW  rX  r+  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r  r  GenerateImagesResponsera  rb  rd  r   r)  r   re  rf  rg  rh  rP  ri  rj  r-   r-   r.   generate_images  rt  zModels.generate_imagesrk  c                C      t j||||d}| jjstdt| j|}d|d}|d}|r/| dt| }|	dd d}	t
|trC|d	d}	nt|d	rK|j}	t|}t|}| jd
|||	}
| jjrit| j|
}
nt| j|
}
t jj|
|d}| j| |S aU  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-preview-0930',
        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)  rk  r   6This method is only supported in the Vertex AI client.rp  r   r  rO  r   NrP  rQ  rR  )r   _EditImageParametersrU  rV  r)   ro  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r  r  EditImageResponsera  rb  rd  r   r)  rk  r   re  rf  rg  rh  rP  ri  rj  r-   r-   r.   
edit_image  sL   2




zModels.edit_imagerw  rx  c                C   r{  a  Upscales an image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (_UpscaleImageAPIConfig): Configuration for upscaling.
    r   rw  rx  r   r}  rp  r   r  rO  r   NrP  rQ  rR  )r   _UpscaleImageAPIParametersrU  rV  r)   r}  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r  r  UpscaleImageResponsera  rb  rd  r   rw  rx  r   re  rf  rg  rh  rP  ri  rj  r-   r-   r.   _upscale_imageJ  sL   




zModels._upscale_imagec          
      C     t j||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r8| dt| }|	dd  d }t
|trL|dd }nt|drT|j}t|}t|}| jd|||}| jjrrt| j|}nt| j|}t jj||d	}	| j|	 |	S 
Nr   r   {name}r   r  rO  r   rP  rX  rR  )r   _GetModelParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r4  r0  Modelra  rb  
rd  r   r   re  rf  rg  rh  rP  ri  rj  r-   r-   r.   rX    sF   




z
Models.getc          	      C   s  t j|d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r7| dt| }|	dd  d }t
|trK|dd }nt|drS|j}t|}t|}| jd|||}| jjrqt| j|}nt| j|}t jj||d	}| j| |S 
NrL  z{models_url}r   r  rO  r   rP  rX  rR  )r   _ListModelsParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r=  r;  ListModelsResponsera  rb  	rd  r   re  rf  rg  rh  rP  ri  rj  r-   r-   r.   _list  sL   




zModels._listc          
      C   s  t j||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r8| dt| }|	dd  d }t
|trL|dd }nt|drT|j}t|}t|}| jd	|||}| jjrrt| j|}nt| j|}t jj||d
}	| j|	 |	S Nr  z{model}r   r  r  rO  r   rP  patchrR  )r   _UpdateModelParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r4  r0  r  ra  rb  r  r-   r-   r.   update  sF   




zModels.updatec          
      C   r  
Nr  r  r   r  rO  r   rP  deleterR  )r   _DeleteModelParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  r?  r>  DeleteModelResponsera  rb  r  r-   r-   r.   r  "  sN   




zModels.deletec                C   ru  a;  Counts the number of tokens in the given content.

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

    Usage:

    .. code-block:: python

      response = client.models.count_tokens(
          model='gemini-1.5-flash',
          contents='What is your name?',
      )
      print(response)
      # total_tokens=5 cached_content_token_count=None
    rN  z{model}:countTokensr   r  rO  r   NrP  rQ  rR  )r   _CountTokensParametersrU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  rE  rD  CountTokensResponsera  rb  rc  r-   r-   r.   count_tokensY  sP   




zModels.count_tokensc                C   s   t j|||d}| jjstdt| j|}d|d}|d}|r.| dt| }|	dd d}t
|trB|d	d}nt|d	rJ|j}t|}t|}| jd
|||}	| jjrht| j|	}	nt| j|	}	t jj|	|d}
| j|
 |
S aT  Return a list of tokens based on the input text.

    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. Only
        text is supported.

    Usage:

    .. code-block:: python

      response = client.models.compute_tokens(
          model='gemini-1.5-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'?'])]
    rN  r}  z{model}:computeTokensr   r  rO  r   NrP  rQ  rR  )r   _ComputeTokensParametersrU  rV  r)   r  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r_  rJ  rI  ComputeTokensResponsera  rb  rc  r-   r-   r.   compute_tokens  sJ   




zModels.compute_tokensc                C   sR  t |r| j|||dS t |}td| d g }d}d}|dkr|d7 }| j|||d}td| d |d8 }|dkrGtd	 t |}|sOnP|sRnM|jrb|jd jrb|jd jj	scn<t 
||}	|	sln3|jd j}
tjd
|	d}t| j|}|s|| ||
 || ||
 || |dks%t |r||_|S )a9  Makes an API request to generate content using a model.

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

    For the `model` parameter, supported format for Gemini API includes:
    - the Gemini model ID, for example: 'gemini-1.5-flash-002'
    - the model name starts with 'models/', for example:
      'models/gemini-1.5-flash-002'
    - if you would like to use a tuned model, 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-1.5-flash-002',
        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-1.5-flash-002',
        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.
    rN  &AFC is enabled with max remote calls: .Nr   r	   AFC remote call 	 is done.8Reached max remote calls for automatic function calling.userr>   r6   r   should_disable_afcrk  get_max_remote_calls_afclogginginfoget_function_mapr  r   r6   get_function_response_partsr   Contentr   r   rU  extendappendshould_append_afc_history"automatic_function_calling_history)rd  r   r   r   remaining_remote_calls_afcr  ri   ifunction_mapfunc_response_partsfunc_call_contentfunc_response_contentr-   r-   r.   generate_content  sl   
@










&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ro|	D ]}|
sb|V  qZt ||
}|sm|V  qZn|	D ]}t |r{||_	|V  qqt ||
}|sdS |r|j
r|j
d jr|j
d jjsdS |
sdS |sdS |j
d j}tjd
|d}t| j|}|s|| || || || || |dks-dS dS )au  Makes an API request to generate content using a model and yields the model's response in chunks.

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

    For the `model` parameter, supported format for Gemini API includes:
    - the Gemini model ID, for example: 'gemini-1.5-flash-002'
    - the model name starts with 'models/', for example:
      'models/gemini-1.5-flash-002'
    - if you would like to use a tuned model, 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-1.5-flash-002',
        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-1.5-flash-002',
        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.
    rN  Nr  r  r   r	   r  r  r  r  r  )r   r  rn  r  r  r  r  r  r  r  r  r   r6   r   r  r   r   rU  r  r  )rd  r   r   r   r  r  chunkr  r  ri   r  r  r  r-   r-   r.   generate_content_streamj  s   
@










zModels.generate_content_streamc                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.
    r  upscaleru   r	   r  Nr-   r   UpscaleImageParametersrZ  r[  _UpscaleImageAPIConfigDictr  rd  r   rw  rx  r   
config_dct
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' ...
    rL  NT&filter=labels.tune-type:*labels.tune-type:*r8  )r   r  r   ListModelsConfigr  rU  rV  copyr  r   r  rd  r   filter_valuer-   r-   r.   list3  s&   


zModels.list)3__name__
__module____qualname__strr   r   ContentListUnionContentListUnionDictr   GenerateContentConfigOrDictr`  rk  r   rn  EmbedContentConfigOrDictrr  rs  GenerateImagesConfigOrDictrx  rz  r  _ReferenceImageAPIOrDictEditImageConfigOrDictr  r  ImageOrDict_UpscaleImageAPIConfigOrDictr  r  GetModelConfigOrDictr  rX  ListModelsConfigOrDictr  r  UpdateModelConfigOrDictr  DeleteModelConfigOrDictr  r  CountTokensConfigOrDictr  r  ComputeTokensConfigOrDictr  r  r  r  UpscaleImageConfigOrDictr  r   r-   r-   r-   r.   rK    s4   
>
B
U
V
i
C
1
7
7
<
R
R
|
 
;rK  c                   @   s  e Zd Zdddedeejejf deej	 dej
fddZdddedeejejf deej	 deeej
  fd	d
Zdddedeejejf deej dejfddZdddededeej dejfddZdddededeej deej dejf
ddZdddedejdedeej dejf
ddZdddedeej dejfddZ dddeej! dej"fddZ#dddedeej$ dejfddZ%dddedeej& dej'fddZ(dddedeejejf deej) dej*fdd Z+dddedeejejf deej, dej-fd!d"Z.ddd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&Z0dddeej! de1ej fd'd(Zdddedejdedeej2 dejf
d)d*Z3dS )+AsyncModelsNrL  r   r   r   r   c                   s  t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r:| dt| }|	dd  d }t
|trN|dd }nt|drV|j}t|}t|}| jd|||I d H }	| jjrwt| j|	}	nt| j|	}	t jj|	|d	}
| j|
 |
S rM  )r   rT  rU  rV  r   rW  rX  r   r   rY  rZ  r[  r\  rP  r   r]  r^  async_requestr  r  r`  ra  rb  rc  r-   r-   r.   rk  h  sR   





zAsyncModels._generate_contentc          	         s   t j|||d jjrtj }d|d}ntj }d|d}|d}|r:| dt| }|	dd  d }t
|trN|dd }nt|drV|j}t|}t|}jd|||I d H  fd	d
}| S )NrN  rl  r   r  rO  r   rP  rQ  c                    s^   2 z(3 d H W } j jrtj | } ntj | } tjj|  d}j | |V  q6 d S )NrR  )rU  rV  r  r  r   r`  ra  rb  )ri  rj  re  response_streamrd  r-   r.   async_generator  s   z=AsyncModels._generate_content_stream.<locals>.async_generator)r   rT  rU  rV  r   rW  rX  r   r   rY  rZ  r[  r\  rP  r   r]  r^  async_request_streamed)	rd  r   r   r   rf  rg  rh  rP  r  r-   r  r.   rn    sF   





z$AsyncModels._generate_content_streamc                   s  t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r:| dt| }|	dd d}t
|trN|d	d}nt|d	rV|j}t|}t|}| jd
|||I dH }	| jjrwt| j|	}	nt| j|	}	t jj|	|d}
| j|
 |
S ro  )r   rq  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r  r  rr  ra  rb  rc  r-   r-   r.   rs    R   





zAsyncModels.embed_contentr)  c                     t j|||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r:| dt| }|	dd d}t
|trN|dd}nt|drV|j}t|}t|}| jd	|||I dH }	| jjrwt| j|	}	nt| j|	}	t jj|	|d
}
| j|
 |
S rv  )r   rw  rU  rV  r-  rW  rX  r+  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r  r  rx  ra  rb  ry  r-   r-   r.   rz  3  r  zAsyncModels.generate_imagesrk  c                     t j||||d}| jjstdt| j|}d|d}|d}|r0| dt| }|	dd d}	t
|trD|d	d}	nt|d	rL|j}	t|}t|}| jd
|||	I dH }
| jjrmt| j|
}
nt| j|
}
t jj|
|d}| j| |S r|  )r   r~  rU  rV  r)   ro  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r  r  r  ra  rb  r  r-   r-   r.   r    sN   2





zAsyncModels.edit_imagerw  rx  c                   r  r  )r   r  rU  rV  r)   r}  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r  r  r  ra  rb  r  r-   r-   r.   r    sN   





zAsyncModels._upscale_imagec          
           t j||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r9| dt| }|	dd  d }t
|trM|dd }nt|drU|j}t|}t|}| jd|||I d H }| jjrvt| j|}nt| j|}t jj||d	}	| j|	 |	S r  )r   r  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r4  r0  r  ra  rb  r  r-   r-   r.   rX  (  sH   





zAsyncModels.getc          	         s  t j|d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r8| dt| }|	dd  d }t
|trL|dd }nt|drT|j}t|}t|}| jd|||I d H }| jjrut| j|}nt| j|}t jj||d	}| j| |S r  )r   r  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r=  r;  r  ra  rb  r  r-   r-   r.   r  X  sN   





zAsyncModels._listc          
         s  t j||d}| jjrt| j|}d|d}nt| j|}d|d}|d}|r9| dt| }|	dd  d }t
|trM|dd }nt|drU|j}t|}t|}| jd	|||I d H }| jjrvt| j|}nt| j|}t jj||d
}	| j|	 |	S r  )r   r  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r4  r0  r  ra  rb  r  r-   r-   r.   r    sH   





zAsyncModels.updatec          
         r  r  )r   r  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  r?  r>  r  ra  rb  r  r-   r-   r.   r    sP   





zAsyncModels.deletec                   r  r  )r   r  rU  rV  r  rW  rX  r  r   rY  rZ  r[  r\  rP  r   r]  r^  r  rE  rD  r  ra  rb  rc  r-   r-   r.   r    sR   





zAsyncModels.count_tokensc                   s  t j|||d}| jjstdt| j|}d|d}|d}|r/| dt| }|	dd d}t
|trC|d	d}nt|d	rK|j}t|}t|}| jd
|||I dH }	| jjrlt| j|	}	nt| j|	}	t jj|	|d}
| j|
 |
S r  )r   r  rU  rV  r)   r  rW  rX  r   rY  rZ  r[  r\  rP  r   r]  r^  r  rJ  rI  r  ra  rb  rc  r-   r-   r.   r  B  sL   





zAsyncModels.compute_tokensc                   sB  t |r| j|||dI dH S t |}td| d g }d}|dkr| j|||dI dH }|d8 }|dkr?td t |}|sGnP|sJnM|jrZ|jd jrZ|jd jj	s[n<t 
||}|sdn3|jd j}	tjd|d	}
t| j|}|s|| ||	 ||
 ||	 ||
 |dks't |r||_|S )
a2  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-1.5-flash-002',
          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.
    rN  Nr  r  r   r	   r  r  r  r  )rd  r   r   r   r  r  ri   r  r  r  r  r-   r-   r.   r    sh   
$










%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 format for Vertex AI API includes:
    - the Gemini model ID, for example: 'gemini-1.5-flash-002'
    - the full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-1.5-flash-002'
    - the partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-1.5-flash-002' or
      'publishers/meta/models/llama-3.1-405b-instruct-maas'
    - `/` separated publisher and model name, for example:
      'google/gemini-1.5-flash-002' or 'meta/llama-3.1-405b-instruct-maas'

    For the `model` parameter, supported format for Gemini API includes:
    - the Gemini model ID, for example: 'gemini-1.5-flash-002'
    - the model name starts with 'models/', for example:
      'models/gemini-1.5-flash-002'
    - if you would like to use a tuned model, 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-1.5-flash-002',
        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-1.5-flash-002',
        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.
    rN  Nc                   s     2 z	3 d H W }|V  q6 d S ro   r-   )r   r   r   r  )ri   r-   r.   base_async_generator-  s   zAAsyncModels.generate_content_stream.<locals>.base_async_generatorc                   s  t |}td| d g }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rc|2 z3 d H W }|sU|V  qIt ||}	|	s`|V  qI6 n|2 z3 d H W }t |rs||_|V  qe6 t ||}	|sd S |r|j	r|j	d j
r|j	d j
jsd S |sd S |	sd S |j	d j
}
tjd	|	d
}t j|}|s|| ||
 || ||
 || |dksd S d S )Nr  r  r   r	   rN  r  r  r  r  r  )r   r  r  r  rn  r  r  r  r  r  r   r6   r   r  r   r   rU  r  r  )r   r   r   r  r  r  r  ri   r  r  r  r  )rd  r-   r.   r  3  s   









z<AsyncModels.generate_content_stream.<locals>.async_generator)r   r  rn  )rd  r   r   r   r  r  r-   )ri   rd  r.   r    s   
@Mz#AsyncModels.generate_content_streamc                   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' ...
    rL  NTr  r  r8  )r   r  r   r  r  rU  rV  r  r  r   r  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.
    r  r  ru   r	   r  Nr-   r  r  r-   r-   r.   r    s$   !zAsyncModels.upscale_image)4r  r  r  r  r   r   r  r  r   r  r`  rk  r   r   rn  r  rr  rs  r  rx  rz  r  r  r  r  r  r  r  r  r  r  r  rX  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r-   r-   r-   r.   r  f  s4   
>
G
U
V
i
C
1
7
7
<
R
R
^
 
:r  ro   )r  typingr   r   r   r   r   r   urllib.parser    r
   r   r   r   r   r   rU  r   r   r(   r   r*   pagersr   r   r[  objectr/   r3   r@   rB   rZ   rb   rf   rg   rl   rm   rp   rr   rx   rz   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-  r2  r6  r<  rA  rE  rI  rK  rM  rQ  rT  r\  rd  rh  ri  rm  ro  rr  rt  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  rg  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'  r0  r4  r;  r=  r>  r?  rD  rE  rI  rJ  
BaseModulerK  r  r-   r-   r-   r.   <module>   s	   

/

/





R

R





















0

0

























 )

 '

(

(

$

,

(

#

l

r

























+

?

g

d

)

)

,

,

*

*





#

#

















'

)

(

(







-

/









7

7
















































4
.







          