
    h                         d Z ddlZddlmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ  G d	 d
e      Z G d de      Zy)z-
Transformation logic for Hosted VLLM rerank
    N)AnyDictListOptionalUnion)RerankBilledUnitsRerankResponseRerankResponseDocumentRerankResponseMetaRerankResponseResultRerankTokensOptionalRerankParamsRerankRequest)Logging)BaseLLMException)BaseRerankConfigget_secret_strc            
       T     e Zd Z	 ddededeeeej                  f      f fdZ
 xZS )HostedVLLMRerankErrorstatus_codemessageheadersc                 *    t         |   |||       y )N)r   r   r   )super__init__)selfr   r   r   	__class__s       j/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/hosted_vllm/rerank/transformation.pyr   zHostedVLLMRerankError.__init__   s     	['7S    N)__name__
__module____qualname__intstrr   r   dicthttpxHeadersr   __classcell__)r   s   @r   r   r      sF    
 9=	TT T %emm 345	T Tr    r   c                      e Zd Zd$dZdee   dedefdZdedefdZ	 	 	 	 	 	 d%dee	   ded	e
d
edeeeeeef   f      dee   dee   deee      dee
   dee   dee   defdZ	 d&de	dedee   de	fdZdedede	de	fdZdi i i fdedej*                  dededee   de	de	de	defdZded edee	ej2                  f   defd!Zd"e	defd#Zy)'HostedVLLMRerankConfigreturnNc                      y r!    )r   s    r   r   zHostedVLLMRerankConfig.__init__&   s    r    api_basemodelc                 n    |r)|j                  d      }|j                  d      s| d}|S t        d      )N/z
/v1/rerankz0api_base must be provided for Hosted VLLM rerank)rstripendswith
ValueError)r   r0   r1   s      r   get_complete_urlz'HostedVLLMRerankConfig.get_complete_url)   s>    s+H$$\2&Zz2OKLLr    c                 
    g dS )Nquery	documentstop_nrank_fieldsreturn_documentsr/   )r   r1   s     r   "get_supported_cohere_rerank_paramsz9HostedVLLMRerankConfig.get_supported_cohere_rerank_params2   s    
 	
r    non_default_paramsdrop_paramsr:   r;   custom_llm_providerr<   r=   r>   max_chunks_per_docmax_tokens_per_docc                 <    |
t        d      t        |||||	      S )z7
        Map parameters for Hosted VLLM rerank
        z/Hosted VLLM does not support max_chunks_per_docr9   )r6   r   )r   r@   r1   rA   r:   r;   rB   r<   r=   r>   rC   rD   s               r   map_cohere_rerank_paramsz/HostedVLLMRerankConfig.map_cohere_rerank_params;   s2    " )NOO##-
 	
r    r   api_keyc                 Z    |t        d      xs d}d| ddd}d|v r|d   |d<   i ||S )NHOSTED_VLLM_API_KEYzfake-api-keyzBearer zapplication/json)Authorizationacceptzcontent-typerJ   r   )r   r   r1   rG   default_headerss        r   validate_environmentz+HostedVLLMRerankConfig.validate_environmentW   s]     ?$%:;M~G  'wi0(.
 g%/6/GOO, ./-W--r    optional_rerank_paramsc                     d|vrt        d      d|vrt        d      t        ||d   |d   |j                  dd       |j                  dd       |j                  dd             }|j                  d	
      S )Nr:   z(query is required for Hosted VLLM rerankr;   z,documents is required for Hosted VLLM rerankr<   r=   r>   )r1   r:   r;   r<   r=   r>   T)exclude_none)r6   r   get
model_dump)r   r1   rN   r   rerank_requests        r   transform_rerank_requestz/HostedVLLMRerankConfig.transform_rerank_requestm   s     00GHH44KLL&(1,[9(,,Wd;.22=$G3778JDQ
 ((d(;;r    raw_responsemodel_responselogging_objrequest_dataoptional_paramslitellm_paramsc	                     	 |j                         }	t        di |	S # t        $ r& t        d|j                   d|j                         w xY w)z>
        Process response from Hosted VLLM rerank API
        zError parsing response: z, status_code=r/   )json	Exceptionr6   textr   r	   )
r   r1   rU   rV   rW   rG   rX   rY   rZ   raw_response_jsons
             r   transform_rerank_responsez0HostedVLLMRerankConfig.transform_rerank_response   sc    	 , 1 1 3 2 122  	*<+<+<*=^LLdLdKef 	s	    /Aerror_messager   c                     t        |||      S )N)r   r   r   )r   )r   ra   r   r   s       r   get_error_classz&HostedVLLMRerankConfig.get_error_class   s     %]]deer    responsec           	         |j                  di       }t        |j                  dd            }t        |j                  dd            }t        ||      }|j                  d      }|t	        d|       g }|D ]  t        fd	d
D              st	        d       j                  di       }|r%t        t        |j                  dd                  nd }	t        t        d         t        d         
      }
|	r|	|
d<   |j                  |
        t        |j                  d      xs t        t        j                               ||      S )Nusagetotal_tokensr   )rg   )input_tokens)billed_unitstokensresultsz!No results found in the response=c              3   &   K   | ]  }|v  
 y wr!   r/   ).0keyresults     r   	<genexpr>z=HostedVLLMRerankConfig._transform_response.<locals>.<genexpr>   s     Msf}Ms   )indexrelevance_scorez&Missing required fields in the result=documentr^    )r^   rq   rr   id)ru   rk   meta)rQ   r   r   r   r6   allr
   r&   r   r%   floatappendr	   uuiduuid4)r   rd   
usage_data_billed_units_tokensrerank_meta_resultsrerank_resultsdocument_datars   rerank_resultro   s              @r   _transform_responsez*HostedVLLMRerankConfig._transform_response   sS   \\'2.
)z~~nVW7XYJNN>1,MN(mGT *2i)@@
KLL57FM0LMM #I&!RSS #JJz26M ! 'C0A0A&"0M,NO  1&/* %f->&? @M ,4j)!!-0/ 2 ||D!6S%6"
 	
r    )r-   N)NNNTNNr!   )r"   r#   r$   r   r   r&   r7   listr?   r'   boolr   r   r   r   r%   r   rF   rM   rT   r(   Responser	   LiteLLMLoggingObjr`   r)   r   rc   r   r/   r    r   r,   r,   %   s!   M# Ms Ms M
 
 
  .2#+/+/,0,0
$TN
 
 	

 
 c4S>123
 &c]
 }
 d3i(
 #4.
 %SM
 %SM
 

@ "&	.. . #	.
 
.,<< !5< 	<
 
<6 "& "!33 nn3 '	3
 '3 #3 3 3 3 
3.f f/2f=B4CV=Wf	f
,
D ,
^ ,
r    r,   )__doc__rz   typingr   r   r   r   r   litellm.types.rerankr   r	   r
   r   r   r   r   r   r(   *litellm.litellm_core_utils.litellm_loggingr   r   )litellm.llms.base_llm.chat.transformationr   +litellm.llms.base_llm.rerank.transformationr   litellm.secret_managers.mainr   r   r,   r/   r    r   <module>r      sS     3 3	 	 	  S F H 7T, Te
- e
r    