
    j                         d dl mZmZmZ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 d dlmZmZmZ dd	lmZ  G d
 de      Zy)    )AnyDictListOptionalUnionN)Logging)BaseLLMException)BaseRerankConfig)get_secret_str)OptionalRerankParamsRerankRequestRerankResponse   CohereErrorc                      e Zd ZdZd#dZ	 d$dee   dede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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y)'CohereRerankConfigz@
    Reference: https://docs.cohere.com/v2/reference/rerank
    returnNc                      y N )selfs    /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/cohere/rerank/transformation.py__init__zCohereRerankConfig.__init__   s        api_basemodeloptional_paramsc                 Z    |r)|j                  d      }|j                  d      s| d}|S y)N/z
/v1/rerankzhttps://api.cohere.ai/v1/rerank)rstripendswith)r   r   r   r   s       r   get_complete_urlz#CohereRerankConfig.get_complete_url   s7     s+H$$\2&Zz2O0r   c                 
    g dS )N)query	documentstop_nmax_chunks_per_docrank_fieldsreturn_documentsr   )r   r   s     r   "get_supported_cohere_rerank_paramsz5CohereRerankConfig.get_supported_cohere_rerank_params%   s    
 	
r   non_default_paramsdrop_paramsr%   r&   custom_llm_providerr'   r)   r*   r(   max_tokens_per_docc           
      6    t        t        |||||	|
            S )zf
        Map Cohere rerank params

        No mapping required - returns all supported params
        )r%   r&   r'   r)   r*   r(   )dictr   )r   r,   r   r-   r%   r&   r.   r'   r)   r*   r(   r/   s               r   map_cohere_rerank_paramsz+CohereRerankConfig.map_cohere_rerank_params/   s+    & (#-1
  	r   headersapi_keyc                     |*t        d      xs t        d      xs t        j                  }|t        d      d| ddd}d|v r|d   |d<   i ||S )NCOHERE_API_KEY
CO_API_KEYz_Cohere API key is required. Please set 'COHERE_API_KEY' or 'CO_API_KEY' or 'litellm.cohere_key'zBearer zapplication/json)Authorizationacceptzcontent-typer8   )r   litellm
cohere_key
ValueError)r   r3   r   r4   r   default_headerss         r   validate_environmentz'CohereRerankConfig.validate_environmentK   s     ?/0 &!,/&%%  ?q 
  '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d       	      }|j                  d
      S )Nr%   z#query is required for Cohere rerankr&   z'documents is required for Cohere rerankr'   r)   r*   r(   )r   r%   r&   r'   r)   r*   r(   T)exclude_none)r<   r   get
model_dump)r   r   r?   r3   rerank_requests        r   transform_rerank_requestz+CohereRerankConfig.transform_rerank_requestk   s     00BCC44FGG&(1,[9(,,Wd;.22=$G3778JDQ599:NPTU
 ((d(;;r   raw_responsemodel_responselogging_objrequest_datalitellm_paramsc	                     	 |j                         }	t        di |	S # t        $ r" t        |j                  |j                        w xY w)z
        Transform Cohere rerank response

        No transformation required, litellm follows cohere API response format
        messagestatus_coder   )json	Exceptionr   textrN   r   )
r   r   rF   rG   rH   r4   rI   r   rJ   raw_response_jsons
             r   transform_rerank_responsez,CohereRerankConfig.transform_rerank_response   sV     	 , 1 1 3 2 122  	$))|7O7O 	s	    +Aerror_messagerN   c                     t        ||      S )NrL   r   )r   rT   rN   r3   s       r   get_error_classz"CohereRerankConfig.get_error_class   s     =kJJr   )r   Nr   )NNNTNN)NN)__name__
__module____qualname____doc__r   r   strr1   r#   listr+   boolr   r   r   r   intr2   r>   rE   httpxResponser   LiteLLMLoggingObjrS   Headersr	   rV   r   r   r   r   r      s;    +/	13-1 1 "$	1
 
1
 
 
" .2#+/+/,0,0$TN  	
  c4S>123 &c] } d3i( #4. %SM %SM 
@ "&*... . #	.
 "$. 
.@<< !%< 	<
 
<6 "& "!33 nn3 '	3
 '3 #3 3 3 3 
32K K/2K=B4CV=WK	Kr   r   )typingr   r   r   r   r   r_   r:   *litellm.litellm_core_utils.litellm_loggingr   ra   )litellm.llms.base_llm.chat.transformationr	   +litellm.llms.base_llm.rerank.transformationr
   litellm.secret_managers.mainr   litellm.types.rerankr   r   r   common_utilsr   r   r   r   r   <module>rj      s7    3 3   S F H 7 T T &MK) MKr   