
    ^h)                         S SK JrJrJrJrJr  S SKrS SKrS SKJ	r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S	S
KJr   " S S\5      rg)    )AnyDictListOptionalUnionN)Logging)BaseLLMException)BaseRerankConfig)get_secret_str)OptionalRerankParamsRerankRequest)RerankResponse   CohereErrorc                      \ rS rSrSrS$S jrS\\   S\S\4S jrS\S\	4S	 jr
     S%S
\\   S\S\S\S\\\\\\4   4      S\\   S\\   S\\\      S\\   S\\   S\4S jjr S&S\S\S\\   S\4S jjrS\S\S\S\4S jrS0 0 0 4S\S\R.                  S\S\S\\   S\S\S\S\4S jjrS \S!\S\\\R6                  4   S\4S" jrS#rg)'CohereRerankConfig   z8
Reference: https://docs.cohere.com/v2/reference/rerank
returnNc                     g N )selfs    c/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/cohere/rerank/transformation.py__init__CohereRerankConfig.__init__   s        api_basemodelc                 n    U(       a.  UR                  S5      nUR                  S5      (       d  U S3nU$ g)N/z
/v1/rerankzhttps://api.cohere.ai/v1/rerank)rstripendswith)r   r   r   s      r   get_complete_url#CohereRerankConfig.get_complete_url   s8    s+H$$\22&Zz2O0r   c                 
    / SQ$ )N)query	documentstop_nmax_chunks_per_docrank_fieldsreturn_documentsr   )r   r   s     r   "get_supported_cohere_rerank_params5CohereRerankConfig.get_supported_cohere_rerank_params!   s    
 	
r   non_default_paramsdrop_paramsr'   r(   custom_llm_providerr)   r+   r,   r*   c           	          [        UUUUU	U
S9$ )zN
Map Cohere rerank params

No mapping required - returns all supported params
)r'   r(   r)   r+   r,   r*   )r   )r   r/   r   r0   r'   r(   r1   r)   r+   r,   r*   s              r   map_cohere_rerank_params+CohereRerankConfig.map_cohere_rerank_params+   s#    $ $#-1
 	
r   headersapi_keyc                     Uc4  [        S5      =(       d"    [        S5      =(       d    [        R                  nUc  [        S5      eSU 3SSS.nSU;   a  US   US'   0 UEUE$ )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-typer:   )r   litellm
cohere_key
ValueError)r   r5   r   r6   default_headerss        r   validate_environment'CohereRerankConfig.validate_environmentF   s     ?/0 &!,/&%%  ?q 
  'wi0(.
 g%/6/GOO, ./-W--r   optional_rerank_paramsc                    SU;  a  [        S5      eSU;  a  [        S5      e[        UUS   US   UR                  SS 5      UR                  SS 5      UR                  SS 5      UR                  SS 5      S	9nUR                  S
S9$ )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   rB   r5   rerank_requests        r   transform_rerank_request+CohereRerankConfig.transform_rerank_requeste   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optional_paramslitellm_paramsc	                      UR                  5       n	[        S0 U	D6$ ! [         a    [        UR                  UR                  S9ef = f)zj
Transform Cohere rerank response

No transformation required, litellm follows cohere API response format
messagestatus_coder   )json	Exceptionr   textrS   r   )
r   r   rJ   rK   rL   r6   rM   rN   rO   raw_response_jsons
             r   transform_rerank_response,CohereRerankConfig.transform_rerank_responsez   sV     	 , 1 1 3 2 122  	$))|7O7O 	s	    )Aerror_messagerS   c                     [        XS9$ )NrQ   r   )r   rZ   rS   r5   s       r   get_error_class"CohereRerankConfig.get_error_class   s     =JJr   r   )r   N)NNNTNr   )__name__
__module____qualname____firstlineno____doc__r   r   strr$   listr-   dictboolr   r   r   r   intr   r3   r@   rH   httpxResponser   LiteLLMLoggingObjrX   Headersr	   r\   __static_attributes__r   r   r   r   r      s   1# 1s 1s 1
 
 
" .2#+/+/,0
$TN
 
 	

 
 c4S>123
 &c]
 }
 d3i(
 #4.
 %SM
 

> "&	.. . #	.
 
.><< !5< 	<
 
<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   rh   r<   *litellm.litellm_core_utils.litellm_loggingr   rj   )litellm.llms.base_llm.chat.transformationr	   +litellm.llms.base_llm.rerank.transformationr
   litellm.secret_managers.mainr   litellm.types.rerankr   r   litellm.types.utilsr   common_utilsr   r   r   r   r   <module>ru      s7    3 3   S F H 7 D . &FK) FKr   