o
    i?
                     @   s&  d dl Zd dlmZ d dlmZ d dlmZ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mZmZ d d
lmZ d dlmZmZ d dlmZ e ZeeZ edddd Z!de	dedB fddZ"ej#deeg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S )    N)	lru_cache)
HTTPStatus)	APIRouterDependsRequest)JSONResponseStreamingResponse)assert_never)ErrorResponse)validate_json_request)EmbeddingBytesResponseEmbeddingRequestEmbeddingResponse)OpenAIServingEmbedding)load_aware_callwith_cancellation)init_logger   )maxsizec                  C   s.   t jdd urddlm}  | S td tS )Norjsonr   ORJSONResponsezMTo make v1/embeddings API fast, please install orjson by `pip install orjson`)	importlibutil	find_specfastapi.responsesr   loggerwarning_oncer   r    r   _/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/entrypoints/pooling/embed/api_router.py_get_json_response_cls   s   r    requestreturnc                 C   s
   | j jjS )N)appstateopenai_serving_embedding)r!   r   r   r   	embedding'   s   
r&   z/v1/embeddingsmodel)dependencies	responsesraw_requestc              
      s   t |}|d u r|jjj}|jddS z|| |I d H }W n ty6 } z||W  Y d }~S d }~ww t|trFt	|
 |jjdS t|trSt |
 dS t|trbt|j|j|jdS t| d S )Nz)The model does not support Embeddings API)message)contentstatus_code)r,   )r,   headers
media_type)r&   r#   r$   openai_serving_tokenizationcreate_error_responsecreate_embedding	Exception
isinstancer
   r   
model_dumperrorcoder   r    r   r   r,   r.   r/   r	   )r!   r*   handlerbase_server	generatorer   r   r   r2   +   s4   



r2   )(importlib.utilr   	functoolsr   httpr   fastapir   r   r   r   r   r   typing_extensionsr	   'vllm.entrypoints.openai.engine.protocolr
   vllm.entrypoints.openai.utilsr   'vllm.entrypoints.pooling.embed.protocolr   r   r   &vllm.entrypoints.pooling.embed.servingr   vllm.entrypoints.utilsr   r   vllm.loggerr   router__name__r   r    r&   postBAD_REQUESTvalueINTERNAL_SERVER_ERRORr2   r   r   r   r   <module>   s>   
