o
    pkj                    @   s*  d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z m!Z! e"dZ#deddfddZ$		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ(		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ)		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ*		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdd Z+		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d"d#Z,		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd$d%Z-		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd&d'Z.		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd(d)Z/		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd*d+Z0		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd,d-Z1		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd.d/Z2		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd0d1Z3		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd2d3Z4		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd4d5Z5		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d6d7Z6		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d8d9Z7		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd:d;Z8		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd<d=Z9		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d>d?Z:		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d@dAZ;		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdBdCZ<		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdDdEZ=		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdFdGZ>		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dHdIZ?		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdJdKZ@		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdLdMZA		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdNdOZB		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dPdQZC		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dRdSZD		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdTdUZE		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdVdWZF		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdXdYZG		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdZd[ZH		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd\d]ZI		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd^d_ZJ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d`daZK		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dbdcZL		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dddeZM		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dfdgZN		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdhdiZO		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdjdkZP		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdldmZQ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dndoZR		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdpdqZS		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdrdsZT		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdtduZU		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdvdwZV		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdxdyZW		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
dzd{ZX		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
d|d}ZY		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd~dZZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ[		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ\		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ]		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ^		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ_		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ`		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZa		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZb		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZc		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZd		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZe		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZf		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZg		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZh		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZi		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZj		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZk		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZl		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZm		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZn		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZo		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZp		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZq		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZr		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZs		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZt		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZu		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZv		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZw		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZx		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZy		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZz		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZ{		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddÄZ|		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddńZ}		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddǄZ~		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddɄZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdd˄Z		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdd̈́Z		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddτZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddфZ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddӄZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddՄZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddׄZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddلZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddۄZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdd݄Z		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fdd߄Z		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dd!ede
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef f
ddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fddZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef fd dZ		dde
e%e&ef e'f de	e%e&ef  de	e
e%e&ef e'f  de%e&ef 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)_base_transformers)_common)_extra_utils)
_mcp_utils)_transformers)errors)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.models
enum_valuereturnc                 C   s    | t dgv rt|  dd S )NSTYLEzi enum value is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.)set
ValueError)r    r   Q/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/google/genai/models.py4_VideoGenerationReferenceType_to_mldev_enum_validate*   s
   r   from_objectparent_objectroot_objectc                 C   s   i }t | dgd urt|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r9tdt | d	gd urEtd
t | dgd urQtdt | dgd ur]td|S )Napi_keyapiKeyapi_key_configzvapi_key_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.	auth_typezqauth_type parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.google_service_account_configzgoogle_service_account_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.http_basic_auth_configz~http_basic_auth_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.oauth_configztoauth_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.oidc_configzsoidc_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.getvsetvr   r   r    r!   	to_objectr   r   r   _AuthConfig_to_mldev4   s8   r/   c                 C   sl   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur4t|dgt | dg |S )Ndatadisplay_nametdisplay_name parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.	mime_typemimeTyper*   r-   r   r   r   _Blob_to_mldevd      r5   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|| t | dgd ur?t|dgt | dg t | dgd urRt|dgt | dg t | dgd uret|d	g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 t | dgd urt|dgdd t | dgD  t | dgd urt|dgt | dg |S )NcontentcitationMetadatacitation_metadata
tokenCounttoken_countfinishReasonfinish_reasongroundingMetadatagrounding_metadataavgLogprobsavg_logprobsindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratingsc                 S      g | ]}|qS r   r   .0itemr   r   r   
<listcomp>       z)_Candidate_from_mldev.<locals>.<listcomp>urlContextMetadataurl_context_metadata)r+   r,   _CitationMetadata_from_mldevr-   r   r   r   _Candidate_from_mldevy   sP   

rP   c                 C   s8   i }t | dgd urt|dgdd t | dgD  |S )NcitationSources	citationsc                 S   rG   r   r   rH   r   r   r   rK      rL   z0_CitationMetadata_from_mldev.<locals>.<listcomp>r+   r,   r-   r   r   r   rO      s   rO   
api_clientc              	      st   i t |dgd urtddgt| t |dg t |dgd ur8tdg fddtt |dgD  S )Nmodel_urlcontentsc                       g | ]}t | qS r   _Content_to_vertexrH   r!   r.   r   r   rK          
z6_ComputeTokensParameters_to_vertex.<locals>.<listcomp>)r+   r,   tt_model
t_contentsrT   r   r    r!   r   r[   r   "_ComputeTokensParameters_to_vertex   s    	ra   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dd t | dgD  |S )NsdkHttpResponsesdk_http_response
tokensInfotokens_infoc                 S   rG   r   r   rH   r   r   r   rK      rL   z6_ComputeTokensResponse_from_vertex.<locals>.<listcomp>rS   r-   r   r   r   "_ComputeTokensResponse_from_vertex   s   rf   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rGtd|S )Nenvironmentexcluded_predefined_functionsexcludedPredefinedFunctions!enable_prompt_injection_detectionenablePromptInjectionDetectiondisabled_safety_policieszdisabled_safety_policies parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r*   r-   r   r   r   _ComputerUse_to_vertex   s(   

rm   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dd t | dgD  |S )N	truncatedr;   tokensDetailstokens_detailsc                 S   rG   r   r   rH   r   r   r   rK   "  rL   z;_ContentEmbeddingStatistics_from_vertex.<locals>.<listcomp>rS   r-   r   r   r   '_ContentEmbeddingStatistics_from_vertex  s   rq   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 )Nvalues
statistics)r+   r,   rq   r-   r   r   r   _ContentEmbedding_from_vertex(     rt   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                    rX   r   )_Part_to_mldevrH   r[   r   r   rK   G  r\   z%_Content_to_mldev.<locals>.<listcomp>rolerS   r   r    r!   r   r[   r   _Content_to_mldev=     
	r{   c                    rv   )Nrw   c                    rX   r   )_Part_to_vertexrH   r[   r   r   rK   ]  r\   z&_Content_to_vertex.<locals>.<listcomp>ry   rS   rz   r   r[   r   rZ   S  r|   rZ   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control_typecontrolType enable_control_image_computationcomputeControlrS   r-   r   r   r   !_ControlReferenceConfig_to_vertexi  s   
r   c                 C   sP   i }t | dgd urtdt | dgd urtdt | dgd ur&td|S )Nsystem_instructionzzsystem_instruction parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.toolszmtools parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.generation_configzygeneration_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r+   r   r-   r   r   r   _CountTokensConfig_to_mldev|  s   r   c              	      s   i t | dgd urt|dgttt | dg  t | dgd ur7t|dg fddt | dgD  t | dgd urNt|dgtt | dg  S )Nr   systemInstructionr   c                    rX   r   )_Tool_to_vertexrH   r[   r   r   rK     r\   z0_CountTokensConfig_to_vertex.<locals>.<listcomp>r   generationConfig)r+   r,   rZ   r]   	t_content_GenerationConfig_to_vertexrz   r   r[   r   _CountTokensConfig_to_vertex  s8   

	r   c              	         i t |dgd urtddgt| t |dg t |dgd ur8tdg fddtt |dgD  t |dgd urJtt |dg  S )NrU   rV   rW   c                    rX   r   r{   rH   r[   r   r   rK     r\   z3_CountTokensParameters_to_mldev.<locals>.<listcomp>config)r+   r,   r]   r^   r_   r   r`   r   r[   r   _CountTokensParameters_to_mldev  (   	r   c              	      r   )NrU   rV   rW   c                    rX   r   rY   rH   r[   r   r   rK     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   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 )Nrb   rc   totalTokenstotal_tokenscachedContentTokenCountcached_content_token_countrS   r-   r   r   r   _CountTokensResponse_from_mldev   s   
r   c                 C   r~   )Nrb   rc   r   r   rS   r-   r   r   r    _CountTokensResponse_from_vertex  s   r   c              	   C   8   i }t |dgd urt|ddgt| t |dg |S NrU   rV   namer+   r,   r]   r^   rT   r   r    r!   r.   r   r   r   _DeleteModelParameters_to_mldev)     r   c              	   C   r   r   r   r   r   r   r    _DeleteModelParameters_to_vertex:  r   r   c                 C   .   i }t | dgd urt|dgt | dg |S Nrb   rc   rS   r-   r   r   r   _DeleteModelResponse_from_mldevK     r   c                 C   r   r   rS   r-   r   r   r    _DeleteModelResponse_from_vertexY  r   r   c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|ddgt | d
g t | dgd urzt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|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r0t|dgt | dg t | dgd urEt|ddgt | dg t | dgd urZt|g d t | dg |S )!Noutput_gcs_uri
parameters
storageUrinegative_promptnegativePromptnumber_of_imagessampleCountaspect_ratioaspectRatioguidance_scaleguidanceScaleseedsafety_filter_levelsafetySettingperson_generationpersonGenerationinclude_safety_attributesincludeSafetyAttributesinclude_rai_reasonincludeRaiReasonlanguageoutput_mime_typer   outputOptionsr4   output_compression_qualityr   r   compressionQualityadd_watermarkaddWatermarklabels	edit_modeeditMode
base_steps)r   
editConfig	baseStepsrS   r-   r   r   r   _EditImageConfig_to_vertexg     














