o
    iD                      @   sD  d dl mZ d dlmZ d dlmZ d dlmZmZ G dd de	eZ
G dd de	eZG d	d
 d
eZG dd de	eZG dd de	eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2e	eZ G d3d4 d4eZ!G d5d6 d6e	eZ"G d7d8 d8eZ#G d9d: d:eZ$G d;d< d<eZ%G d=d> d>eZ&G d?d@ d@eZ'G dAdB dBeZ(G dCdD dDeZ)dES )F    )date)Enum)Any)	BaseModelFieldc                   @   s   e Zd ZdZdZdZdZdS )GeminiSafetyCategoryHARM_CATEGORY_SEXUALLY_EXPLICITHARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_HARASSMENTHARM_CATEGORY_DANGEROUS_CONTENTN)__name__
__module____qualname__r   r	   r
   r    r   r   9/mnt/c/Users/fbmor/ComfyUI/comfy_api_nodes/apis/gemini.pyr      s
    r   c                   @       e Zd ZdZdZdZdZdZdS )GeminiSafetyThresholdOFF
BLOCK_NONEBLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVEBLOCK_ONLY_HIGHN)r   r   r   r   r   r   r   r   r   r   r   r   r          r   c                   @   s   e Zd ZU eed< eed< dS )GeminiSafetySettingcategory	thresholdN)r   r   r   r   __annotations__r   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZdZdZdS )
GeminiRoleusermodelN)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdS )GeminiMimeTypez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/flvN)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    !   s"    r    c                   @   s:   e Zd ZU edddZedB ed< edZedB ed< dS )GeminiInlineDataNzThe 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mimeType)	r   r   r   r   r5   strr   r6   r    r   r   r   r   r2   4   s   
 r2   c                   @   s6   e Zd ZU edZedB ed< edZedB ed< dS )GeminiFileDataNfileUrir6   )	r   r   r   r   r9   r7   r   r6   r    r   r   r   r   r8   =      
 r8   c                   @   s^   e Zd ZU edZedB ed< edZedB ed< edZ	e
dB ed< edZedB ed< dS )
GeminiPartN
inlineDatafileDatatextthought)r   r   r   r   r<   r2   r   r=   r8   r>   r7   r?   boolr   r   r   r   r;   B   s
   
 r;   c                   @   s"   e Zd ZU edZedB ed< dS )GeminiTextPartNr>   )r   r   r   r   r>   r7   r   r   r   r   r   rA   I      
 rA   c                   @   s8   e Zd ZU eg Zee ed< eddgdZe	ed< dS )GeminiContentparts.r   )examplesroleN)
r   r   r   r   rD   listr;   r   rF   r   r   r   r   r   rC   M   s   
 rC   c                   @   s>   e Zd ZU edddZee ed< edddZe	dB ed< dS )GeminiSystemInstructionContent.zjA list of ordered parts that make up a single message. Different parts may have different IANA MIME types.r3   rD   z3The role field of systemInstruction may be ignored.NrF   )
r   r   r   r   rD   rG   rA   r   rF   r   r   r   r   r   rH   R   s   
 rH   c                   @   sN   e Zd ZU edZedB ed< edZeed< edddZe	ee
f ed< dS )GeminiFunctionDeclarationNr4   .namez'JSON schema for the function parametersr3   
parameters)r   r   r   r   r4   r7   r   rJ   rK   dictr   r   r   r   r   rI   [   s   
  rI   c                   @   s&   e Zd ZU edZee dB ed< dS )
GeminiToolNfunctionDeclarations)r   r   r   r   rN   rG   rI   r   r   r   r   r   rM   a   s   
 rM   c                   @   sB   e Zd ZU eddddZedB ed< eddddZedB ed< dS )	GeminiOffsetNr   iɚ;gelenanosl s%l    s%seconds)r   r   r   r   rS   intr   rT   r   r   r   r   rO   e   s   
 rO   c                   @   s6   e Zd ZU edZedB ed< edZedB ed< dS )GeminiVideoMetadataN	endOffsetstartOffset)r   r   r   r   rW   rO   r   rX   r   r   r   r   rV   j   r:   rV   c                   @   s   e Zd ZU eddddZedB ed< edZedB ed< edZe	e
 dB ed< eddd	dZedB ed
