o
    پi                     @   s  d Z ddlZddlmZmZmZ ddlmZmZm	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dS )z3Pydantic models for Anthropic Messages API protocol    N)AnyLiteralOptional)	BaseModelFieldfield_validatorc                   @   s"   e Zd ZU dZeed< eed< dS )AnthropicErrorz!Error structure for Anthropic APItypemessageN)__name__
__module____qualname____doc__str__annotations__ r   r   ]/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/entrypoints/anthropic/protocol.pyr   	   s   
 r   c                   @   s*   e Zd ZU dZdZed ed< eed< dS )AnthropicErrorResponsez*Error response structure for Anthropic APIerrorr	   N)r   r   r   r   r	   r   r   r   r   r   r   r   r      s   
 r   c                   @   sB   e Zd ZU dZeed< eed< dZee ed< dZee ed< dS )AnthropicUsagezToken usage informationinput_tokensoutput_tokensNcache_creation_input_tokenscache_read_input_tokens)	r   r   r   r   intr   r   r   r   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU dZed ed< dZee ed< dZ	ee
eef  ed< dZee ed< dZee ed< dZee ed	< dZee
eef  ed
< dZeeee
eef  B  ed< dZee ed< dZee ed< dZee ed< dS )AnthropicContentBlockzContent block in message)textimagetool_usetool_resultthinkingredacted_thinkingr	   Nr   sourceidtool_use_idnameinputcontentis_errorr    	signature)r   r   r   r   r   r   r   r   r   r"   dictr   r#   r$   r%   r&   r'   listr(   boolr    r)   r   r   r   r   r       s   
  r   c                   @   s.   e Zd ZU dZed ed< eee B ed< dS )AnthropicMessagezMessage structure)user	assistantroler'   N)	r   r   r   r   r   r   r   r+   r   r   r   r   r   r-   5      
 r-   c                   @   sN   e Zd ZU dZeed< dZee ed< eee	f ed< e
dedd ZdS )AnthropicToolzTool definitionr%   Ndescriptioninput_schemac                 C   s&   t |ts	tdd|vrd|d< |S )Nz!input_schema must be a dictionaryr	   object)
isinstancer*   
ValueErrorclsvr   r   r   validate_input_schemaC   s
   
z#AnthropicTool.validate_input_schema)r   r   r   r   r   r   r3   r   r*   r   r   classmethodr;   r   r   r   r   r2   <   s   
 r2   c                   @   s.   e Zd ZU dZed ed< dZee ed< dS )AnthropicToolChoicezTool Choice definition)autoanytoolnoner	   Nr%   )	r   r   r   r   r   r   r%   r   r   r   r   r   r   r=   M   r1   r=   c                   @   sb   e Zd ZU dZeed< ee ed< dZe	eee
 B  ed< dZe	e ed< dZe	ee  ed< dS )AnthropicCountTokensRequestz"Anthropic Count Tokens API requestmodelmessagesNsystemtool_choicetools)r   r   r   r   r   r   r+   r-   rE   r   r   rF   r=   rG   r2   r   r   r   r   rB   T   s   
 rB   c                   @   s   e Zd ZU dZeed< dS )AnthropicCountTokensResponsez#Anthropic Count Tokens API responser   N)r   r   r   r   r   r   r   r   r   r   rH   ^   s   
 rH   c                   @   s   e Zd ZU dZeed< ee ed< eed< dZ	e
eeef  ed< dZe
ee  ed< dZe
e ed	< dZe
eee B  ed
< dZe
e ed< dZe
e ed< dZe
ee  ed< dZe
e ed< dZe
e ed< ededd Zededd ZdS )AnthropicMessagesRequestzAnthropic Messages API requestrC   rD   
max_tokensNmetadatastop_sequencesFstreamrE   temperaturerF   rG   top_ktop_pc                 C   s   |st d|S )NzModel is requiredr7   r8   r   r   r   validate_modelt   s   z'AnthropicMessagesRequest.validate_modelc                 C   s   |dkrt d|S )Nr   zmax_tokens must be positiverQ   r8   r   r   r   validate_max_tokens{   s   z,AnthropicMessagesRequest.validate_max_tokens)r   r   r   r   r   r   r+   r-   r   rK   r   r*   r   rL   rM   r,   rE   r   rN   floatrF   r=   rG   r2   rO   rP   r   r<   rR   rS   r   r   r   r   rI   d   s(   
 rI   c                   @   sj   e Zd ZU dZdZeed  ed< dZee	 ed< dZ
ee	 ed< dZeed  ed< dZee	 ed	< dS )
AnthropicDeltazDelta for streaming responsesN)
text_deltainput_json_deltar	   r   partial_jsonend_turnrJ   stop_sequencer   stop_reasonr[   )r   r   r   r   r	   r   r   r   r   r   rX   r\   r[   r   r   r   r   rU      s   
 rU   c                   @   s~   e Zd ZU dZed ed< dZed ed< dZee	 ed< dZ
ee ed< dZee ed	< dZee ed
< dZee ed< dS )AnthropicStreamEventzStreaming event)message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stoppingr   r	   NAnthropicMessagesResponser
   deltacontent_blockindexr   usage)r   r   r   r   r   r   r
   r   rf   rU   rg   r   rh   r   r   r   ri   r   r   r   r   r   r]      s   
 
r]   c                   @   s   e Zd ZU dZedd dZeed< dZe	d ed< dZ
e	d ed	< ee ed
< eed< dZee	d  ed< dZee ed< dZee ed< dS )re   zAnthropic Messages API responsec                   C   s   dt  j S )Nmsg_)uuiduuid4hexr   r   r   r   <lambda>   s    z"AnthropicMessagesResponse.<lambda>)default_factoryr#   r
   r	   r/   r0   r'   rC   NrY   r\   r[   ri   )r   r   r   r   r   r#   r   r   r	   r   r0   r+   r   r\   r   r[   ri   r   r   r   r   r   re      s   
 re   )r   rk   typingr   r   r   pydanticr   r   r   r   r   r   r   r-   r2   r=   rB   rH   rI   rU   r]   re   r   r   r   r   <module>   s"    	