r   c              	      s   i t |dgd urtddgt| t |dg t |dgd ur.tddgt |dg t |dgd urJtddg fddt |dgD  t |d	gd ur\tt |d	g  S )
NrU   rV   promptinstances[0]reference_imagesreferenceImagesc                    rX   r   )_ReferenceImageAPI_to_vertexrH   r[   r   r   rK     r\   z2_EditImageParameters_to_vertex.<locals>.<listcomp>r   )r+   r,   r]   r^   r   r`   r   r[   r   _EditImageParameters_to_vertex  s,   
	r   c                    d   i t | dgd urtdgt | dg t | dgd ur0tdg fddt | dgD  S )Nrb   rc   predictionsgenerated_imagesc                    rX   r   _GeneratedImage_from_vertexrH   r[   r   r   rK     r\   z2_EditImageResponse_from_vertex.<locals>.<listcomp>rS   rz   r   r[   r   _EditImageResponse_from_vertex     
	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
t | dgd urbtdt | dgd urntd|S )N	task_type
requests[]taskTypetitleoutput_dimensionalityoutputDimensionalityr3   zqmime_type parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.auto_truncatezuauto_truncate parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.document_ocrztdocument_ocr parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.audio_track_extractionz~audio_track_extraction parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r*   r-   r   r   r   _EmbedContentConfig_to_mldev  s@   

r   c                 C   s  i }t |dg}|d u rd}|dkr't | dgd ur&t|ddgt | dg n|dkr?t | dgd ur?t|ddgt | dg t |dg}|d u rKd}|dkrdt | dgd urct|ddgt | dg n|dkr|t | dgd ur|t|ddgt | dg t |dg}|d u rd}|dkrt | d	gd urt|d
dgt | d	g n|dkrt | d	gd urt|ddgt | d	g t |dg}|d u rd}|dkrt | dgd urt|ddgt | dg t |dg}|d u rd}|dkrt | dgd urt|d
dgt | dg n|dkrt | dgd urt|ddgt | dg t |dg}|d u r+d}|dkrEt | dgd urEt|ddgt | dg t |dg}|d u rRd}|dkrlt | dgd urlt|ddgt | dg |S )Nembedding_api_typePREDICTr   instances[]EMBED_CONTENTembedContentConfigr   r   r   r   r   r3   r4   r   autoTruncater   documentOcrr   audioTrackExtractionrS   )r   r    r!   r.   discriminatorr   r   r   _EmbedContentConfig_to_vertexM  s   















r   c              
   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur7t|ddgdd t| t |dgD  t |dgd urLttt |dg|| t |dgd ur^tt |dg|| t|ddgt| t |dg |S )	NrU   rV   rW   r   r7   c                 S   rG   r   r   rH   r   r   r   rK         z;_EmbedContentParametersPrivate_to_mldev.<locals>.<listcomp>r   )r+   r,   r]   r^   t_contents_for_embedr{   r   r   r   r   r   r   '_EmbedContentParametersPrivate_to_mldev  s>   r   c              
   C   s
  i }t |dgd urt|ddgt| t |dg t |dg}|d u r&d}|dkrGt |dgd urGt|ddgdd	 t| t |dgD  t |dg}|d u rSd}|d
krqt |dgd urqt|dgttt |dg|| t |dgd urtt |dg|| |S )NrU   rV   r   r   rW   r   r7   c                 S   rG   r   r   rH   r   r   r   rK      r   z<_EmbedContentParametersPrivate_to_vertex.<locals>.<listcomp>r   r   )r+   r,   r]   r^   r   rZ   r   r   )rT   r   r    r!   r.   r   r   r   r   (_EmbedContentParametersPrivate_to_vertex  sP   
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dd t | dgD  t | dgd ur@t|dgt | dg |S )Nrb   rc   
embeddingsc                 S   rG   r   r   rH   r   r   r   rK   .  rL   z4_EmbedContentResponse_from_mldev.<locals>.<listcomp>metadatarS   r-   r   r   r    _EmbedContentResponse_from_mldev  s   r   c                    s"  i t | dgd urtdgt | dg t | ddgd ur2tdg fddt | ddgD  t | dgd urEtdgt | dg t  dgd	krt | d
g}t | dg}t | dg}|ri }|rp|drp|d |d< |r}|dr}|d |d< |r||d< ||d< tdg|g S )Nrb   rc   zpredictions[]r   c                    rX   r   )rt   rH   r[   r   r   rK   F  r\   z5_EmbedContentResponse_from_vertex.<locals>.<listcomp>r   r   r   	embeddingusageMetadatarn   promptTokenCountr;   promptTokensDetailsro   rs   )r+   r,   get)r   r    r!   r   usage_metadatarn   statsr   r[   r   !_EmbedContentResponse_from_vertex7  s<   	r   c                 C   r~   )Nendpointr   deployedModelIddeployed_model_idrS   r-   r   r   r   _Endpoint_from_vertexa  s   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 )Nr1   r2   file_urifileUrir3   r4   )r+   r   r,   r-   r   r   r   _FileData_to_mldevr  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rGtdt | dgd urStd|S )Nidargsr   partial_argsztpartial_args parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.will_continuezuwill_continue parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r*   r-   r   r   r   _FunctionCall_to_mldev  s    r	  c                 C   sl   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r4td|S )Nallowed_function_namesallowedFunctionNamesmodestream_function_call_argumentszstream_function_call_arguments parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r*   r-   r   r   r   _FunctionCallingConfig_to_mldev  s   
r  c              
      s  i t |dgd urt|dgttt |dg t |dgd ur/tdgt |dg t |dgd urBtdgt |dg t |dgd urUtdgt |dg t |dgd urhtd	gt |dg t |d
gd ur{tdgt |d
g 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 |dg t |dgd ur0tdgtt |dg t |dgd ur=tdt |dgd urJtdt |d gd urft|d!gfd"d#t |d gD  t |d$gd urt|d$g fd%d#t t |d$gD  t |d&gd urt|d'gt	t |d&g t |d(gd urtd)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 |d0gd urtd1gtt |d0g t |d2gd urtd3t |d4gd ur$td5gt |d4g t |d6gd ur<td7gtt |d6g t |d8gd urPtd9gt |d8g t |d:gd ur]td;t |d<gd urqt|d=gt |d<g t |d>gd urtd?gt |d>g S )@Nr   r   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frequencyPenaltyr   response_mime_typeresponseMimeTyperesponse_schemaresponseSchemaresponse_json_schemaresponseJsonSchemarouting_configzvrouting_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.model_selection_configz~model_selection_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.safety_settingssafetySettingsc                    rX   r   )_SafetySetting_to_mldevrH   r[   r   r   rK   #  r\   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>r   c                        g | ]}t t |qS r   )_Tool_to_mldevr]   t_toolrH   rT   r!   r.   r   r   rK   -      tool_config
toolConfigr   nlabels parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.cached_contentcachedContentresponse_modalitiesresponseModalitiesmedia_resolutionmediaResolutionspeech_configspeechConfigaudio_timestampzwaudio_timestamp parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.thinking_configthinkingConfigimage_configimageConfigenable_enhanced_civic_answersenableEnhancedCivicAnswersmodel_armor_configzzmodel_armor_config parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.service_tierserviceTieraudio_transcription_configaudioTranscriptionConfig)r+   r,   r{   r]   r   t_schemat_json_schemar   t_tools_ToolConfig_to_mldevt_cached_content_namet_speech_config_ImageConfig_to_mldevr`   r   r/  r   _GenerateContentConfig_to_mldev  s8  




		


rO  c              
      sH  i t |dgd urt|dgttt |dg t |dgd ur/tdgt |dg t |dgd urBtdgt |dg t |dgd urUtdgt |dg t |dgd urhtd	gt |dg t |d
