o
    i                     @   s   d dl Z d dlm  mZ d dlmZ d dlmZ d dl	m
Z
mZ dZe dZe
eZeeeZe  eddZG d	d
 d
eZde jde jde jfddZeddefddZdS )    N)FastAPI)	BaseModel)AutoTokenizer	AutoModelzfaisalq/EgyBERTcpuzEgyBERT Embeddings)titlec                   @   s2   e Zd ZU ee ed< dZeed< dZe	ed< dS )EmbedRequesttexts   
max_lengthT	normalizeN)
__name__
__module____qualname__liststr__annotations__r   intr   bool r   r   /sda-disk/www/egybert/server.pyr      s   
 r   last_hidden_stateattention_maskreturnc                 C   s<   | d| }| | jdd}|jddjdd}|| S )N   )dimg&.>)min)	unsqueezetype_assumclamp)r   r   masksummedcountsr   r   r   	mean_pool   s   r%   z/embedreqc                 C   s   t | jddd| jd}t " td	i |}t|j|d }| jr*t	j|ddd}W d    n1 s4w   Y  |j
d |  dS )
NptT)return_tensorspadding
truncationr   r      r   )pr   )r   vectorsr   )	tokenizerr	   r   torchno_gradmodelr%   r   r   Fshaper   tolist)r&   inputsoutputsvecr   r   r   embed   s   
r8   )r/   torch.nn.functionalnn
functionalr2   fastapir   pydanticr   transformersr   r   MODELdevicefrom_pretrainedr.   tor1   evalappr   Tensorr%   postr8   r   r   r   r   <module>   s    


