
    +j
                     h   S 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
\\-  \
-  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g )!zPydantic models for the OpenRouter chat completions API.

See: https://openrouter.ai/docs/api/api-reference/chat/send-chat-completion-request
    )Literal)	BaseModelFieldc                   D    \ rS rSr% Sr\S   \S'   \" S5      r\	\S'   Sr
g)OpenRouterTextContent   texttype. N)__name__
__module____qualname____firstlineno__r
   r   __annotations__r   r	   str__static_attributes__r       ?/home/wildlama/comfy/ComfyUI/comfy_api_nodes/apis/openrouter.pyr   r      s    "D'&/"c
D#r   r   c                   0    \ rS rSr% \" S5      r\\S'   Srg)OpenRouterImageUrl   .urlr   N	r   r   r   r   r   r   r   r   r   r   r   r   r   r          SzCr   r   c                   D    \ rS rSr% Sr\S   \S'   \" S5      r\	\S'   Sr
g)OpenRouterImageContent   	image_urlr
   .r   N)r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r           !,D'+
,$)#JI!.r   r   c                   0    \ rS rSr% \" S5      r\\S'   Srg)OpenRouterVideoUrl   .r   r   Nr   r   r   r   r!   r!      r   r   r!   c                   D    \ rS rSr% Sr\S   \S'   \" S5      r\	\S'   Sr
g)OpenRouterVideoContent   	video_urlr
   .r   N)r   r   r   r   r
   r   r   r   r&   r!   r   r   r   r   r$   r$      r   r   r$   c                   \    \ rS rSr% \" S5      r\S   \S'   \" S5      r\	\
\   -  \S'   Srg)OpenRouterMessage%   .)systemuser	assistantrolecontentr   N)r   r   r   r   r   r-   r   r   r.   r   listOpenRouterContentBlockr   r   r   r   r(   r(   %   s/    38:D'/
0=27*GS4.//<r   r(   c                   T    \ rS rSr% \" S5      r\S-  \S'   \" SSS9r\	S-  \S'   Sr
g)OpenRouterReasoningConfig*   Neffortz?If true, model reasons but reasoning is excluded from response.descriptionexcluder   )r   r   r   r   r   r4   r   r   r7   boolr   r   r   r   r2   r2   *   s*    tFC$J$ 3tuGTD[ur   r2   c                   6    \ rS rSr% \" S5      r\S-  \S'   Srg)OpenRouterWebSearchOptions/   Nsearch_context_sizer   )	r   r   r   r   r   r<   r   r   r   r   r   r   r:   r:   /   s    &+Dkt1r   r:   c                       \ rS rSr% \" S5      r\\S'   \" S5      r\	\
   \S'   \" S5      r\S-  \S'   \" S5      r\S-  \S'   \" S5      r\S-  \S'   \" S	5      r\\S
'   Srg)OpenRouterChatRequest3   .modelmessagesNseed	reasoningweb_search_optionsFstreamr   )r   r   r   r   r   r@   r   r   rA   r/   r(   rB   intrC   r2   rD   r:   rE   r8   r   r   r   r   r>   r>   3   sm    sE3(-c
Hd$%2T{D#*"27+I(4/=<A$K2T9G<FDr   r>   c                       \ rS rSr% \" S5      r\S-  \S'   \" S5      r\S-  \S'   \" S5      r	\S-  \S'   \" SSS9r
\S-  \S'   S	rg)
OpenRouterUsage<   Nprompt_tokenscompletion_tokenstotal_tokensz/Server-side authoritative USD cost of the call.r5   costr   )r   r   r   r   r   rJ   rF   r   rK   rL   rM   floatr   r   r   r   rH   rH   <   sO     %dM3:+$)$KsTz/$T{L#**t1bcD%$,cr   rH   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)OpenRouterResponseMessageC   Nr-   r.   rC   refusalr   )r   r   r   r   r   r-   r   r   r.   rC   rR   r   r   r   r   rP   rP   C   sJ    T{D#*"+GS4Z%!$KIsTz'+GS4Z%r   rP   c                   v    \ rS rSr% \" S5      r\S-  \S'   \" S5      r\	S-  \S'   \" S5      r
\S-  \S'   Srg)OpenRouterChoiceJ   Nindexmessagefinish_reasonr   )r   r   r   r   r   rV   rF   r   rW   rP   rX   r   r   r   r   r   rT   rT   J   s:    dE3:#05dG&-; %dM3:+r   rT   c                   |    \ rS rSr% \" S5      r\\-  S-  \S'   \" S5      r	\S-  \S'   \" S5      r
\S-  \S'   Srg)OpenRouterErrorP   NcoderW   metadatar   )r   r   r   r   r   r\   rF   r   r   rW   r]   dictr   r   r   r   rZ   rZ   P   s=    "4[D#)d
(+GS4Z%!$KHdTk'r   rZ   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5      r\\   S-  \S'   \" S5      r\S-  \S'   \" S5      r\S-  \S	'   S
rg)OpenRouterChatResponseV   Nidr@   objectproviderchoicesusageerrorr   )r   r   r   r   r   rb   r   r   r@   rc   rd   re   r/   rT   rf   rH   rg   rZ   r   r   r   r   r`   r`   V   s    4[Bd
 dE3:#tFC$J$ ;HcDj&-24[GT"#d*8$)$KE?T!/$)$KE?T!/r   r`   N)__doc__typingr   pydanticr   r   r   r   r   r!   r$   r0   r(   r2   r:   r>   rH   rP   rT   rZ   r`   r   r   r   <module>rk      s   
  %I 
 /Y /
 /Y /
 /1GGJ`` =	 =
v	 v
2 2 I  di d&	 &,y ,(i (0Y 0r   