o
    -i2                     @   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 d dl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ZdededB 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%ejdeege&ej"j!deiej#j!deiej$j!deiiddedefddZ'defddZ(dS )     )
HTTPStatus)	APIRouterDependsFastAPIRequest)JSONResponseStreamingResponse)CompletionRequestCompletionResponse)OpenAIServingCompletion)ErrorResponse)metrics_header)validate_json_request)load_aware_callwith_cancellation)init_loggerzendpoint-load-metrics-formatrequestreturnNc                 C   s
   | j jjS N)appstateopenai_serving_completion)r    r   j/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/entrypoints/openai/completion/api_router.py
completion   s   
r   z/v1/completionscontenttext/event-streammodel)dependencies	responsesraw_requestc              
      s   |j td}t|}|d u r|jjj}|jddS z|| |I d H }W n t	y= } z||W  Y d }~S d }~ww t
|trMt| |jjdS t
|tr\t| t|dS t|ddS )N *The model does not support Completions APImessager   status_code)r   headersr   )r   
media_type)r'   get)ENDPOINT_LOAD_METRICS_FORMAT_HEADER_LABELr   r   r   openai_serving_tokenizationcreate_error_responsecreate_completion	Exception
isinstancer   r   
model_dumperrorcoder
   r   r   )r   r    metrics_header_formathandlerbase_server	generatorer   r   r   r-   "   s4   


r-   z/v1/completions/render)r   response_modelr   c              
      s   t |}|du r|jjj}|jddS z
|| I dH }W n ty5 } z||W  Y d}~S d}~ww t|trEt	|
 |jjdS t	|dS )zGrender completion request and return engine prompts without generating.Nr"   r#   r%   )r   )r   r   r   r+   r,   render_completion_requestr.   r/   r   r   r0   r1   r2   )r   r    r4   r5   resultr7   r   r   r   render_completionK   s    


r;   r   c                 C   s   |  t d S r   )include_routerrouter)r   r   r   r   attach_routeri   s   r>   ))httpr   fastapir   r   r   r   fastapi.responsesr   r   +vllm.entrypoints.openai.completion.protocolr	   r
   *vllm.entrypoints.openai.completion.servingr   'vllm.entrypoints.openai.engine.protocolr   $vllm.entrypoints.openai.orca_metricsr   vllm.entrypoints.openai.utilsr   vllm.entrypoints.utilsr   r   vllm.loggerr   __name__loggerr=   r*   r   postOKvalueBAD_REQUEST	NOT_FOUNDINTERNAL_SERVER_ERRORr-   listr;   r>   r   r   r   r   <module>   sJ   