gd ur{tdgt |d
g 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 |dg t |dgd ur0tdgtt |dg t |dgd urDtdgt |dg t |dgd urXtdgt |dg t |d gd urqt|d!gd"d# t |d gD  t |d$gd urt|d$g fd%d#t t |d$gD  t |d&gd urt|d'gtt |d&g t |d(gd urt|d(gt |d(g t |d)gd urt|d*gt	 t |d)g t |d+gd urtd,gt |d+g t |d-gd urtd.gt |d-g t |d/gd urtd0gt
tt |d/g t |d1gd ur-td2gt |d1g t |d3gd urAtd4gt |d3g t |d5gd urYtd6gtt |d5g t |d7gd urftd8t |d9gd urzt|d:gt |d9g 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  r  r  r  r  r  r   r   r!  r"  r#  r$  r%  r&  r'  routingConfigr(  modelConfigr)  r*  c                 S   rG   r   r   rH   r   r   r   rK     rL   z4_GenerateContentConfig_to_vertex.<locals>.<listcomp>r   c                    r,  r   )r   r]   r.  rH   r/  r   r   rK     r0  r1  r2  r   r4  r5  r6  r7  r8  r9  r:  r;  r<  audioTimestampr=  r>  r?  r@  rA  enable_enhanced_civic_answers parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.rC  modelArmorConfigrD  rE  rF  rG  )r+   r,   rZ   r]   r   rH  rI  rJ  _ToolConfig_to_vertexrL  _SpeechConfig_to_vertexrM  _ImageConfig_to_vertexr   r`   r   r/  r    _GenerateContentConfig_to_vertex  s4  




	



rX  c              	         i t |dgd urtddgt| t |dg t |dgd ur8tdg fddtt |dgD  t |dgd urPtdgt| t |dg  S )NrU   rV   rW   c                    rX   r   r   rH   r[   r   r   rK   a  r\   z7_GenerateContentParameters_to_mldev.<locals>.<listcomp>r   r   )r+   r,   r]   r^   r_   rO  r`   r   r[   r   #_GenerateContentParameters_to_mldevO  0   	rZ  c              	      rY  )NrU   rV   rW   c                    rX   r   rY   rH   r[   r   r   rK     r\   z8_GenerateContentParameters_to_vertex.<locals>.<listcomp>r   r   )r+   r,   r]   r^   r_   rX  r`   r   r[   r   $_GenerateContentParameters_to_vertexs  r[  r\  c                    s"  i t | dgd urtdgt | dg t | dgd ur0tdg fddt | dgD  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 S )Nrb   rc   
candidatesc                    rX   r   )rP   rH   r[   r   r   rK     r\   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>modelVersionmodel_versionpromptFeedbackprompt_feedback
responseIdresponse_idr   r   modelStatusmodel_statusrS   rz   r   r[   r   #_GenerateContentResponse_from_mldev  s0   
	rf  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dd t | dgD  t | dgd ur@t|dgt | dg t | dgd urSt|d	gt | dg t | d
gd urft|dgt | d
g t | dgd uryt|dgt | dg t | dgd urt|dgt | dg |S )Nrb   rc   r]  c                 S   rG   r   r   rH   r   r   r   rK     rL   z8_GenerateContentResponse_from_vertex.<locals>.<listcomp>
createTimecreate_timer^  r_  r`  ra  rb  rc  r   r   rS   r-   r   r   r   $_GenerateContentResponse_from_vertex  s,   ri  c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|ddgt | d
g t | dgd urzt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|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r0t|dgt | dg t | dgd urEt|ddgt | dg t | dgd urZt|dd gt | dg |S )!Nr   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   
image_sizesampleImageSizeenhance_promptenhancePromptrS   r-   r   r   r   _GenerateImagesConfig_to_vertex  r   rn  c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur.t|ddgt |dg t |dgd ur@tt |dg|| |S )NrU   rV   r   r   r   )r+   r,   r]   r^   rn  r   r   r   r   #_GenerateImagesParameters_to_vertex[  s   ro  c                    s   i t | dgd urtdgt | dg t | dgd ur0tdg fddt | dgD  t | dgd urGtdgtt | dg  S )	Nrb   rc   r   r   c                    rX   r   r   rH   r[   r   r   rK     r\   z7_GenerateImagesResponse_from_vertex.<locals>.<listcomp>positivePromptSafetyAttributes!positive_prompt_safety_attributes)r+   r,   _SafetyAttributes_from_vertexrz   r   r[   r   #_GenerateImagesResponse_from_vertext  s0   
	

rs  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rvt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urtdt | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urtdt | dgd urt|ddgtt | dg  t | dgd urt|d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#t | d$gd ur%td%t | d&gd ur9t|d'gt | d&g t | d(gd urFtd)S )*Nnumber_of_videosr   r   r   zvoutput_gcs_uri parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.fpszkfps parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.duration_secondsdurationSecondsr   zlseed parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r   r   
resolutionr   r   pubsub_topicztpubsub_topic parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r   r   rl  rm  generate_audiozvgenerate_audio parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.
last_framer   	lastFramer   r   c                    rX   r   )'_VideoGenerationReferenceImage_to_mldevrH   r[   r   r   rK         z2_GenerateVideosConfig_to_mldev.<locals>.<listcomp>maskzlmask parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.compression_qualityz{compression_quality parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r   r3  webhook_configwebhookConfigresize_modezsresize_mode parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.)r+   r,   r   _Image_to_mldevrz   r   r[   r   _GenerateVideosConfig_to_mldev  s   







r  c                    s  i t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|ddgt | dg t | d	gd urft|dd	gt | d	g t | d
gd urzt|ddgt | d
g t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|ddgtt | dg  t | dgd ur(t|ddg fddt | dgD  t | dgd urAt|ddgtt | dg  t | dgd urVt|dd gt | dg t | d!gd urjt|d!gt | d!g t | d"gd urwtd#t | d$gd urt|dd%gt | d$g S )&Nrt  r   r   r   r   ru  rv  rw  r   r   r   rx  r   r   ry  pubsubTopicr   r   rl  rm  rz  generateAudior{  r   r|  r   r   c                    rX   r   )(_VideoGenerationReferenceImage_to_vertexrH   r[   r   r   rK     r~  z3_GenerateVideosConfig_to_vertex.<locals>.<listcomp>r  r  r   r   r  zvwebhook_config parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r  
resizeMode)r+   r,   _Image_to_vertex_VideoGenerationMask_to_vertexr   rz   r   r[   r   _GenerateVideosConfig_to_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dgd urgt|dgtt | ddg|| t | ddgd urt|dgtt | ddg|| |S )Nr   r   doneerrorresponsegenerateVideoResponseresult)r+   r,   "_GenerateVideosResponse_from_mldevr-   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ret|dgtt | dg|| t | dgd ur|t|dgtt | dg|| |S )Nr   r   r  r  r  r  )r+   r,   #_GenerateVideosResponse_from_vertexr-   r   r   r   $_GenerateVideosOperation_from_vertex  s4   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dgtt |dg|| t |dgd urptt |dg|| t |dgd urtt |dg|| |S 	NrU   rV   r   r   imagevideosourcer   )r+   r,   r]   r^   r  _Video_to_mldev_GenerateVideosSource_to_mldevr  r   r   r   r   "_GenerateVideosParameters_to_mldev  <   r  c              	   C   r  r  )r+   r,   r]   r^   r  _Video_to_vertex_GenerateVideosSource_to_vertexr  r   r   r   r   #_GenerateVideosParameters_to_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 )	NgeneratedSamplesgenerated_videosc                    rX   r   )_GeneratedVideo_from_mldevrH   r[   r   r   rK   a	  r\   z6_GenerateVideosResponse_from_mldev.<locals>.<listcomp>raiMediaFilteredCountrai_media_filtered_countraiMediaFilteredReasonsrai_media_filtered_reasonsrS   rz   r   r[   r   r  W	  ,   
	

r  c                    r  )	Nvideosr  c                    rX   r   )_GeneratedVideo_from_vertexrH   r[   r   r   rK   	  r\   z7_GenerateVideosResponse_from_vertex.<locals>.<listcomp>r  r  r  r  rS   rz   r   r[   r   r  x	  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t | dg|| t | dgd urFt|ddgtt | dg|| |S Nr   r   r  r  )r+   r,   r  r  r-   r   r   r   r  	  $   r  c                 C   r  r  )r+   r,   r  r  r-   r   r   r   r  	  r  r  c                 C   sf   i }t | dgd urt|dgtt | dg|| t | dgd ur1t|dgdd t | dgD  |S )N_selfr  r   c                 S   rG   r   r   rH   r   r   r   rK   	  rL   z3_GeneratedImageMask_from_vertex.<locals>.<listcomp>)r+   r,   _Image_from_vertexr-   r   r   r   _GeneratedImageMask_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 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  r  raiFilteredReasonrai_filtered_reasonsafety_attributesr   enhanced_prompt)r+   r,   r  rr  r-   r   r   r   r   	  s4   
r   c                 C   6   i }t | dgd urt|dgtt | dg|| |S )Nr  )r+   r,   _Video_from_mldevr-   r   r   r   r  
     r  c                 C   6   i }t | dgd urt|dgtt | dg|| |S )Nr  r  )r+   r,   _Video_from_vertexr-   r   r   r   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 t | dgd ur>t|dgt | dg t | dgd urQt|dgt | dg t | d	gd urdt|d
gt | d	g t | dgd urwt|dgt | dg 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r8t|dgt | dg t | dgd urPt|d gtt | dg|| t | d!gd urdt|d"g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 t | d(gd urt|d)gt | d(g t | d*gd urtd+t | d,gd urt|d-gd.d/ t | d,gD  t | d0gd urtd1t | d2gd urt|d3gt | d2g |S )4Nr(  rQ  r%  r&  r<  rR  r  r  enable_affective_dialogenableAffectiveDialogr  r   r  r  r  r8  r9  r  r  r  r  r!  r"  r6  r7  r#  r$  r'  rP  r   r:  r;  r  r  r  r=  r>  r  r  r  r  rA  rS  response_formatresponseFormatc                 S   rG   r   r   rH   r   r   r   rK   
  rL   z/_GenerationConfig_to_vertex.<locals>.<listcomp>translation_configzztranslation_config parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.rF  rG  )r+   r,   r]   rI  rV  r   r-   r   r   r   r   /
  s   






r   c              	   C   r   r   r   r   r   r   r   _GetModelParameters_to_mldev
  r   r  c              	   C   r   r   r   r   r   r   r   _GetModelParameters_to_vertex
  r   r  c                 C   st   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r8td|S )Nauth_config
authConfigenable_widgetenableWidgetgrounding_typeszwgrounding_types parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.)r+   r,   r/   r   r-   r   r   r   _GoogleMaps_to_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t | dgd ur-tdt | dgd ur@t|dgt | dg |S )	Nsearch_typessearchTypesblocking_confidencez{blocking_confidence parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.exclude_domainszwexclude_domains parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.time_range_filtertimeRangeFilterr*   r-   r   r   r   _GoogleSearch_to_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r4tdt | dgd ur@tdt | d	gd urLtd
t | dgd urXtdt | dgd urdtd|S )Nr   r   rj  	imageSizer   zyperson_generation parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.prominent_peoplezxprominent_people parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r   zxoutput_mime_type parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r   zoutput_compression_quality parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.image_output_optionsz|image_output_options parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r*   r-   r   r   r   rN    s4   rN  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rbt|d
dgt | d	g t | dgd urvt|d
dgt | dg t | dgd urt|d
gt | dg |S )Nr   r   rj  r  r   r   r  prominentPeopler   imageOutputOptionsr4   r   r   r  rS   r-   r   r   r   rW  C  sD   



rW  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 )NgcsUrigcs_uribytesBase64Encodedimage_bytesr4   r3   r+   r,   base_tt_bytesr-   r   r   r   r  s     r  c                 C   sr   i }t | dgd urtdt | dgd ur$t|dgtt | dg t | dgd ur7t|dgt | dg |S )Nr  zogcs_uri parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.r  r  r3   r4   )r+   r   r,   r  r  r-   r   r   r   r    s   r  c                 C   r  )Nr  r  r  r  r3   r4   r  r-   r   r   r   r    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_baserV   
models_urlr+   r,   r]   t_models_urlr   r   r   r   _ListModelsConfig_to_mldev  (   
r  c              	   C   r  r  r  r   r   r   r   _ListModelsConfig_to_vertex  r  r  c                 C   .   i }t |dgd urt| t |dg|| |S Nr   )r+   r  r   r   r   r   _ListModelsParameters_to_mldev     r  c                 C   r  r  )r+   r  r   r   r   r   _ListModelsParameters_to_vertex	  r  r  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rFtdg fddtt | dgD  S )	Nrb   rc   nextPageTokennext_page_tokenr  modelsc                    rX   r   )_Model_from_mldevrH   r[   r   r   rK   *  r\   z2_ListModelsResponse_from_mldev.<locals>.<listcomp>r+   r,   r]   t_extract_modelsrz   r   r[   r   _ListModelsResponse_from_mldev      	r  c              	      r  )	Nrb   rc   r  r  r  r  c                    rX   r   )_Model_from_vertexrH   r[   r   r   rK   E  r\   z3_ListModelsResponse_from_vertex.<locals>.<listcomp>r  rz   r   r[   r   _ListModelsResponse_from_vertex3  r  r  c                 C   r   )N	mask_modemaskModesegmentation_classesmaskClassesmask_dilationdilationrS   r-   r   r   r   _MaskReferenceConfig_to_vertexN  s   r  c                 C   s8   i }t | dgd urtdt | dgd urtd|S )Nr   zlname parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.streamable_http_transportzstreamable_http_transport parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r   r-   r   r   r   _McpServer_to_vertexb  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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 |S )Nr   displayNamer1   descriptionversionr  tuned_model_infoinputTokenLimitinput_token_limitoutputTokenLimitoutput_token_limitsupportedGenerationMethodssupported_actionsr  maxTemperaturemax_temperaturer  r  r  r  thinkingrS   r-   r   r   r   r  w  sL   

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  t | dgd urtdgt | dg t | dgd urtdgdd
 t | dgD  S )Nr   r  r1   r  	versionIdr	  deployedModels	endpointsc                    rX   r   )r  rH   r[   r   r   rK     r\   z&_Model_from_vertex.<locals>.<listcomp>r   r  r
  defaultCheckpointIddefault_checkpoint_idcheckpointsc                 S   rG   r   r   rH   r   r   r   rK     rL   )r+   r,   _TunedModelInfo_from_vertexrz   r   r[   r   r    sP   
	
r  c                    >   i t | dgd urtdg fddt | dgD  S )Nspeaker_voice_configsspeakerVoiceConfigsc                    rX   r   )_SpeakerVoiceConfig_to_vertexrH   r[   r   r   rK     r\   z6_MultiSpeakerVoiceConfig_to_vertex.<locals>.<listcomp>rS   rz   r   r[   r   "_MultiSpeakerVoiceConfig_to_vertex     
	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rRt|dgtt | dg|| t | d	gd urit|d
gtt | d	g|| t | dgd ur|t|dgt | dg t | dgd urt|dgt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r.t|dgt | dg t | dgd urBt|dgt | dg |S )Nr8  r9  code_execution_resultcodeExecutionResultexecutable_codeexecutableCode	file_datafileDatafunction_callfunctionCallfunction_responsefunctionResponseinline_data
inlineDatatextthoughtthought_signaturethoughtSignaturevideo_metadatavideoMetadata	tool_calltoolCalltool_responsetoolResponsepart_metadatapartMetadataaudio_transcriptionaudioTranscriptionmedia_processingmediaProcessing)r+   r,   r  r	  r5   r-   r   r   r   rx     s   



rx   c                 C   sB  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t | dgd urtdt | dgd urtd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  r9  r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  zqtool_call parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r5  zutool_response parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r7  zupart_metadata parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r9  r:  r;  r<  r*   r-   r   r   r   r}   \  sx   



r}   c                 C   r  )Nproduct_imager  r+   r,   r  r-   r   r   r   _ProductImage_to_vertex  r  r?  c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|ddgt | dg t | d	gd urft|dd
gt | d	g t | dgd urzt|ddgt | dg t | dgd urt|ddgt | dg t | dgd urt|g dt | dg t | dgd urt|g dt | dg t | dgd urt|d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   r   r   r   r   rl  rm  r   rS   r-   r   r   r   _RecontextImageConfig_to_vertex  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t |dg|| t |dgd ur>tt |dg|| |S NrU   rV   r  r   )r+   r,   r]   r^   _RecontextImageSource_to_vertexr@  r   r   r   r   #_RecontextImageParameters_to_vertex      rD  c                    r  )Nr   r   c                    rX   r   r   rH   r[   r   r   rK   8  r\   z7_RecontextImageResponse_from_vertex.<locals>.<listcomp>rS   rz   r   r[   r   #_RecontextImageResponse_from_vertex.  r   rF  c                    s   i t | dgd urt|ddgt | dg t | dgd ur.t|g dtt | dg  t | dgd urJt|ddg fddt | dgD  S )	Nr   r   person_image)r   personImager  product_imagesproductImagesc                    rX   r   )r?  rH   r[   r   r   rK   Y  r\   z3_RecontextImageSource_to_vertex.<locals>.<listcomp>r>  rz   r   r[   r   rC  A  s,   
	rC  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 | dg t | dgd urt|dgt | dg |S )Nreference_imagereferenceImagereference_idreferenceIdreference_typereferenceTypemask_image_configmaskImageConfigcontrol_image_configcontrolImageConfigstyle_image_configstyleImageConfigsubject_image_configsubjectImageConfig)r+   r,   r  r  r   r-   r   r   r   r   b  sT   

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r4tdt | dgd ur@td|S )	Nr3   r4   voice_sample_audiovoiceSampleAudioconsent_audiozuconsent_audio parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.voice_consent_signaturezvoice_consent_signature parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r*   r-   r   r   r    _ReplicatedVoiceConfig_to_vertex  s$   
r]  c                 C   s   i }t | ddgd urt|dgt | ddg t | ddgd ur,t|dgt | ddg t | dgd ur?t|dgt | dg |S )NsafetyAttributes
categoriesscorescontentTypecontent_typerS   r-   r   r   r   rr    s   rr  c                 C   sl   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur4t|dgt | dg |S )Ncategorymethodznmethod parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.	thresholdr*   r-   r   r   r   r+    r6   r+  c                 C   r  )Nr  r>  r-   r   r   r   _ScribbleImage_to_vertex  r  rf  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ryt|dgt | dg |S )Nr  r   max_predictionsmaxPredictionsconfidence_thresholdconfidenceThresholdr  maskDilationbinary_color_thresholdbinaryColorThresholdr   rS   r-   r   r   r   _SegmentImageConfig_to_vertex  s<   



rn  c              	   C   rA  rB  )r+   r,   r]   r^   _SegmentImageSource_to_vertexrn  r   r   r   r   !_SegmentImageParameters_to_vertex"  rE  rp  c                    r  )Nr   generated_masksc                    rX   r   )r  rH   r[   r   r   rK   G  r\   z5_SegmentImageResponse_from_vertex.<locals>.<listcomp>rS   rz   r   r[   r   !_SegmentImageResponse_from_vertex=  r   rr  c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur.t|ddgtt | dg|| t | dgd urFt|ddgtt | dg|| |S )Nr   r   r  scribble_imagescribble)r+   r,   r  rf  r-   r   r   r   ro  P  s(   ro  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 )Nspeakervoice_configvoiceConfig)r+   r,   _VoiceConfig_to_vertexr-   r   r   r   r  n  ru   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 )Nrv  rw  language_codelanguageCodemulti_speaker_voice_configmultiSpeakerVoiceConfig)r+   r,   rx  r  r-   r   r   r   rV    s,   

rV  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|| t | dgd ur?t|dgt | dg |S )Nretrieval_configretrievalConfigfunction_calling_configfunctionCallingConfig$include_server_side_tool_invocations includeServerSideToolInvocations)r+   r,   r  r-   r   r   r   rK    s,   


rK  c                 C   sl   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r4td|S )Nr}  r~  r  r  r  zinclude_server_side_tool_invocations parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r*   r-   r   r   r   rU    s    
rU  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rKt|dgtt | dg|| t | d	gd urbt|d
gtt | d	g|| t | dgd urut|dgt | dg t | dgd urtdt | dgd urt|dgdd t | dgD  t | dgd urt|dgt | dg 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dd t | dgD  t | dgd urtd|S )N	retrievalzqretrieval parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.computer_usecomputerUsefile_search
fileSearchgoogle_searchgoogleSearchgoogle_maps
googleMapscode_executioncodeExecutionenterprise_web_searchz}enterprise_web_search parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.function_declarationsfunctionDeclarationsc                 S   rG   r   r   rH   r   r   r   rK     rL   z"_Tool_to_mldev.<locals>.<listcomp>google_search_retrievalgoogleSearchRetrievalparallel_ai_searchzzparallel_ai_search parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.url_context
urlContextmcp_servers
mcpServersc                 S   rG   r   r   rH   r   r   r   rK   '  rL   exa_ai_searchzuexa_ai_search parameter is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.)r+   r   r,   r  r  r-   r   r   r   r-    sx   
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t | dg  t | dgd ur8tdt | dgd urKt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dd t | dg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rtdg fddt | dgD  t | dgd urtdgt | dg S )Nr  r  r  r  zsfile_search parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r  r  r  r  r  r  r  enterpriseWebSearchr  r  c                 S   rG   r   r   rH   r   r   r   rK   _  rL   z#_Tool_to_vertex.<locals>.<listcomp>r  r  r  parallelAiSearchr  r  r  r  c                    rX   r   )r  rH   r[   r   r   rK   w  r\   r  exaAiSearch)r+   r,   rm   r   rz   r   r[   r   r   3  st   



	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-id
base_modelrg  rh  
updateTimeupdate_timerS   r-   r   r   r   r    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 Nr1   r  r  r  r  rS   r-   r   r   r   _UpdateModelConfig_to_mldev     
r  c                 C   r  r  rS   r-   r   r   r   _UpdateModelConfig_to_vertex  r  r  c              	   C   s\   i }t |dgd urt|ddgt| t |dg t |dgd ur,tt |dg|| |S )NrU   rV   r   r   )r+   r,   r]   r^   r  r   r   r   r   _UpdateModelParameters_to_mldev     r  c              	   C   s\   i }t |dgd urt|ddgt| t |dg t |dgd ur,tt |dg|| |S )NrU   rV   r   )r+   r,   r]   r^   r  r   r   r   r    _UpdateModelParameters_to_vertex  r  r  c                 C   s  i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urRt|dd	gt | dg t | d
gd urft|g dt | d
g t | dgd urzt|g d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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   r   r   r   r   r   r   r   r   r   r   r   r   enhance_input_image)r   upscaleConfigenhanceInputImageimage_preservation_factor)r   r  imagePreservationFactorr   r   r   r  rS   r-   r   r   r    _UpscaleImageAPIConfig_to_vertex  sx   








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rFt|g dt |dg t |dgd urXtt |dg|| |S )NrU   rV   r  r   upscale_factor)r   r  upscaleFactorr   )r+   r,   r]   r^   r  r  r   r   r   r   $_UpscaleImageAPIParameters_to_vertexE  s0   
r  c                    r   )Nrb   rc   r   r   c                    rX   r   r   rH   r[   r   r   rK   x  r\   z5_UpscaleImageResponse_from_vertex.<locals>.<listcomp>rS   rz   r   r[   r   !_UpscaleImageResponse_from_vertexi  r   r  c                 C   \   i }t | dgd urt|dgtt | dg|| t | dgd ur,t|dgt | dg |S )Nr  r  r  r  r>  r-   r   r   r   r       r  c                 C   sl   i }t | dgd urt|dgtt | dg|| t | dgd ur4tt | dg t|dgt | dg |S Nr  rO  rP  )r+   r,   r  r   r-   r   r   r   r}    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 r  r>  r-   r   r   r   r    r  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 )NuriencodedVideovideo_bytesencodingr3   r  r-   r   r   r   r    r  r  c                 C   r  )Nr  r  r  r  r4   r3   r  r-   r   r   r   r    r  r  c                 C   r  )Nr  r  r  r3   r  r  r-   r   r   r   r    r  r  c                 C   r  )Nr  r  r  r  r3   r4   r  r-   r   r   r   r    r  r  c                 C   r  )Nreplicated_voice_configreplicatedVoiceConfigprebuilt_voice_configprebuiltVoiceConfig)r+   r,   r]  r-   r   r   r   rx    s$   


rx  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dddedeeejejf  deeejejf  deej 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j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j!deej" dej#fddZ$dddedej%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$Z0dddedeej1 dej2fd%d&Z3dddedeejejf deej4 dej5fd'd(Z6dddedeejejf deej7 dej8fd)d*Z9dddddd+dedee deej d,eej: deej; deej< dej=fd-d.Z>d/Z?d/Z@dddedeejejf deej dejfd0d1ZAdddedejdeej	 dej
fd2d3ZBdddedejdeej	 deej
 fd4d5ZCeDEd6dddededeej dejfd7d8ZFeDEd9dddededejej deej dejf
d:d;ZGdddedejdedeejH dejf
d<d=ZIdddddd+dedee deej d,eej: deej; deej< dej=fd>d?ZJdddeej, deKej* fd@dAZdS )BModelsNr   rU   rW   r   r   c             	   C   s  t j|||d}| jjr$t| j|d |}|d}|r!d|}nd}nt| j|d |}|d}|r9d|}nd}|d}|rK| dt| }|	dd  d }	|j
d urb|j
jd urb|j
j}	t|}t|}| jd|||	}
|d urt|dd rt j|
d	}| j| |S |
jsi nt|
j}| jjrt|d |}| jjst|d |}t jj|t|dd rdt|j
d
d t|j
dd t|j
dd dini d}t j|
jd|_| j| |S NrU   rW   r   rV   z{model}:generateContentr  ?r   postshould_return_http_response)rc   r#  r%  include_all_fieldsr#  r%  r  r  kwargsheaders)r   _GenerateContentParameters_api_clientvertexair\  r   
format_maprZ  r   popr   http_optionsr   convert_to_dictencode_unserializable_typesrequestgetattrGenerateContentResponse_verify_responsebodyjsonloadsri  rf  _from_responseHttpResponser  rc   selfrU   rW   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  r  return_valueresponse_dictr   r   r   _generate_content2  s   









zModels._generate_contentc             
   c   s   t j|||d}| jjr%t| j|d |}|d}|r"d|}nd}nt| j|d |}|d}|r:d|}nd}|d}|rL| dt| }|	dd  d }	|j
d urc|j
jd urc|j
j}	t|}t|}|d ur{t|dd r{td| jd	|||	D ]W}
|
jsi nt|
j}| jjrt|d |}| jjst|d |}t jj|t|dd rdt|j
d
d t|j
dd t|j
dd dini d}t j|
jd|_| j| |V  qd S )Nr  rV   %{model}:streamGenerateContent?alt=sser  r  r   r  FAccessing the raw HTTP response is not supported in streaming methods.r  r#  r%  r  r  r  r  )r   r  r  r  r\  r   r  rZ  r   r  r   r  r   r  r  r  r   request_streamedr  r  r  ri  rf  r  r  r  r  rc   r  r  rU   rW   r   r  r  r  r  r  r  r  r  r  r   r   r   _generate_content_stream  s   









zModels._generate_content_streamrW   r7   r   r   r7   r   c             	   C   s  t j|||||d}| jjr0t| j|d|}|d}t|jr#dnd}	|r-|		|}
n|	}
nt
| j|d|}|d}|rEd	|}
nd}
|d}|rW|
 dt| }
|d	d d}|jdurn|jjdurn|jj}t|}t|}| jd
|
||}|jsi nt|j}| jjrt|d|}| jjst|d|}t jj|t|d	drd	t|jddt|jddt|jdddini d}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
          },
      )
    rU   rW   r7   r   r   NrV   {model}:embedContent{model}:predict{model}:batchEmbedContentsr  r  r   r  r#  r%  r  r  r  r  )r   _EmbedContentParametersPrivater  r  r   r   r]   t_is_vertex_embed_content_modelrU   r  r   r   r  r   r  r   r  r  r  r  r  r  r   r   EmbedContentResponser  r  r  r  rc   r  r  rU   rW   r7   r   r   r  r  r  endpoint_urlr  r  r  r  r  r  r   r   r   _embed_content  s   $









zModels._embed_contentr   c             	   C   V  t j|||d}| jjstdt| j|d|}|d}|r%d|}nd}|d}|r7| dt| }|	dd d}	|j
durN|j
jdurN|j
j}	t|}t|}| jd	|||	}
|
jsfi nt|
j}| jjrvt|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}t j|
jd|_| j| |S )z%Private method for generating images.rU   r   r   iThis method is only supported in Gemini Enterprise Agent Platform mode, not in Gemini Developer API mode.NrV   r  r  r  r   r  r#  r%  r  r  r  r  )r   _GenerateImagesParametersr  r  r   ro  r   r  r   r  r   r  r   r  r  r  r  r  r  rs  GenerateImagesResponser  r  r  r  rc   r  r  rU   r   r   r  r  r  r  r  r  r  r  r  r   r   r   _generate_imagesp  sr   	






zModels._generate_imagesr   c             	   C   X  t j||||d}| jjstdt| j|d|}|d}|r&d|}nd}|d}	|	r8| dt|	 }|	dd d}
|j
durO|j
jdurO|j
j}
t|}t|}| jd	|||
}|jsgi nt|j}| jjrwt|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}t j|jd|_| j| |S )z$Private method for editing an image.rU   r   r   r   r  NrV   r  r  r  r   r  r#  r%  r  r  r  r  )r   _EditImageParametersr  r  r   r   r   r  r   r  r   r  r   r  r  r  r  r  r  r   EditImageResponser  r  r  r  rc   r  r  rU   r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   _edit_image  t   







zModels._edit_imager  r  c             	   C   r  )z&Private method for upscaling an image.rU   r  r  r   r  NrV   r  r  r  r   r  r#  r%  r  r  r  r  )r   _UpscaleImageAPIParametersr  r  r   r  r   r  r   r  r   r  r   r  r  r  r  r  r  r  UpscaleImageResponser  r  r  r  rc   r  r  rU   r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   _upscale_image  r  zModels._upscale_imager  c             	   C   F  t j|||d}| jjstdt| j|d|}|d}|r%d|}nd}|d}|r7| dt| }|	dd d}	|j
durN|j
jdurN|j
j}	t|}t|}| jd	|||	}
|
jsfi nt|
j}| jjrvt|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}| j| |S )a  Recontextualizes an image.

    There is one type of recontextualization currently supported:
    1) Virtual Try-On: Generate images of persons modeling fashion products.

    Args:
      model (str): The model to use.
      source (RecontextImageSource): An object containing the source inputs
        (prompt, person_image, product_images) for image recontext. prompt is
        behind an allowlist. person_image is required. product_images is
        required. Only one product image is supported currently.
      config (RecontextImageConfig): Configuration for recontextualization.

    Usage:

      ```
      virtual_try_on_response = client.models.recontext_image(
          model="virtual-try-on-001",
          source=types.RecontextImageSource(
              person_image=types.Image.from_file(location=IMAGE1_FILE_PATH),
              product_images=[types.ProductImage(product_image=
                  types.Image.from_file(location=IMAGE2_FILE_PATH)
              )],
          ),
          config=types.RecontextImageConfig(
              number_of_images=1,
          ),
      )
      image = virtual_try_on_response.generated_images[0].image
      ```
    rU   r  r   r  NrV   r  r  r  r   r  r#  r%  r  r  r  )r   _RecontextImageParametersr  r  r   rD  r   r  r   r  r   r  r   r  r  r  r  r  r  rF  RecontextImageResponser  r  r  r  rU   r  r   r  r  r  r  r  r  r  r  r  r   r   r   recontext_imagej  sl   '






zModels.recontext_imagec             	   C   r  )a+  Segments an image, creating a mask of a specified area.

    Args:
      model (str): The model to use.
      source (SegmentImageSource): An object containing the source inputs
        (prompt, image, scribble_image) for image segmentation. The prompt is
        required for prompt mode and semantic mode, disallowed for other modes.
        scribble_image is required for the interactive mode, disallowed for
        other modes.
      config (SegmentImageConfig): Configuration for segmentation.

    Usage:

      ```
      response = client.models.segment_image(
          model="image-segmentation-001",
          source=types.SegmentImageSource(
              image=types.Image.from_file(location=IMAGE_FILE_PATH),
          ),
      )

      mask_image = response.generated_masks[0].mask
      ```
    r	  r  NrV   r  r  r  r   r  r#  r%  r  r  r  )r   _SegmentImageParametersr  r  r   rp  r   r  r   r  r   r  r   r  r  r  r  r  r  rr  SegmentImageResponser  r  r  r  r   r   r   segment_image  sl    






zModels.segment_imagec             	   C   s  t j||d}| jjr#t| j|d |}|d}|r d|}nd}nt| j|d |}|d}|r8d|}nd}|d}|rJ| dt| }|	dd  d }|j
d ura|j
jd ura|j
j}t|}t|}| jd|||}	|	jsyi nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
dd t|j
d	d t|j
d
d dini d}| j| |S NrU   r   rV   {name}r  r  r   r   r#  r%  r  r  r  )r   _GetModelParametersr  r  r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  Modelr  r  r  r  rU   r   r  r  r  r  r  r  r  r  r  r   r   r   r   ?  sn   








z
Models.getc             	   C   s  t j|d}| jjr"t| j|d |}|d}|rd|}nd}nt| j|d |}|d}|r7d|}nd}|d}|r]|dr]|d}| d| }|r\|dt	| 7 }n|rh| dt	| }|d	d  d }|j
d ur|j
jd ur|j
j}t|}t|}| jd
|||}	|	jsi nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|d	d rd	t|j
dd t|j
dd t|j
dd dini d}t j|	jd|_| j| |S Nr  rV   z{models_url}r  r  z?filter=&r  r   r   r#  r%  r  r  r  r  )r   _ListModelsParametersr  r  r  r   r  r  r  r   r   r  r   r  r  r  r  r  r  r  r  ListModelsResponser  r  r  r  rc   r  r  r   r  r  r  r  r  query_param_filterr  r  r  r  r   r   r   _list  s   









zModels._listc             	   C   s  t j||d}| jjr#t| j|d |}|d}|r d|}nd}nt| j|d |}|d}|r8d|}nd}|d}|rJ| dt| }|	dd  d }|j
d ura|j
jd ura|j
j}t|}t|}| jd|||}	|	jsyi nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
d	d t|j
d
d t|j
dd dini d}| j| |S Nr  rV   z{model}r  r  r  r   patchr#  r%  r  r  r  )r   _UpdateModelParametersr  r  r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   update  sr   








zModels.updatec             	   C   s  t j||d}| jjr#t| j|d |}|d}|r d|}nd}nt| j|d |}|d}|r8d|}nd}|d}|rJ| dt| }|	dd  d }|j
d ura|j
jd ura|j
j}t|}t|}| jd|||}	|	jsyi nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
dd t|j
d	d t|j
d
d dini d}t j|	jd|_| j| |S Nr  rV   r  r  r  r   deleter#  r%  r  r  r  r  )r   _DeleteModelParametersr  r  r   r   r  r   r   r  r   r  r   r  r  r  r  r  r  r   r   DeleteModelResponser  r  r  r  rc   r  r  r   r   r   r#  2  s   








zModels.deletec             	   C   s  t j|||d}| jjr$t| j|d|}|d}|r!d|}nd}nt| j|d|}|d}|r9d|}nd}|d}|rK| dt| }|	dd d}	|j
durb|j
jdurb|j
j}	t|}t|}| jd|||	}
|
jszi nt|
j}| jjrt|d|}| jjst|d|}t jj|t|ddrdt|j
d	dt|j
d
dt|j
dddini d}t j|
jd|_| j| |S )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  NrV   {model}:countTokensr  r  r   r  r#  r%  r  r  r  r  )r   _CountTokensParametersr  r  r   r   r  r   r   r  r   r  r   r  r  r  r  r  r  r   r   CountTokensResponser  r  r  r  rc   r  r  r   r   r   count_tokens  s   








zModels.count_tokensc             	   C   r  )az  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.

    This method is not supported by the Gemini Developer API.

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

    Usage:

    .. code-block:: python

      response = client.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r  NrV   {model}:computeTokensr  r  r   r  r#  r%  r  r  r  r  )r   _ComputeTokensParametersr  r  r   ra   r   r  r   r  r   r  r   r  r  r  r  r  r  rf   ComputeTokensResponser  r  r  r  rc   r  r  r   r   r   compute_tokens  sr   






zModels.compute_tokensr   r  r  r  r   r  c             	   C   s  t j||||||d}| jjr't| j|d|}|d}	|	r$d|	}
nd}
nt| j|d|}|d}	|	r<d|	}
nd}
|d}|rN|
 dt| }
|	dd d}|j
dure|j
jdure|j
j}t|}t|}| jd|
||}|js}i nt|j}| jjrt|d|}| jjst|d|}t jj|t|ddrdt|j
d	dt|j
d
dt|j
dddini d}| j| |S )z%Private method for generating videos.rU   r   r  r  r  r   NrV   {model}:predictLongRunningr  r  r   r  r#  r%  r  r  r  )r   _GenerateVideosParametersr  r  r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  GenerateVideosOperationr  r  r  r  rU   r   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   _generate_videos^  s   








zModels._generate_videosFc                C   s   | j jsd|v rt|}| j|||dS t|r7t|}t|dkr)td| j|d|d tj	j
|dS | j|d|tj	j|dS )	a  Calculates embeddings for the given contents.

    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
          },
      )

      multimodal_embeddings = client.models.embed_content(
          model='gemini-embedding-2-preview',
          contents=[
              types.Part.from_uri(
                  file_uri='gs://generativeai-downloads/images/scones.jpg',
                  mime_type='image/jpeg',
              ),
          ],
          config={
              'output_dimensionality': 64
          },
      )
    gemini-embedding-2r  r	   HThe embedContent API for this model only supports one content at a time.Nr   r  )rU   r7   rW   r   r   r  r  r]   r_   r  r  lenr   r   EmbeddingApiTyper   r   r  rU   rW   r   normalized_contentsr   r   r   embed_content  s0   *


zModels.embed_contentc                C   s  t |}t |}|r|jrt|jrtdt |r'| j	|||dS |r7t 
|| | j	|||dS t |}td| d tjsPtd dt_g }t }d}	|dkr|rd|jddnd	}
t |}|rut |
tjd
}
|	d7 }	| j	|||
d}|sni|snf|jr|jd jr|jd jjsnUt ||}|snLtd|	 d |d8 }|dkrtd |jd j}tjd|d}t|}|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 Gemini Enterprise Agent
    Platform 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
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

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

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

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

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

      response = client.models.generate_content(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text(text='What is shown in this image?'),
          types.Part.from_uri(file_uri='gs://generativeai-downloads/images/scones.jpg',
          mime_type='image/jpeg')
        ]
      )
      print(response.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    6MCP sessions are not supported in synchronous methods.r  &AFC is enabled with max remote calls: .a%  Direct use of automatic function calling (AFC) in Models.generate_content is not recommended. Instead, we recommend to use AFC in Chat.send_message. Similarly, direct use of AFC in Models.generate_content_stream is not recommended. Instead, we recommend to use AFC in Chat.send_message_stream.Tr   deepNafcr	   AFC remote call 	 is done.8Reached max remote calls for automatic function calling.userry   rw   )$r   "find_afc_incompatible_tool_indexesparse_config_for_mcp_usager   r   has_mcp_session_usager   UnsupportedFunctionErrorshould_disable_afcr  "log_afc_incompatible_tools_warningget_max_remote_calls_afcloggerinfor  _logged_afc_warningwarningr   r  
model_copyget_function_mapget_usage_headerGenerateContentConfigr]  r7   rw   get_function_response_partsContentr]   r_   extend
isinstancelistappendshould_append_afc_history"automatic_function_calling_history)r  rU   rW   r   incompatible_tools_indexesparsed_configremaining_remote_calls_afcr^  r  iparsed_config_to_callfunction_mapfunc_response_partsfunc_call_contentfunc_response_contentr   r   r   generate_content  s   C













2zModels.generate_contentc                c   sR   t |}t |}|r|jrt|jrtdt |r-| j	|||dE dH  dS |rBt 
|| | j	|||dE dH  dS t | t |}td| d tjs`td dt_g }d}|dkr'|rq|jdd	nd}	t |}
|
rt |	tjd
}	|d7 }| j	|||	d}g }g }d}|D ]@}t |r|r||_|
r|jr|jd jr|jd jjrt ||
}|r|| |jr|jd jr||jd j |V  q|
r|sdS td| d |d8 }|dkrtd tjd|d}t !|}|s|| t"|t#r|| || || || |dksid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 Gemini Enterprise Agent
    Platform 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
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

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

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

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

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

      for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      ):
        print(chunk.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    r=  r  Nr>  r?  a%  Direct use of automatic function calling (AFC) in Models.generate_content_stream is not recommended. Instead, we recommend to use AFC in Chat.send_message_stream. Similarly, direct use of AFC in Models.generate_content is not recommended. Instead, we recommend to use AFC in Chat.send_message.Tr   r@  rB  r	   rC  rD  rE  rF  rG  )$r   rH  rI  r   r   rJ  r   rK  rL  r  rM  'raise_error_for_afc_incompatible_configrN  rO  rP  r  rQ  rR  rS  rT  rU  r   rV  r]  r^  r]  r7   rw   rW  rY  r\  rX  r]   r_   rZ  r[  )r  rU   rW   r   r_  r`  ra  r^  rb  rc  rd  r  model_outputre  chunkchunk_func_response_partsrg  r   r   r   generate_content_stream  s   C















