
    wg                     z   d dl mZmZ d dlmZ d dlmZ d dlZd dlm	Z	m
Z
  e       Z ej                  d      ZdZ e	j                  e      Z e
j                  e      j!                  e      Zej%                           G d d	e      Z G d
 de      Z G d de      Zej-                  de      defd       Zy)    )FastAPIHTTPException)	BaseModel)ListN)AutoTokenizer"AutoModelForSequenceClassificationcpuzBAAI/bge-reranker-largec                   (    e Zd ZU eed<   ee   ed<   y)RerankRequestinput	documentsN)__name__
__module____qualname__str__annotations__r         /changpt/vllm/reranker_server.pyr   r      s    JCyr   r   c                   "    e Zd ZU eed<   eed<   y)RerankResponseItemdocumentscoreN)r   r   r   r   r   floatr   r   r   r   r      s    MLr   r   c                       e Zd ZU ee   ed<   y)RerankResponseresultsN)r   r   r   r   r   r   r   r   r   r   r      s    $%%r   r   z/rerank)response_modelrequestc           
      r  K   	 | j                   }| j                  }|r|st        dd      t        |gt	        |      z  |dddd      j                  t              }t        j                         5  t        di |j                  j                  d      j                         j                         }d d d        t        t        |      d	 d
      }t!        |D cg c]  \  }}t#        ||       c}}      S # 1 sw Y   LxY wc c}}w # t$        $ r}t        dt'        |            d }~ww xY ww)Ni  zMissing input or documents.)status_codedetailTpti   )padding
truncationreturn_tensors
max_lengthc                     | d   S )N   r   )xs    r   <lambda>zrerank.<locals>.<lambda>7   s
    qt r   )keyreverse)r   r   )r   i  r   )r   r   r   	tokenizerlentodevicetorchno_gradmodellogitsviewr	   tolistsortedzipr   r   	Exceptionr   )	r   queryr   inputsscoresr   docr   es	            r   rerankrA      s$    <%%	IC8UVV Gc)n$
 "V* 	 ]]_ 	D_V_++00488:AACF	D Y/^TRPWBL#u"Cu=
 	
	D 	D
  <CF;;<sN   D7A.D 2AC>3+D D

5D =D7>DD 	D4D//D44D7)fastapir   r   pydanticr   typingr   r3   transformersr   r   appr2   
model_namefrom_pretrainedr/   r1   r5   evalr   r   r   postrA   r   r   r   <module>rK      s    *    Ji 
e	 '
)M))*5	:*:::FII&Q 

I 
 &Y & )N3 <-  < 4 <r   