o
    i                     @   s   d Z ddlZddlmZmZ ddl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dS )z*Pydantic models for Anthropic API protocol    N)AnyLiteral)	BaseModel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   Y/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/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dB ed< dZedB 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      s   
 r   c                   @   s   e Zd ZU dZed ed< dZedB ed< dZe	ee
f dB ed< dZedB ed< dZedB ed< dZe	ee
f dB ed	< dZeee	ee
f  B dB ed
< dZedB ed< dS )AnthropicContentBlockzContent block in message)textimagetool_usetool_resultr   Nr   sourceidnameinputcontentis_error)r	   r
   r   r   r   r   r   r   r   dictr   r   r    r!   r"   listr#   boolr   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'   1      
 r'   c                   @   sN   e Zd ZU dZeed< dZedB 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_schema?   s
   
z#AnthropicTool.validate_input_schema)r	   r
   r   r   r   r   r-   r$   r   r   classmethodr5   r   r   r   r   r,   8   s   
 r,   c                   @   s.   e Zd ZU dZed ed< dZedB ed< dS )AnthropicToolChoicezTool Choice definition)autoanytoolr   Nr    )r	   r
   r   r   r   r   r    r   r   r   r   r   r7   I   r+   r7   c                   @   s   e Zd ZU dZeed< ee ed< eed< dZ	e
eef dB ed< dZee dB ed< dZedB ed	< dZeee B 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ZedB ed< dZedB ed< ededd Zededd ZdS )AnthropicMessagesRequestzAnthropic Messages API requestmodelmessages
max_tokensNmetadatastop_sequencesFstreamsystemtemperaturetool_choicetoolstop_ktop_pc                 C   s   |st d|S )NzModel is requiredr1   r2   r   r   r   validate_model`   s   z'AnthropicMessagesRequest.validate_modelc                 C   s   |dkrt d|S )Nr   zmax_tokens must be positiverH   r2   r   r   r   validate_max_tokensg   s   z,AnthropicMessagesRequest.validate_max_tokens)r	   r
   r   r   r   r   r%   r'   r   r?   r$   r   r@   rA   r&   rB   r   rC   floatrD   r7   rE   r,   rF   rG   r   r6   rI   rJ   r   r   r   r   r;   P   s(   
 r;   c                   @   sj   e Zd ZU dZdZed dB ed< dZedB ed< dZ	edB ed< dZ
ed dB ed< dZedB ed	< dS )
AnthropicDeltazDelta for streaming responsesN)
text_deltainput_json_deltar   r   partial_jsonend_turnr>   stop_sequencer   stop_reasonrR   )r	   r
   r   r   r   r   r   r   r   rO   rS   rR   r   r   r   r   rL   o   s   
 
rL   c                   @   sz   e Zd ZU dZed ed< dZd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 )AnthropicStreamEventzStreaming event)message_startmessage_deltamessage_stopcontent_block_startcontent_block_deltacontent_block_stoppingr   r   Nz AnthropicMessagesResponse | Noner   deltacontent_blockindexr   usage)r	   r
   r   r   r   r   r   r\   rL   r]   r   r^   r   r   r   r_   r   r   r   r   r   rT   }   s   
 
rT   c                   @   s   e Zd ZU 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d
 d	B ed< d	Zed	B ed< d	Zed	B ed< dd Zd	S )AnthropicMessagesResponsezAnthropic Messages API responser   r   r   r)   r*   r"   r<   NrP   rS   rR   r_   c                 C   s&   | j sdtt d  | _ d S d S )Nmsg_i  )r   r   time)self#_AnthropicMessagesResponse__contextr   r   r   model_post_init   s   z)AnthropicMessagesResponse.model_post_init)r	   r
   r   r   r   r   r   r   r*   r%   r   rS   rR   r_   r   re   r   r   r   r   r`      s   
 
r`   )r   rb   typingr   r   pydanticr   r   r   r   r   r   r'   r,   r7   r;   rL   rT   r`   r   r   r   r   <module>   s   	