zModels.generate_content_streamo  The generate_images method is deprecated and will be removed in the next major release (not before Jan. 1 2027). Please use the generate_content method with image models instead. See https://ai.google.dev/gemini-api/docs/deprecations#imagen-models and https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/image-generation#generate-imagesc          	      C   sh   | j |||d}d}g }|r|js|S |jD ]}|jr%|jjdkr%|j}q|| qtj||d}|S )ap  Generates images based on a text description and configuration.

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

    Usage:

    .. code-block:: python

      response = client.models.generate_images(
        model='imagen-3.0-generate-002',
        prompt='Man with a dog',
        config=types.GenerateImagesConfig(
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog.
    r  NPositive Promptr   rq  r  r   r  rb  r\  r   r  	r  rU   r   r   api_responserq  r   generated_imager  r   r   r   generate_images`  s,   %

zModels.generate_images%  The edit_image method is deprecated and will be removed in the next major release (not before Jan. 1 2027). Please use the generate_content method with image models instead. See https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/gemini-edit-images#edit-an-imagec                C   s   | j ||||d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(location=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  r  rU   r   r   r   r   r   r   
edit_image  s   7zModels.edit_imagec                C   s   t j||||d |pi }t|t jr| }nt|}t j|dd|dd|dd|dd|dd|dd|d	d|d
d|dd|ddd
}d|d< d|d< | j||||dS )a  Makes an API request to upscale a provided image.

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

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response=client.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(location=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  Nr   r   r   r   r   r   r  r  r   
r  r   r   r   r   r   r   r  r  r   upscaler  r	   r   	r   UpscaleImageParametersrZ  UpscaleImageConfig
model_dumpdict_UpscaleImageAPIConfigDictr   r  r  rU   r  r  r   
config_dct
api_configr   r   r   upscale_image  sD   !








zModels.upscale_imagec          
      C   sb  |s|s|r"|rt dtjstjdtdd dt_t|tj	d i }| j
jsQ|rQt|tjr5| }nt|}|drP|drPtj|d|d	d
}nU| j
js|rt|tjrh| }|di }nt|}t|dtjr|dt }	|	 }|r|dr|drtj|d|dtj|d|d	d
d}| j||||||dS )  Generates videos based on an input (text, image, or video) and configuration.

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

    Args:
      model: The model to use.
      prompt: The text prompt for generating the videos. Optional for image to
        video and video extension use cases. This argument is deprecated, please
        use source instead.
      image: The input image for generating the videos. Optional if prompt is
        provided. This argument is deprecated, please use source instead.
      video: The input video for video extension use cases. Optional if prompt
        or image is provided. This argument is deprecated, please use source
        instead.
      source: The input source for generating the videos (prompt, image, and/or
        video)
      config: Configuration for generation.

    Usage:

      ```
      operation = client.models.generate_videos(
          model="veo-2.0-generate-001",
          source=types.GenerateVideosSource(
              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
      ```
    MSource and prompt/image/video are mutually exclusive. Please only use source.The generate_videos method with prompt/image/video arguments is deprecated and will be removed in a future major release (not before 2026-07-31). Please use the source argument instead.   
stacklevelT	nonsourcer  r  r3   r  r3   r  r   r  r   r  r  r/  )r   r  +_logged_generate_videos_deprecation_warningwarningswarnDeprecationWarningr   rU  r   GenerateVideosConfigr  r  rZ  Videor  r  r   GenerateVideosSourcer4  
r  rU   r   r  r  r  r   	video_dct
source_dct	video_objr   r   r   generate_videos'  sh   1
zModels.generate_videosc                C   sp   t j|djp
t  }|jdu rd|_| jjr,|jdd}|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  NTr@  &filter=labels.tune-type:*labels.tune-type:*r  )r   r  r   ListModelsConfigr  r  r  rS  r  r   r  r  r   filter_valuer   r   r   r[    s&   


zModels.list)L__name__
__module____qualname__strr   r   ContentListUnionContentListUnionDictr   GenerateContentConfigOrDictr  r  r   r  ContentUnionContentUnionDictr9  EmbedContentConfigOrDictr  r  GenerateImagesConfigOrDictr  r  builtinsr[  _ReferenceImageAPIOrDictEditImageConfigOrDictr  r  ImageOrDict_UpscaleImageAPIConfigOrDictr  r  RecontextImageSourceOrDictRecontextImageConfigOrDictr  r  SegmentImageSourceOrDictSegmentImageConfigOrDictr  r  GetModelConfigOrDictr  r   ListModelsConfigOrDictr  r  UpdateModelConfigOrDictr!  DeleteModelConfigOrDictr%  r#  CountTokensConfigOrDictr(  r)  ComputeTokensConfigOrDictr,  r-  VideoOrDictGenerateVideosSourceOrDictGenerateVideosConfigOrDictr2  r4  r  rQ  r<  rh  rm  r   experimental_warningru  ry  UpscaleImageConfigOrDictr  r  r   r   r   r   r   r  0  s   
e
k

~
X

Z
Y
s
h
M
Z
U
\
s
k	
_
K
 ,
 57
>
N	
or  c                   @   s  e Zd Zdddedeejejf deej	 dej
fddZdddedeejejf deej	 deeej
  fd	d
Zddddddedeeejejf  deeejejf  deej 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j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j"deej# dej$fddZ%dddedej&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j0 dej+fd#d$Z1dddedeej2 dej3fd%d&Z4dddedeejejf deej5 dej6fd'd(Z7dddedeejejf deej8 dej9fd)d*Z:dddddd+dedee deej d,eej; deej< deej= dej>fd-d.Z?d/Z@d/ZAdddedeejejf deej	 dej
fd0d1ZBdddedeejejf deej	 deej
 fd2d3ZCeDEd4dddededejej deej dejf
d5d6ZFdddeej- deGej+ fd7d8ZeDEd9dddededeej dejfd:d;ZHdddedejdedeejI dej f
d<d=ZJdddddd+dedee deej d,eej; deej< deej= dej>fd>d?ZKdddedeejejf deej dejfd@dAZLdS )BAsyncModelsNr  rU   rW   r   r   c             	      s  t j|||d}| jjr%t| j|d |}|d}|r"d|}nd}nt| j|d |}|d}|r:d|}nd}|d}|rL| dt| }|	dd  d }	|j
d urc|j
jd urc|j
j}	t|}t|}| jd|||	I d H }
|d urt|dd rt j|
d	}| j| |S |
jsi nt|
j}| jjrt|d |}| jjst|d |}t jj|t|dd rdt|j
d
d t|j
dd t|j
dd dini d}t j|
jd|_| j| |S r  )r   r  r  r  r\  r   r  rZ  r   r  r   r  r   r  r  async_requestr  r  r  r  r  r  ri  rf  r  r  r  rc   r  r   r   r   r    s   










zAsyncModels._generate_contentc          
         s$  t j|||d jjr%tj d  }|d}|r"d|}nd}ntj d  }|d}|r:d|}nd}|d}|rL| dt| }|	dd  d } j
d urc j
jd urc j
j}t|}t|}|d ur{t|dd r{tdjd	|||I d H  fd
d}	|	 S )Nr  rV   r  r  r  r   r  r  r  c               
     s   2 z[3 d H W } | j si nt| j }jjrt|d  }jjs(t|d  }tjj	|t
 dd rIdt
 jdd t
 jdd t
 jdd dini d}tj| jd|_j| |V  q6 d S )Nr   r#  r%  r  r  r  r  )r  r  r  r  r  ri  rf  r   r  r  r  r   r  r  rc   r  )r  r  r  r  response_streamr  r   r   async_generatori  sF   
z=AsyncModels._generate_content_stream.<locals>.async_generator)r   r  r  r  r\  r   r  rZ  r   r  r   r  r   r  r  r  r   async_request_streamed)
r  rU   rW   r   r  r  r  r  r  r  r   r  r   r  (  s\   









'z$AsyncModels._generate_content_streamr  r7   r   c             	      s  t j|||||d}| jjr1t| j|d|}|d}t|jr$dnd}	|r.|		|}
n|	}
nt
| j|d|}|d}|rFd	|}
nd}
|d}|rX|
 dt| }
|d	d d}|jduro|jjduro|jj}t|}t|}| jd
|
||I dH }|jsi nt|j}| jjrt|d|}| jjst|d|}t jj|t|d	drd	t|jddt|jddt|jdddini d}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  NrV   r  r  r  r  r  r   r  r#  r%  r  r  r  r  )r   r  r  r  r   r   r]   r  rU   r  r   r   r  r   r  r   r  r  r  r  r  r  r   r   r  r  r  r  r  rc   r  r  r   r   r   r    s   $










zAsyncModels._embed_contentr   c             	      ^  t j|||d}| jjstdt| j|d|}|d}|r&d|}nd}|d}|r8| dt| }|	dd d}	|j
durO|j
jdurO|j
j}	t|}t|}| jd	|||	I dH }
|
jsji nt|
j}| jjrzt|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}t j|
jd|_| j| |S )z4Private method for generating images asynchronously.r  r  NrV   r  r  r  r   r  r#  r%  r  r  r  r  )r   r  r  r  r   ro  r   r  r   r  r   r  r   r  r  r  r  r  r  rs  r  r  r  r  r  rc   r  r  r   r   r   r    st   	







zAsyncModels._generate_imagesr   c             	      `  t j||||d}| jjstdt| j|d|}|d}|r'd|}nd}|d}	|	r9| dt|	 }|	dd d}
|j
durP|j
jdurP|j
j}
t|}t|}| jd	|||
I dH }|jski nt|j}| jjr{t|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}t j|jd|_| j| |S )z3Private method for editing an image asynchronously.r  r  NrV   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  rc   r  r   r   r   r   r  ]  v   








