o
    
۾if                     @   s  U d dl 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mZmZmZ d dlmZ d d	lmZ d d
lmZ eeZdedeedB ef fddZG dd deeeZG dd deeeZeeB Zeed< G dd de
Z G dd de
Z!G dd de
Z"dS )    N)	TypeAlias)Field)PoolingParams)ModelConfig)OpenAIBaseModel	UsageInfo)ChatRequestMixinCompletionRequestMixinEmbedRequestMixinPoolingBasicRequestMixin)init_logger)TokenizeParamsrandom_uuidmodel_configreturnc                 C   s@   | j }| j}|d u r|dfS |jrdS |jp|}|| }||fS )Nr   )Nr   )max_model_lenpooler_configenable_chunked_processingmax_embed_len)r   max_total_tokensr   r   max_output_tokens r   [/home/ubuntu/.local/lib/python3.10/site-packages/vllm/entrypoints/pooling/embed/protocol.py_get_max_total_output_tokens   s   
r   c                   @   &   e Zd ZdedefddZdd ZdS )EmbeddingCompletionRequestr   r   c              	   C   8   |j pi }t|\}}t||| j|dd| jdddS Ndo_lower_caseFr   zmax_model_len - max_embed_len)r   r   truncate_prompt_tokensr   add_special_tokensmax_total_tokens_parammax_output_tokens_paramencoder_configr   r   r    getr!   selfr   r%   r   r   r   r   r   build_tok_params,      

z+EmbeddingCompletionRequest.build_tok_paramsc                 C   2   | j d urtd | j | _td| j| j| jdS Nz]`normalize` is deprecated and will be removed in v0.17. Please pass `use_activation` instead.embed)task
dimensionsuse_activationr    	normalizeloggerwarning_oncer0   r   r/   r    r(   r   r   r   to_pooling_params>      
z,EmbeddingCompletionRequest.to_pooling_paramsN__name__
__module____qualname__r   r   r)   r6   r   r   r   r   r   )       r   c                   @   r   )EmbeddingChatRequestr   r   c              	   C   r   r   r$   r'   r   r   r   r)   Q   r*   z%EmbeddingChatRequest.build_tok_paramsc                 C   r+   r,   r1   r5   r   r   r   r6   c   r7   z&EmbeddingChatRequest.to_pooling_paramsNr8   r   r   r   r   r=   N   r<   r=   EmbeddingRequestc                   @   s2   e Zd ZU eed< dZeed< ee eB ed< dS )EmbeddingResponseDataindex	embeddingobjectN)	r9   r:   r;   int__annotations__rB   strlistfloatr   r   r   r   r?   v   s   
 r?   c                   @   sb   e Zd ZU edd dZeed< dZeed< edd dZe	ed< eed	< e
e ed
< eed< dS )EmbeddingResponsec                   C   s   dt   S )Nzembd-r   r   r   r   r   <lambda>}       zEmbeddingResponse.<lambda>)default_factoryidrF   rB   c                   C   s   t t S )N)rC   timer   r   r   r   rI      rJ   createdmodeldatausageN)r9   r:   r;   r   rL   rE   rD   rB   rN   rC   rF   r?   r   r   r   r   r   rH   |   s   
 rH   c                   @   s>   e Zd ZU ee ed< dZeeef dB ed< dZ	eed< dS )EmbeddingBytesResponsecontentNheaderszapplication/octet-stream
media_type)
r9   r:   r;   rF   bytesrD   rT   dictrE   rU   r   r   r   r   rR      s   
 rR   )#rM   typingr   pydanticr   vllmr   vllm.configr   'vllm.entrypoints.openai.engine.protocolr   r   &vllm.entrypoints.pooling.base.protocolr   r	   r
   r   vllm.loggerr   vllm.renderersr   
vllm.utilsr   r9   r3   tuplerC   r   r   r=   r>   rD   r?   rH   rR   r   r   r   r   <module>   s4   



%%	