o
    :/i                     @   s  d Z ddlZddl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G dd  d eZdS )!z*Pydantic models for Anthropic API protocol    N)AnyLiteral)	BaseModelfield_validatormodel_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   p/lsinfo/ai/hellotax_ai/llm_service/venv_vllm/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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ZedB ed< dZedB ed< dZedB 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data)r
   r   r   r   r   r   r   r   r!   dictr   r"   r#   r$   r%   r&   listr'   boolr   r(   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-   >   s   
 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_schemaL   s
   
z#AnthropicTool.validate_input_schema)r
   r   r   r   r   r   r2   r*   r   r   classmethodr:   r   r   r   r   r1   E   s   
 r1   c                   @   sB   e Zd ZU dZed ed< dZedB ed< edddd	d
Z	dS )AnthropicToolChoicezTool Choice definition)autoanytoolnoner   Nr$   after)modereturnc                 C   s   | j dkr| jstd| S )Nr?   z0tool_choice.name is required when type is 'tool')r   r$   r6   )selfr   r   r   validate_name_required_for_tool\   s   z3AnthropicToolChoice.validate_name_required_for_tool)rC   r<   )
r
   r   r   r   r   r   r$   r   r   rE   r   r   r   r   r<   V   s   
 r<   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t d|S NzModel is requiredr6   r7   r   r   r   validate_models      z'AnthropicMessagesRequest.validate_modelc                 C   s   |dkrt d|S )Nr   zmax_tokens must be positiverU   r7   r   r   r   validate_max_tokensz   s   z,AnthropicMessagesRequest.validate_max_tokens)r
   r   r   r   r   r   r+   r-   r   rJ   r*   r   rK   rL   r,   rM   r   rN   floatrO   r<   rP   r1   rQ   rR   r   r;   rV   rX   r   r   r   r   rF   c   s(   
 rF   c                   @   s   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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_deltathinking_deltasignature_deltar   r   r   partial_jsonr(   end_turnrI   stop_sequencer   stop_reasonrb   )r
   r   r   r   r   r   r   r   r   r   r_   r(   rc   rb   r   r   r   r   rZ      s"   
 
rZ   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	   rl   rZ   rm   r   rn   r   r   r   ro   r   r   r   r   r   rd      s   
 
rd   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/   r0   r&   rG   Nr`   rc   rb   ro   c                 C   s&   | j sdtt d  | _ d S d S )Nmsg_i  )r"   r   time)rD   #_AnthropicMessagesResponse__contextr   r   r   model_post_init   s   z)AnthropicMessagesResponse.model_post_init)r
   r   r   r   r   r   r   r   r0   r+   r   rc   rb   ro   r   rt   r   r   r   r   rp      s   
 
rp   c                   @   s   e Zd ZU dZeed< dS )AnthropicContextManagementz2Context management information for token counting.original_input_tokensN)r
   r   r   r   r   r   r   r   r   r   ru      s   
 ru   c                   @   sv   e Zd ZU dZeed< ee ed< dZeee	 B dB ed< dZ
edB ed< dZee dB ed< ededd	 ZdS )
AnthropicCountTokensRequestz'Anthropic messages.count_tokens requestrG   rH   NrM   rO   rP   c                 C   rS   rT   rU   r7   r   r   r   rV      rW   z*AnthropicCountTokensRequest.validate_model)r
   r   r   r   r   r   r+   r-   rM   r   rO   r<   rP   r1   r   r;   rV   r   r   r   r   rw      s   
 rw   c                   @   s*   e Zd ZU dZeed< dZedB ed< dS )AnthropicCountTokensResponsez(Anthropic messages.count_tokens responser   Ncontext_management)r
   r   r   r   r   r   ry   ru   r   r   r   r   rx      s   
 rx   )r   rr   typingr   r   pydanticr   r   r   r   r   r   r   r-   r1   r<   rF   rZ   rd   rp   ru   rw   rx   r   r   r   r   <module>   s$   	