zAsyncModels._edit_imager  r  c             	      r  )z5Private method for upscaling an image asynchronously.r  r  NrV   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  rc   r  r  r   r   r   r    r  zAsyncModels._upscale_imager  c             	      N  t j|||d}| jjstdt| j|d|}|d}|r&d|}nd}|d}|r8| dt| }|	dd d}	|j
durO|j
jdurO|j
j}	t|}t|}| jd	|||	I dH }
|
jsji nt|
j}| jjrzt|d|}t jj|t|ddrdt|j
d
dt|j
ddt|j
dddini d}| j| |S )a  Recontextualizes an image.

    There is one type of recontextualization currently supported:
    1) Virtual Try-On: Generate images of persons modeling fashion products.

    Args:
      model (str): The model to use.
      source (RecontextImageSource): An object containing the source inputs
        (prompt, person_image, product_images) for image recontext. prompt is
        behind an allowlist. person_image is required. product_images is
        required. Only one product image is supported currently.
      config (RecontextImageConfig): Configuration for recontextualization.

    Usage:

      ```
      virtual_try_on_response = await client.aio.models.recontext_image(
          model="virtual-try-on-001",
          source=types.RecontextImageSource(
              person_image=types.Image.from_file(location=IMAGE1_FILE_PATH),
              product_images=[types.ProductImage(product_image=
                  types.Image.from_file(location=IMAGE2_FILE_PATH)
              )],
          ),
          config=types.RecontextImageConfig(
              number_of_images=1,
          ),
      )
      image = virtual_try_on_response.generated_images[0].image
      ```
    r	  r  NrV   r  r  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  rF  r  r  r  r  r  r   r   r   r    sn   '