< edddZedB ed< eddddZedB ed< dS )GeminiGenerationConfigN   i    rP   maxOutputTokensseedstopSequencesg        g       @temperature   )rQ   topKg      ?topP)r   r   r   r   r[   rU   r   r\   r]   rG   r7   r^   floatr`   ra   r   r   r   r   rY   o   s   
 rY   c                   @   s2   e Zd ZU edZeed< edZedB ed< dS )GeminiImageOutputOptionsr!   r6   NcompressionQuality)	r   r   r   r   r6   r7   r   rd   rU   r   r   r   r   rc   x   s   
 rc   c                   @   sH   e Zd ZU edZedB ed< edZedB ed< eedZ	eed< dS )GeminiImageConfigNaspectRatio	imageSize)default_factoryimageOutputOptions)
r   r   r   r   rf   r7   r   rg   rc   ri   r   r   r   r   re   }   s   
 re   c                   @   s2   e Zd ZU edZedB ed< edZeed< dS )GeminiThinkingConfigNincludeThoughts.thinkingLevel)	r   r   r   r   rk   r@   r   rl   r7   r   r   r   r   rj      s   
 rj   c                   @   sN   e Zd ZU edZee dB ed< edZe	dB ed< edZ
edB ed< dS )GeminiImageGenerationConfigNresponseModalitiesimageConfigthinkingConfig)r   r   r   r   rn   rG   r7   r   ro   re   rp   rj   r   r   r   r   rm      s   
 rm   c                   @   s   e Zd ZU edZee ed< edZe	dB ed< edZ
ee dB ed< edZedB ed< edZee dB ed< edZedB ed< ed	Zeed
< dS )!GeminiImageGenerateContentRequest.contentsNgenerationConfigsafetySettingssystemInstructiontoolsvideoMetadataTuploadImagesToStorage)r   r   r   r   rr   rG   rC   r   rs   rm   rt   r   ru   rH   rv   rM   rw   rV   rx   r@   r   r   r   r   rq      s   
 rq   c                   @   s   e Zd ZU edZee ed< edZe	dB ed< edZ
ee dB ed< edZedB ed< edZee dB ed< edZedB ed< dS )	GeminiGenerateContentRequest.rr   Nrs   rt   ru   rv   rw   )r   r   r   r   rr   rG   rC   r   rs   rY   rt   r   ru   rH   rv   rM   rw   rV   r   r   r   r   ry      s   
 ry   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )ModalityMODALITY_UNSPECIFIEDTEXTIMAGEVIDEOAUDIODOCUMENTN)	r   r   r   r{   r|   r}   r~   r   r   r   r   r   r   rz      s    rz   c                   @   6   e Zd ZU dZedB ed< edddZedB ed< dS )ModalityTokenCountNmodalityz(Number of tokens for the given modality.r3   
tokenCount)	r   r   r   r   rz   r   r   r   rU   r   r   r   r   r      s   
 r   c                   @   r   )Probability
NEGLIGIBLELOWMEDIUMHIGHUNKNOWNN)r   r   r   r   r   r   r   r   r   r   r   r   r      r   r   c                   @   r   )GeminiSafetyRatingNr   zGThe probability that the content violates the specified safety categoryr3   probability)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU dZee dB ed< dZedB ed< dZ	edB ed< dZ
edB ed< dZedB ed< dZedB ed< dZedB ed< dS )	GeminiCitationNauthorsendIndexlicensepublicationDate
startIndextitleuri)r   r   r   r   rG   r7   r   r   rU   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s"   e Zd ZU dZee dB ed< dS )GeminiCitationMetadataN	citations)r   r   r   r   rG   r   r   r   r   r   r   r      rB   r   c                   @   sR   e Zd ZU dZedB ed< dZedB ed< dZe	dB ed< dZ
ee dB ed< dS )GeminiCandidateNcitationMetadatacontentfinishReasonsafetyRatings)r   r   r   r   r   r   r   rC   r   r7   r   rG   r   r   r   r   r   r      s
   
 r   c                   @   sB   e Zd ZU dZedB ed< dZedB ed< dZee	 dB ed< dS )GeminiPromptFeedbackNblockReasonblockReasonMessager   )
r   r   r   r   r7   r   r   r   rG   r   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU edddZedB ed< edddZedB ed< edddZe	e
 dB ed< edd	dZedB ed
< edddZe	e
 dB ed< edddZedB ed< edddZedB ed< dS )GeminiUsageMetadataNzSOutput only. Number of tokens in the cached part in the input (the cached content).r3   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).toolUsePromptTokenCount)r   r   r   r   r   rU   r   r   r   rG   r   r   r   r   r   r   r   r   r   r      s$   
 r   c                   @   sb   e Zd ZU edZee dB ed< edZe	dB ed< edZ
edB ed< edZedB ed< dS )GeminiGenerateContentResponseN
candidatespromptFeedbackusageMetadatamodelVersion)r   r   r   r   r   rG   r   r   r   r   r   r   r   r7   r   r   r   r   r      s
   
 r   N)*datetimer   enumr   typingr   pydanticr   r   r7   r   r   r   r   r    r2   r8   r;   rA   rC   rH   rI   rM   rO   rV   rY   rc   re   rj   rm   rq   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sH    			
		
