
    +j                        S SK Jr  S SKJr  S SKJr  S SKJrJr   " S S\	\5      r
 " S S\	\5      r " S	 S
\5      r " S S\	\5      r " S S\	\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r " S# S$\5      r " S% S&\5      r " S' S(\5      r " S) S*\5      r " S+ S,\5      r " S- S.\5      r " S/ S0\5      r " S1 S2\	\5      r  " S3 S4\5      r! " S5 S6\	\5      r" " S7 S8\5      r# " S9 S:\5      r$ " S; S<\5      r% " S= S>\5      r& " S? S@\5      r' " SA SB\5      r( " SC SD\5      r)gE)F    )date)Enum)Any)	BaseModelFieldc                   $    \ rS rSrSrSrSrSrSrg)GeminiSafetyCategory   HARM_CATEGORY_SEXUALLY_EXPLICITHARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_HARASSMENTHARM_CATEGORY_DANGEROUS_CONTENT N)	__name__
__module____qualname____firstlineno__r   r   r   r   __static_attributes__r       ;/home/wildlama/comfy/ComfyUI/comfy_api_nodes/apis/gemini.pyr	   r	      s    &G# ;9&G#r   r	   c                   (    \ rS rSrSrSrSrSrSrSr	g)	GeminiSafetyThreshold   OFF
BLOCK_NONEBLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVEBLOCK_ONLY_HIGHr   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    
CJ/5'Or   r   c                   *    \ rS rSr% \\S'   \\S'   Srg)GeminiSafetySetting   category	thresholdr   N)r   r   r   r   r	   __annotations__r   r   r   r   r   r    r       s    ""$$r   r    c                       \ rS rSrSrSrSrg)
GeminiRole   usermodelr   N)r   r   r   r   r(   r)   r   r   r   r   r&   r&      s    DEr   r&   c                   T    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrg)GeminiMimeType!   zapplication/pdfz
audio/mpegz	audio/mp3z	audio/wav	image/pngz
image/jpegz
image/webpz
text/plainz	video/movz
video/mpegz	video/mp4z	video/mpgz	video/aviz	video/wmvzvideo/mpegpsz	video/flvr   N)r   r   r   r   application_pdf
audio_mpeg	audio_mp3	audio_wav	image_png
image_jpeg
image_webp
text_plain	video_mov
video_mpeg	video_mp4	video_mpg	video_avi	video_wmvvideo_mpegps	video_flvr   r   r   r   r+   r+   !   sR    'OJIIIJJJIJIIII!LIr   r+   c                   T    \ rS rSr% \" SSS9r\S-  \S'   \" S5      r\	S-  \S'   Sr
g)GeminiInlineData4   NzThe base64 encoding of the image, PDF, or video to include inline in the prompt. When including media inline, you must also specify the media type (mimeType) of the data. Size limit: 20MBdescriptiondatamimeTyper   )r   r   r   r   r   rC   strr$   rD   r+   r   r   r   r   r?   r?   4   s5    uD#* 
 ',DkHnt#1r   r?   c                   V    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\	S-  \S'   Sr
g)GeminiFileData=   NfileUrirD   r   )r   r   r   r   r   rI   rE   r$   rD   r+   r   r   r   r   rG   rG   =   s'    +GS4Z%&+DkHnt#1r   rG   c                       \ rS rSr% \" S5      r\S-  \S'   \" S5      r\	S-  \S'   \" S5      r
\S-  \S'   \" S5      r\S-  \S'   Srg)
GeminiPartB   N
inlineDatafileDatatextthoughtr   )r   r   r   r   r   rM   r?   r$   rN   rG   rO   rE   rP   boolr   r   r   r   rK   rK   B   sM    */+J 4'5&+DkHnt#1T{D#*" ;GTD[&r   rK   c                   6    \ rS rSr% \" S5      r\S-  \S'   Srg)GeminiTextPartI   NrO   r   )	r   r   r   r   r   rO   rE   r$   r   r   r   r   rS   rS   I   s    T{D#*"r   rS   c                   P    \ rS rSr% \" / 5      r\\   \S'   \" SS/S9r	\
\S'   Srg)	GeminiContentM   parts.r(   )examplesroler   N)r   r   r   r   r   rX   listrK   r$   rZ   r&   r   r   r   r   rV   rV   M   s(    #BiE4
'SF84D*4r   rV   c                   R    \ rS rSr% \" SSS9r\\   \S'   \" SSS9r	\
S-  \S'   S	rg)
GeminiSystemInstructionContentR   .zjA list of ordered parts that make up a single message. Different parts may have different IANA MIME types.rA   rX   z3The role field of systemInstruction may be ignored.NrZ   r   )r   r   r   r   r   rX   r[   rS   r$   rZ   r&   r   r   r   r   r]   r]   R   s9    "'>#E4 
 $C5jkD*t