zAsyncModels.recontext_imagec             	      r  )a  Segments an image, creating a mask of a specified area.

    Args:
      model (str): The model to use.
      source (SegmentImageSource): An object containing the source inputs
        (prompt, image, scribble_image) for image segmentation. The prompt is
        required for prompt mode and semantic mode, disallowed for other modes.
        scribble_image is required for the interactive mode, disallowed for
        other modes.
      config (SegmentImageConfig): Configuration for segmentation.

    Usage:

      ```
      response = await client.aio.models.segment_image(
          model="image-segmentation-001",
          source=types.SegmentImageSource(
              image=types.Image.from_file(location=IMAGE_FILE_PATH),
          ),
          config=types.SegmentImageConfig(
              mode=types.SegmentMode.foreground,
          ),
      )

      mask_image = response.generated_masks[0].mask
      ```
    r	  r  NrV   r  r  r  r   r  r#  r%  r  r  r  )r   r  r  r  r   rp  r   r  r   r  r   r  r   r  r  r  r  r  r  rr  r  r  r  r  r  r   r   r   r  s  sn   #







zAsyncModels.segment_imagec             	      s  t j||d}| jjr$t| j|d |}|d}|r!d|}nd}nt| j|d |}|d}|r9d|}nd}|d}|rK| dt| }|	dd  d }|j
d urb|j
jd urb|j
j}t|}t|}| jd|||I d H }	|	js}i nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
dd t|j
d	d t|j
d
d dini d}| j| |S 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     st   









