
    j                         d Z ddlmZ ddlmZmZ ddl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mZmZmZmZmZ d	d
lmZ  G d de      Zy)z
Transformation logic from Cohere's /v1/rerank format to Infinity's  `/v1/rerank` format. 

Why separate file? Make it easy to see how transformation works
    )uuid)ListOptionalN)Logging)CohereRerankConfig)get_secret_str)RerankBilledUnitsRerankResponseRerankResponseDocumentRerankResponseMetaRerankResponseResultRerankTokens   )InfinityErrorc                       e Zd Z	 ddee   dedee   defdZ	 	 ddededee   de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y)InfinityRerankConfigNapi_basemodeloptional_paramsreturnc                 n    |t        d      |j                  d      }|j                  d      s| d}|S )Nz(api_base is required for Infinity rerank/z/rerank)
ValueErrorrstripendswith)selfr   r   r   s       /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/infinity/rerank/transformation.pyget_complete_urlz%InfinityRerankConfig.get_complete_url   sC     GHH??3'  +"7+H    headersapi_keyc                     |*t        d      xs t        d      xs t        j                  }d| ddd}d|v r|d   |d<   i ||S )NINFINITY_API_KEYzBearer zapplication/json)Authorizationacceptzcontent-typer$   )r   litellminfinity_key)r   r    r   r!   r   default_headerss         r   validate_environmentz)InfinityRerankConfig.validate_environment+   sw     ?12 (!"45(''   'wi0(.
 g%/6/GOO, ./-W--r   raw_responsemodel_responselogging_objrequest_datalitellm_paramsc	                 p   	 |j                         }	t        di |	j                  di       }
t        |	j                  di       j                  dd      |	j                  di       j                  dd      |	j                  di       j                  dd      z
        }t        |
|      }g }|	j                  d      r|	j                  d      D ]m  }t        |j                  d	      |j                  d
            }|j                  d      rt        |j                  d            |d<   |j                  |       o |t        d|	       t        |	j                  d      xs t        t        j                                ||      S # t        $ r" t        |j                  |j                        w xY w)z
        Transform Infinity rerank response

        No transformation required, Infinity follows Cohere API response format
        )messagestatus_codeusageprompt_tokensr   total_tokens)input_tokensoutput_tokens)billed_unitstokensresultsindexrelevance_score)r:   r;   document)textz!No results found in the response=id)r>   r9   meta )json	Exceptionr   r=   r1   r	   getr   r   r   r   appendr   r
   strr   uuid4)r   r   r*   r+   r,   r!   r-   r   r.   raw_response_json_billed_units_tokensrerank_metacohere_resultsresult_rerank_responses                   r   transform_rerank_responsez.InfinityRerankConfig.transform_rerank_responseF   s    	 , 1 1 3 *O,=,A,A'2,NO*..w;??QRS!%%gr266~qI#''488!LM
 )mGT57  ++//	:#7 **W-$*JJ/@$A$  ::j)3I#ZZ
34$Z0 %%&67 ; !@AR@STUU $$T*?c$**,.?"
 	
=  	$))|7O7O 	s   F
 
+F5)N)NN)__name__
__module____qualname__r   rE   dictr   r)   httpxResponser
   LiteLLMLoggingObjrN   r@   r   r   r   r      s    
 +/	3-  "$	
 
$ "&*... . #	.
 "$. 
.B "& "!4
4
 nn4
 '	4

 '4
 #4
 4
 4
 4
 
4
r   r   )__doc__litellm._uuidr   typingr   r   rS   r&   *litellm.litellm_core_utils.litellm_loggingr   rU   )litellm.llms.cohere.rerank.transformationr   litellm.secret_managers.mainr   litellm.types.rerankr	   r
   r   r   r   r   common_utilsr   r   r@   r   r   <module>r^      s?     !   S H 7  )^
- ^
r   