o
    i                     @   s"  d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ eeZe Zd
edefddZejdeegejj ddi iiej!j deiej"j deiej#j deiideed
edefddZ$defddZ%dS )    )
HTTPStatus)	APIRouterDependsFastAPIRequest)JSONResponseStreamingResponse)AnthropicErrorAnthropicErrorResponseAnthropicMessagesRequestAnthropicMessagesResponse)AnthropicServingMessages)ErrorResponse)validate_json_request)load_aware_callwith_cancellation)init_loggerrequestreturnc                 C   s
   | j jjS N)appstateanthropic_serving_messages)r    r   [/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/entrypoints/anthropic/api_router.pymessages   s   
r   z/v1/messagescontenttext/event-streammodel)dependencies	responsesraw_requestc           	   
      s   dt dtfdd}t|}|d u r!|jjj}|jdd}||S z|| |I d H }W n+ tyW } zt	
d| ttjjttdt|d	d
 dW  Y d }~S d }~ww t|t ra||S t|trw|jdd}t	d| t|dS t|ddS )Nresponser   c                 S   s.   t t| jj| jjdd}t| jj| dS )Ntypemessageerrorstatus_coder   )r
   r	   r'   r$   r%   r   code
model_dump)r"   anthropic_errorr   r   r   translate_error_response/   s   z1create_messages.<locals>.translate_error_responsez'The model does not support Messages API)r%   zError in create_messages: %sinternal_errorr#   r&   r(   T)exclude_nonezAnthropic Messages Response: %s)r   r   )r   
media_type)r   r   r   r   r   openai_serving_tokenizationcreate_error_responsecreate_messages	Exceptionlogger	exceptionr   INTERNAL_SERVER_ERRORvaluer
   r	   strr+   
isinstancer   debugr   )	r   r!   r-   handlerbase_serverr'   	generatorerespr   r   r   r3   "   s@   



r3   r   c                 C   s   |  t d S r   )include_routerrouter)r   r   r   r   attach_router[   s   rC   N)&httpr   fastapir   r   r   r   fastapi.responsesr   r   #vllm.entrypoints.anthropic.protocolr	   r
   r   r   "vllm.entrypoints.anthropic.servingr   'vllm.entrypoints.openai.engine.protocolr   vllm.entrypoints.openai.utilsr   vllm.entrypoints.utilsr   r   vllm.loggerr   __name__r5   rB   r   postOKr8   BAD_REQUEST	NOT_FOUNDr7   r3   rC   r   r   r   r   <module>   s2   
-