zAsyncModels.getc             	      s  t j|d}| jjr#t| j|d |}|d}|r d|}nd}nt| j|d |}|d}|r8d|}nd}|d}|r^|dr^|d}| d| }|r]|dt	| 7 }n|ri| dt	| }|d	d  d }|j
d ur|j
jd ur|j
j}t|}t|}| jd
|||I d H }	|	jsi nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|d	d rd	t|j
dd t|j
dd t|j
dd dini d}t j|	jd|_| j| |S 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  rc   r  r  r   r   r   r  +  s   










zAsyncModels._listc             	      s  t j||d}| jjr$t| j|d |}|d}|r!d|}nd}nt| j|d |}|d}|r9d|}nd}|d}|rK| dt| }|	dd  d }|j
d urb|j
jd urb|j
j}t|}t|}| jd|||I d H }	|	js}i nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
d	d t|j
d
d t|j
dd dini d}| j| |S 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!    st   









zAsyncModels.updatec             	      s  t j||d}| jjr$t| j|d |}|d}|r!d|}nd}nt| j|d |}|d}|r9d|}nd}|d}|rK| dt| }|	dd  d }|j
d urb|j
jd urb|j
j}t|}t|}| jd|||I d H }	|	js}i nt|	j}
| jjrt|
d |}
| jjst|
d |}
t jj|
t|dd rdt|j
dd t|j
d	d t|j
d
d dini d}t j|	jd|_| j| |S 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  rc   r  r  r   r   r   r#    s   









zAsyncModels.deletec             	      s  t j|||d}| jjr%t| j|d|}|d}|r"d|}nd}nt| j|d|}|d}|r:d|}nd}|d}|rL| dt| }|	dd d}	|j
durc|j
jdurc|j
j}	t|}t|}| jd|||	I dH }
|
js~i nt|
j}| jjrt|d|}| jjst|d|}t jj|t|ddrdt|j
d	dt|j
d
dt|j
dddini d}t j|
jd|_| j| |S )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  NrV   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  rc   r  r  r   r   r   r)  +  s   









