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 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Optional)	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   `/home/ubuntu/veenaModal/venv/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   classmethodr6   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   r8   I   r,   r8   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r2   r3   r   r   r   validate_model`   s   z'AnthropicMessagesRequest.validate_modelc                 C   s   |dkrt d|S )Nr   zmax_tokens must be positiverI   r3   r   r   r   validate_max_tokensg   s   z,AnthropicMessagesRequest.validate_max_tokens)r
   r   r   r   r   r   r&   r(   r   r@   r%   r   rA   rB   r'   rC   r   rD   floatrE   r8   rF   r-   rG   rH   r   r7   rJ   rK   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_reasonrS   )r
   r   r   r   r   r   r   r   r   rP   rT   rS   r   r   r   r   rM   o   s   
 
rM   c                   @   s~   e Zd ZU dZed ed< dZe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   NAnthropicMessagesResponser	   deltacontent_blockindexr   usage)r
   r   r   r   r   r   r	   r   r^   rM   r_   r   r`   r   r   r   ra   r   r   r   r   r   rU   }   s   
 
rU   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 )r]   zAnthropic Messages API responser    r	   r   r*   r+   r#   r=   NrQ   rT   rS   ra   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   rT   rS   ra   r   rf   r   r   r   r   r]      s   
 
r]   )r   rc   typingr   r   r   pydanticr   r   r   r   r   r   r(   r-   r8   r<   rM   rU   r]   r   r   r   r   <module>   s   	