
    3fi5                        d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZmZ er	d dlmZmZ n		 d dlmZmZ dZ G d d	e      Zy
# e$ r Y w xY w)    )annotations)TYPE_CHECKINGAnyDictOptionalSequence)	Callbacks)BaseDocumentCompressorDocument)
ConfigDictmodel_validator)RankerRerankRequestzms-marco-MultiBERT-L-12c                      e Zd ZU dZded<   	 dZded<   	 dZded	<   	 d
Zded<   	 dZded<   	  e	dd      Z
 ed      edd              Z	 d	 	 	 	 	 	 	 ddZy
)FlashrankRerankz.Document compressor using Flashrank interface.r   client   inttop_ng        floatscore_thresholdNzOptional[str]model strprefix_metadataTforbid)arbitrary_types_allowedextrabefore)modec                    d|v r|S 	 ddl m} |j                  dt              |d<    ||d         |d<   |S # t        $ r t        d      w xY w)z?Validate that api key and python package exists in environment.r   r   )r   zZCould not import flashrank python package. Please install it with `pip install flashrank`.r   )
model_name)	flashrankr   ImportErrorgetDEFAULT_MODEL_NAME)clsvaluesr   s      w/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/document_compressors/flashrank_rerank.pyvalidate_environmentz$FlashrankRerank.validate_environment)   sl     vM, %jj2DEF7O%AF8M  !F s	   8 Ac           	        t        |      D cg c]  \  }}||j                  |j                  d! }}}t        ||      }| j                  j                  |      d | j                   }g }	|D ]_  }
|
d   | j                  k\  st        |
d   | j                  dz   |
d   | j                  dz   |
d   i|
d         }|	j                  |       a |	S c c}}w )	N)idtextmeta)querypassagesscorer-   r,   relevance_scorer.   )page_contentmetadata)	enumerater3   r4   r   r   rerankr   r   r   r   append)self	documentsr/   	callbacksidocr0   rerank_requestrerank_responsefinal_resultsrs              r)   compress_documentsz"FlashrankRerank.compress_documents<   s     $I.
3 c..E
 

 'UXF++,,^<\tzzJ  
	*AzT111!"6,,t3QtW,,/@@!G* F) $$S)
	* )
s   $C)r(   r   returnr   )N)r9   Sequence[Document]r/   r   r:   zOptional[Callbacks]rB   rC   )__name__
__module____qualname____doc____annotations__r   r   r   r   r   model_configr   classmethodr*   rA        r)   r   r      s    8N;E3N( OU 0E=%OS3 $L
 (#  $* *.	%  '	
 
rL   r   N)
__future__r   typingr   r   r   r   r    langchain_core.callbacks.managerr	   langchain_core.documentsr
   r   pydanticr   r   r#   r   r   r$   r&   r   rK   rL   r)   <module>rR      sS    " ? ? 6 E 0//3 / @, @  s   A AA