zAsyncModels.count_tokensc             	      r  )aF  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.


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

    Usage:

    .. code-block:: python

      response = await client.aio.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r  NrV   r*  r  r  r   r  r#  r%  r  r  r  r  )r   r+  r  r  r   ra   r   r  r   r  r   r  r   r  r  r  r  r  r  rf   r,  r  r  r  r  rc   r  r  r   r   r   r-    st   







zAsyncModels.compute_tokensr.  r  c             	      s  t j||||||d}| jjr(t| j|d|}|d}	|	r%d|	}
nd}
nt| j|d|}|d}	|	r=d|	}
nd}
|d}|rO|
 dt| }
|	dd d}|j
durf|j
jdurf|j
j}t|}t|}| jd|
||I dH }|jsi nt|j}| jjrt|d|}| jjst|d|}t jj|t|ddrdt|j
d	dt|j
d
dt|j
dddini d}| j| |S )z4Private method for generating videos asynchronously.r/  NrV   r0  r  r  r   r  r#  r%  r  r  r  )r   r1  r  r  r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  r2  r  r  r  r3  r   r   r   r4    s   









zAsyncModels._generate_videosFc             	      s  t j|t| jddd}|sd}nt|tr tjdi |}n|jdd}t	
 4 I dH }| jjrt |r|durg }|jr|jD ][}t|tjr|jr|js_|js_|js_|js_|jrl|jddid}	||	 |jD ]*}
t|
d	ddur}td
|
jdur|t| j|
jI dH }|| qotdqE|| qE||_t j|t| jdddI dH \}}t |r| j|||dI dH W  d  I dH  S |rt || | j|||dI dH W  d  I dH  S t |}t !d| d t"j#st $d dt"_#g }t% }|dkrt j&||dd}|r"|jddnd}|r0t j'|tjdd}| j|||dI dH }|d8 }|dkrIt !d |sMn^|sQnZ|j(rd|j(d j)rd|j(d j)j*senFt +||I dH }|srn9|j(d j)}tj,d|d}t-.|}|s|/| t|t0r|| || || || |dkst 1|r|dur||_2|W  d  I dH  S 1 I dH sw   Y  dS )ad  Makes an API request to generate content using a model.

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

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

      response = await client.aio.models.generate_content(
          model='gemini-2.0-flash',
          contents='User input: I like bagels. Answer:',
          config=types.GenerateContentConfig(
              system_instruction=
                [
                  'You are a helpful language translator.',
                  'Your mission is to translate text in English to French.'
                ]
          ),
      )
      print(response.text)
      # J'aime les bagels.
    r  Fis_agent_platformNTr@  r  r!  r  The 'streamable_http_transport' parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.2Agent Platform MCP servers require a 'name' field.r  r>  r?  a9  Direct use of automatic function calling (AFC) in AsyncModels.generate_content is not recommended. Instead, we recommend to use AFC in AsyncChat.send_message. Similarly, direct use of AFC in AsyncModels.generate_content_stream is not recommended. Instead, we recommend to use AFC in AsyncChat.send_message_stream.r   is_caller_method_asyncrB  usager	   rE  rF  rG  r   )3r   rH  r  r  rZ  r  r   rV  rS  
contextlibAsyncExitStackr  has_agent_platform_mcp_serversr   Toolr  r  r  r  r  r  r\  r   r   enter_async_contextr   _connect_agent_platform_mcpparse_config_for_mcp_sessionsrL  r  rM  rN  rO  rP  r  rQ  rR  r  rT  rU  r]  r7   rw   !get_function_response_parts_asyncrX  r]   r_   rY  r[  r]  r^  )r  rU   rW   r   r_  r`  stack	new_toolstool	tool_copyserversessionfinal_parsed_configmcp_to_genai_tool_adaptersra  r^  r  rd  final_parsed_config_to_callre  rf  rg  r   r   r   rh  a   s&  (









@
H










:
 2zAsyncModels.generate_contentc                   sh    sdnt  trtjd	i  n jddtjtjddd fdd}| S )
aM  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 Gemini Enterprise Agent
    Platform 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
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

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

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

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

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

      async for chunk in await 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.
    NTr@  r  Fr  c               	     s  t  4 I d H } }tjddrt|r|d urg }|jr|jD ][}t|tj	r{|j
r{|js?|js?|js?|js?|jrL|jdd id}|| |j
D ]*}t|dd d ur]td|jd urv| tj|jI d H }|| qOtdq%|| q%||_tj|tjdddI d H \}}t|rj|d	I d H }	|	2 z	3 d H W }
|
V  q6 	 W d   I d H  d S rt  j|d	I d H }	|	2 z	3 d H W }
|
V  q6 	 W d   I d H  d S t| t|}td
| d tj s	t!d dt_ g }d}}|dkrtj"||dd}|r%|jddnd }|r3tj#|tj$dd}|d7 }j||d	I d H }	g }g }d }
|	2 zQ3 d H W }
t%|r\|r\||
_&|r|
j'r|
j'd j(r|
j'd j(j)rt*|
|I d H }|r|+| |
j'r|
j'd j(r||
j'd j( |
V  qJ6 |r|snJtd| d |d8 }|dkrtd tj,d|d}t-.|}|s|+| t|t/r|+| || |+| || |dksW d   I d H  d S 1 I d H s w   Y  d S )Nr  Fr  r  r  r  r  r  r  r>  r?  a9  Direct use of automatic function calling (AFC) in AsyncModels.generate_content_stream is not recommended. Instead, we recommend to use AFC in AsyncChat.send_message_stream. Similarly, direct use of AFC in AsyncModels.generate_content is not recommended. Instead, we recommend to use AFC in AsyncChat.send_message.Tr   r  r@  rB  r  r	   rC  rD  rE  rF  rG  )0r  r  r  r  r   r  r   rZ  r   r  r  r  r  r  r  r  rS  r\  r   r   r  r   r  r  rL  r  rM  ri  rN  rO  rP  r  rQ  rR  rT  rU  rV  r]  r^  r]  r7   rw   r  rY  rX  r]   r_   r[  )r  current_configr  r  r  r  r  r  r  r  rk  ra  r^  rb  loop_contentsrd  r  rj  re  rl  rg  r   rW   r_  rU   r`  r  r   r   stream_generator!  sB  







?J










0z=AsyncModels.generate_content_stream.<locals>.stream_generatorr   )	rZ  r  r   rV  rS  r   rH  r  r  )r  rU   rW   r   r  r   r  r   rm  5!  s   A
 :z#AsyncModels.generate_content_streamrv  c                   s   | j ||||dI dH S )a_  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(location=IMAGE_FILE_PATH),
      )

      mask_ref_image = MaskReferenceImage(
        reference_id=2,
        config=types.MaskReferenceConfig(
            mask_mode='MASK_MODE_FOREGROUND',
            mask_dilation=0.06,
        ),
      )
      response = await client.aio.models.edit_image(
        model='imagen-3.0-capability-001',
        prompt='man with dog',
        reference_images=[raw_ref_image, mask_ref_image],
        config=types.EditImageConfig(
            edit_mode= "EDIT_MODE_INPAINT_INSERTION",
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog instead of a cat.
    r  Nrw  rx  r   r   r   ry  ?"  s   7zAsyncModels.edit_imagec                   sx   t j|djpt  }|jdu rd|_| jjr-|jdd}|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   r  r  r  r  rS  r  r   r  r  r   r   r   r[  }"  s(   

zAsyncModels.listrn  c          	         sp   | j |||dI dH }d}g }|r|js|S |jD ]}|jr)|jjdkr)|j}q|| qtj||d}|S )az  Generates images based on a text description and configuration.

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

    Usage:

    .. code-block:: python

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

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

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response = await client.aio.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(location=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  Nr   r   r   r   r   r   r  r  r   rz  r{  r  r	   r   r|  r  r   r   r   r  "  sF   !








zAsyncModels.upscale_imagec          
         sj  |s|s|r#|rt dtjstjdtdd dt_t|tj	d i }| j
jsR|rRt|tjr6| }nt|}|drQ|drQtj|d|d	d
}nU| j
js|rt|tjri| }|di }nt|}t|dtjr|dt }	|	 }|r|dr|drtj|d|dtj|d|d	d
d}| j||||||dI dH S )r  r  r  r  r  Tr  r  r  r3   r  r  r   r  r  r/  N)r   r  r  r  r  r  r   rU  r   r  r  r  rZ  r  r  r  r   r  r4  r  r   r   r   r  :#  sj   1
zAsyncModels.generate_videosc                   s   | j jsd|v rt|}| j|||dI dH S t|r>t|}t|dkr-td| j|||d tj	j
|dI dH S | j||tj	j|dI dH S )	a  Calculates embeddings for the given contents.

    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
          },
      )

      multimodal_embeddings = await client.aio.models.embed_content(
          model='gemini-embedding-2-preview',
          contents=[
              types.Part.from_uri(
                  file_uri='gs://generativeai-downloads/images/scones.jpg',
                  mime_type='image/jpeg',
              ),
          ],
          config={
              'output_dimensionality': 64
          },
      )
    r5  r  Nr	   r6  r   r  )rU   rW   r   r   r7  r:  r   r   r   r<  #  s4   *


zAsyncModels.embed_content)Mr  r  r  r  r   r   r  r  r   r  r  r  r   r   r  r  r  r9  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  r2  r4  r  rQ  rh  rm  r   r  ry  r   ru  r  r  r  r<  r   r   r   r   r    s   
e
p

~
X

Z
Y
s
k
O
\
U
\
s
j	
_
 Z
  
;
4=
N	
qr  )NN)r  r  r  loggingtypingr   r   r   r   r   r   urllib.parser   r   r
   r   r  r   r   r   r   r]   r   r   r  r   r   r+   r   r,   pagersr   r   	getLoggerrO  r   r  r  objectr/   r5   rP   rO   ra   rf   rm   rq   rt   r{   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  rO  rX  rZ  r\  rf  ri  rn  ro  rs  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  rN  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   r}   r?  r@  rD  rF  rC  r   r]  rr  r+  rf  rn  rp  rr  ro  r  rV  rK  rU  r-  r   r  r  r  r  r  r  r  r  r  r}  r  r  r  r  r  rx  
BaseModuler  r  r   r   r   r   <module>   s
   



2



;







"













+

#

"













|

%



4

t

/

7



,





 



 P

 I

'

&

)

&

|



%

 

 

-

*

/

.

#

#







'





 









/

2







$

$













<

;



a

X



R





#

:

!







/





 



"

"



V

R











R

&















                 '