
    g)                         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 d dl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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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j4                  f   defd!Zy)%CohereRerankConfigz@
    Reference: https://docs.cohere.com/v2/reference/rerank
    returnNc                      y N )selfs    ^/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/cohere/rerank/transformation.py__init__zCohereRerankConfig.__init__   s        api_basemodelc                 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   s      r   get_complete_urlz#CohereRerankConfig.get_complete_url   s5    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'   c                 $    t        |||||	|
      S )zf
        Map Cohere rerank params

        No mapping required - returns all supported params
        )r$   r%   r&   r(   r)   r'   )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-typer5   )r   litellm
cohere_key
ValueError)r   r0   r   r1   default_headerss        r   validate_environmentz'CohereRerankConfig.validate_environmentF   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)r9   r   get
model_dump)r   r   r<   r0   rerank_requests        r   transform_rerank_requestz+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	                     	 |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   textrL   r   )
r   r   rC   rD   rE   r1   rF   rG   rH   raw_response_jsons
             r   transform_rerank_responsez,CohereRerankConfig.transform_rerank_responsez   sV     	 , 1 1 3 2 122  	$))|7O7O 	s	    +Aerror_messagerL   c                     t        ||      S )NrJ   r   )r   rR   rL   r0   s       r   get_error_classz"CohereRerankConfig.get_error_class   s     =kJJr   )r   N)NNNTNr   )__name__
__module____qualname____doc__r   r   strr"   listr*   dictboolr   r   r   r   intr   r/   r;   rB   httpxResponser   LiteLLMLoggingObjrQ   Headersr	   rT   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   r^   r7   *litellm.litellm_core_utils.litellm_loggingr   r`   )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>rj      s7    3 3   S F H 7 D . &FK) FKr   