kr   r]   c                   r    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\\S'   \" SSS9r	\
\\4   \S'   S	rg)
GeminiFunctionDeclaration[   NrB   .namez'JSON schema for the function parametersrA   
parametersr   )r   r   r   r   r   rB   rE   r$   rb   rc   dictr   r   r   r   r   r`   r`   [   s<    #DkKt)c
D#!&s8a!bJS#Xbr   r`   c                   <    \ rS rSr% \" S5      r\\   S-  \S'   Sr	g)
GeminiToola   NfunctionDeclarationsr   )
r   r   r   r   r   rh   r[   r`   r$   r   r   r   r   rf   rf   a   s    CH;$89D@Nr   rf   c                   V    \ rS rSr% \" SSSS9r\S-  \S'   \" SSSS9r\S-  \S	'   S
r	g)GeminiOffsete   Nr   iɚ;gelenanosl s%l    s%secondsr   )
r   r   r   r   r   ro   intr$   rp   r   r   r   r   rj   rj   e   s0    dqY7E3:7<HGS4ZHr   rj   c                   V    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\S-  \S'   Sr	g)GeminiVideoMetadataj   N	endOffsetstartOffsetr   )
r   r   r   r   r   ru   rj   r$   rv   r   r   r   r   rs   rs   j   s(    %*4[I|d"0',T{K$2r   rs   c                   P    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\	\S'   Sr
g)GeminiThinkingConfigo   NincludeThoughts.thinkingLevelr   )r   r   r   r   r   rz   rQ   r$   r{   rE   r   r   r   r   rx   rx   o   s"    #(;OTD[.sM3#r   rx   c                       \ rS rSr% \" SSSS9r\S-  \S'   \" S5      r\S-  \S'   \" S5      r	\
\   S-  \S'   \" SS	S
S9r\S-  \S'   \" SSS9r\S-  \S'   \" SS	SS9r\S-  \S'   \" S5      r\S-  \S'   Srg)GeminiGenerationConfigt   N   i   rl   maxOutputTokensseedstopSequencesg        g       @temperature   )rm   topKg      ?topPthinkingConfigr   )r   r   r   r   r   r   rq   r$   r   r   r[   rE   r   floatr   r   r   rx   r   r   r   r   r}   r}   t   s    "'">OS4Z>T{D#*"&+DkM49t#1 %dss ;K;Ta(D#*(t4D%$,427+N(4/=r   r}   c                   P    \ rS rSr% \" S5      r\\S'   \" S5      r\	S-  \S'   Sr
g)GeminiImageOutputOptions~   r-   rD   NcompressionQualityr   )r   r   r   r   r   rD   rE   r$   r   rq   r   r   r   r   r   r   ~   s$    +&Hc&%*4[d
0r   r   c                   l    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\S-  \S'   \" \	S9r
\	\S'   Srg)GeminiImageConfig   NaspectRatio	imageSize)default_factoryimageOutputOptionsr   )r   r   r   r   r   r   rE   r$   r   r   r   r   r   r   r   r   r      s8    #DkKt)!$KIsTz'38Ia3b0br   r   c                   |    \ rS rSr% \" S5      r\\   S-  \S'   \" S5      r	\
S-  \S'   \" S5      r\S-  \S'   Srg)GeminiImageGenerationConfig   NresponseModalitiesimageConfigr   r   )r   r   r   r   r   r   r[   rE   r$   r   r   r   rx   r   r   r   r   r   r      sB    +0;S	D(6,1$KK"T)727+N(4/=r   r   c                       \ rS rSr% \" S5      r\\   \S'   \" S5      r	\
S-  \S'   \" S5      r\\   S-  \S'   \" S5      r\S-  \S'   \" S5      r\\   S-  \S'   \" S5      r\S-  \S	'   \" S
5      r\\S'   Srg)!GeminiImageGenerateContentRequest   .contentsNgenerationConfigsafetySettingssystemInstructiontoolsvideoMetadataTuploadImagesToStorager   )r   r   r   r   r   r   r[   rV   r$   r   r   r   r    r   r]   r   rf   r   rs   r   rQ   r   r   r   r   r   r      s    $)#JHd=!.;@;1D8F7<T{ND,-4B?DT{5<J%*4[E4
d"005dM&-;"'+4-r   r   c                       \ rS rSr% \" S5      r\\   \S'   \" S5      r	\
S-  \S'   \" S5      r\\   S-  \S'   \" S5      r\S-  \S'   \" S5      r\\   S-  \S'   \" S5      r\S-  \S	'   S
rg)GeminiGenerateContentRequest   .r   Nr   r   r   r   r   r   )r   r   r   r   r   r   r[   rV   r$   r   r}   r   r    r   r]   r   rf   r   rs   r   r   r   r   r   r      s    $)#JHd=!.6;Dk,t3A7<T{ND,-4B?DT{5<J%*4[E4
d"005dM&-;r   r   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
Modality   MODALITY_UNSPECIFIEDTEXTIMAGEVIDEOAUDIODOCUMENTr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s!    1DEEEHr   r   c                   H    \ rS rSr% Sr\S-  \S'   \" SSS9r\	S-  \S'   Sr
g)ModalityTokenCount   Nmodalityz(Number of tokens for the given modality.rA   
tokenCountr   )r   r   r   r   r   r   r$   r   r   rq   r   r   r   r   r   r      s&     $Hho$"45_`Jd
`r   r   c                   (    \ rS rSrSrSrSrSrSrSr	g)	Probability   
NEGLIGIBLELOWMEDIUMHIGHUNKNOWNr   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    J
CFDGr   r   c                   H    \ rS rSr% Sr\S-  \S'   \" SSS9r\	S-  \S'   Sr
g)GeminiSafetyRating   Nr"   zGThe probability that the content violates the specified safety categoryrA   probabilityr   )r   r   r   r   r"   r	   r$   r   r   r   r   r   r   r   r   r      s.    ,0H"T)0&+]'Kt# r   r   c                       \ rS rSr% Sr\\   S-  \S'   Sr\	S-  \S'   Sr
\S-  \S'   Sr\S-  \S'   Sr\	S-  \S'   Sr\S-  \S'   Sr\S-  \S	'   S
rg)GeminiCitation   NauthorsendIndexlicensepublicationDate
startIndextitleurir   )r   r   r   r   r   r[   rE   r$   r   rq   r   r   r   r   r   r   r   r   r   r   r   r      si     $GT#Y$HcDjGS4Z#'OTD['!Jd
!E3:Ctr   r   c                   0    \ rS rSr% Sr\\   S-  \S'   Srg)GeminiCitationMetadata   N	citationsr   )	r   r   r   r   r   r[   r   r$   r   r   r   r   r   r      s    -1ItN#d*1r   r   c                   l    \ rS rSr% Sr\S-  \S'   Sr\S-  \S'   Sr	\
S-  \S'   Sr\\   S-  \S'   Srg)GeminiCandidate   NcitationMetadatacontentfinishReasonsafetyRatingsr   )r   r   r   r   r   r   r$   r   rV   r   rE   r   r[   r   r   r   r   r   r   r      sE    6:,t3:$(G]T!(#L#*#59M4*+d29r   r   c                   X    \ rS rSr% Sr\S-  \S'   Sr\S-  \S'   Sr\	\
   S-  \S'   Srg)GeminiPromptFeedback   NblockReasonblockReasonMessager   r   )r   r   r   r   r   rE   r$   r   r   r[   r   r   r   r   r   r   r      s4    "Kt"%)d
)59M4*+d29r   r   c                       \ rS rSr% \" SSS9r\S-  \S'   \" SSS9r\S-  \S'   \" SSS9r	\
\   S-  \S	'   \" SS
S9r\S-  \S'   \" SSS9r\
\   S-  \S'   \" SSS9r\S-  \S'   \" SSS9r\S-  \S'   Srg)GeminiUsageMetadata   NzSOutput only. Number of tokens in the cached part in the input (the cached content).rA   cachedContentTokenCountz$Number of tokens in the response(s).candidatesTokenCountz*Breakdown of candidate tokens by modality.candidatesTokensDetailszNumber of tokens in the request. When cachedContent is set, this is still the total effective prompt size meaning this includes the number of tokens in the cached content.promptTokenCountz'Breakdown of prompt tokens by modality.promptTokensDetailsz,Number of tokens present in thoughts output.thoughtsTokenCountz/Number of tokens present in tool-use prompt(s).toolUsePromptTokenCountr   )r   r   r   r   r   r   rq   r$   r   r   r[   r   r   r   r   r   r   r   r   r   r   r      s    */i+S4Z  (-T?e'f#*f?DF@T"45<  $) B$cDj  <AC<01D8  &+4=k%ld
l*/Bs*tS4Ztr   r   c                       \ rS rSr% \" S5      r\\   S-  \S'   \" S5      r	\
S-  \S'   \" S5      r\S-  \S'   \" S5      r\S-  \S'   Srg)GeminiGenerateContentResponse   N
candidatespromptFeedbackusageMetadatamodelVersionr   )r   r   r   r   r   r   r[   r   r$   r   r   r   r   r   rE   r   r   r   r   r   r      sT    /4T{J_%,:27+N(4/=05dM&-;$T{L#**r   r   N)*datetimer   enumr   typingr   pydanticr   r   rE   r	   r   r    r&   r+   r?   rG   rK   rS   rV   r]   r`   rf   rj   rs   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s      %H3 H(C (%) %
d 
S$ &2y 22Y 2
' '#Y #5I 5
lY lc	 cO OI9 I
3) 3
$9 $
>Y >1y 1
c	 c>"8 >.	 .<9 <sD a a
#t  Y 2Y 2:i ::9 :u) u(+I +r   