
    AHj\X                     T   d dl Z d dlZd dlmZ d dl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 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# d dl$m%Z%m&Z&m'Z'  e       Z( e       Z) e       Z*e&	 	 	 	 	 dde+de+deee+ee+ef   f      de
e	d      de
e,   de
ee+      de
e-   de
e,   dee"eeee"f   f   fd       Z.e&	 	 	 	 	 	 dde+de+deee+ee+ef   f      de
e	d      de
e,   de
ee+      de
e-   de
e,   de
e,   dee"eeee"f   f   fd       Z/y)     N)partial)Any	CoroutineDictListLiteralOptionalUnion)verbose_logger)Logging)BaseRerankConfig)BedrockRerankHandler)BaseLLMHTTPHandler)TogetherAIRerank)IBMWatsonXMixin)get_optional_rerank_params)
get_secretget_secret_str)RerankResponse)*)ProviderConfigManagerclientexception_typemodelquery	documentscustom_llm_provider)coheretogether_ai	deepinfrafireworks_aivoyagewatsonxtop_nrank_fieldsreturn_documentsmax_chunks_per_docreturnc                 n  K   	 t        j                         }	d|d<   t        t        | |||||||f	i |}
t	        j
                         }t        |j                  |
      }|	j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}|d}~ww xY ww)zR
    Async: Reranks a list of documents based on their relevance to the query
    TarerankN)
asyncioget_event_loopr   rerankcontextvarscopy_contextrunrun_in_executoriscoroutine	Exception)r   r   r   r   r$   r%   r&   r'   kwargsloopfuncctxfunc_with_contextinit_responseresponsees                   O/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/rerank_api/main.pyr*   r*      s     &%%' y
 
 &&(#CGGT2"2249JKK}-**H  %H L +  sY   B5A0B" 4B5B" B B" B5B" B5B"  B" "	B2+B--B22B5)
r   r   azure_aiinfinitylitellm_proxyhosted_vllmr    r!   r"   r#   max_tokens_per_docc	                 *   |	j                  d      }
|	j                  d      }|	j                  dd      }|	j                  dd      }|	j                  dd      }|	j                  dd      }|	j                  dd      }	 |	j                  d	d
      du }t        d?i |	}||d}|j                         D cg c]
  \  }}|	| }}}t	        j
                  | ||j                  |j                        \  } }}}t        j                  | t	        j                  |      |j                  |      }t        || |	j                  d      xs t        j                  xs d
|||||||||	      }t        j                  d|        t        |j                   t"              rt%        |j                         |_        t'               }|j)                  |	| |t+        |      |||di d|j-                  d      |       |t        j                  j.                  k(  s|t        j                  j0                  k(  r|xs |j                  xs t        j                  }|xs/ |j                  xs! t        j                  xs t3        d      xs d}|t5        d      t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S |t        j                  j<                  k(  r|xs+ |j                  xs t        j                  xs t3        d      }t6        j9                  | |||||j                   |xs |j                  |||
xs t        j:                  xs i ||      }|S |t        j                  j>                  k(  r|xs |j                  xs t        j                  }|xs+ |j                  xs t        j                  xs tA        d      }|t5        d      t6        j9                  | |||||j                   |xs |j                  |||
xs t        j:                  xs i ||      }|S |t        j                  jB                  k(  rn|xs= |j                  xs/ t        jD                  xs t3        d      xs t        j                  }|tG        d      tH        j9                  | ||||||||	      }|S |t        j                  jJ                  k(  r|tG        d       |xs+ |j                  xs t        j                  xs t3        d!      }t6        j9                  | |||||j                   |xs |j                  |||
xs t        j:                  xs i ||"      }|S |t        j                  jL                  k(  r{|tG        d#      |j                  xs t3        d$      xs d%}t6        j9                  | |||||j                   |xs |j                  |||
xs t        j:                  xs i ||"      }|S |t        j                  jN                  k(  r|xs+ |j                  xs t        j                  xs t3        d!      }|
xs t        j:                  xs i } |	j                  d&      }!|!ri | |!} tP        j9                  | ||||||||j-                  d      |j                   || ||'      }|S |t        j                  jR                  k(  r|xs |j                  xs tA        d(      }|xs |j                  xs tA        d)      }|tG        d*      t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S |t        j                  jT                  k(  r|xs |j                  xs tA        d+      }|xs |j                  xs tA        d,      }|tG        d-      t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S |t        j                  jV                  k(  r|xs@ |j                  xs2 tA        d.      xs% tA        d/      xs tA        d0      xs tA        d1      }|xs |j                  xs tA        d2      }t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S |t        j                  jX                  k(  r|xs& |j                  xs tA        d3      xs tA        d4      }|xs |j                  xs tA        d5      }t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S |t        j                  jZ                  k(  rt]        j^                  t+        |      ||6      }"|"d7   }|"d8   }|"j                  d9      |"d9   |d9<   t6        j9                  | |||||j                   ||||
xs t        j:                  xs i ||      }|S t        |t        j`                        st        |t        jb                        r|d:k7  r|d;k7  rtG        d<|       t6        j9                  | |||||j                   |xs |j                  |xs |j                  ||
xs t        j:                  xs i ||      }|S c c}}w # t4        $ r4}#t        jd                  d=t#        |#              tg        | ||#>      d}#~#ww xY w)@zK
    Reranks a list of documents based on their relevance to the query
    headerslitellm_logging_objlitellm_call_idNproxy_server_request
model_infouserr   r*   FT)r'   rA   )r   r   api_baseapi_key)r   providerrI   present_version_paramsdrop_params)rerank_provider_configr   rM   r   r   r   r$   r%   r&   r'   rA   non_default_paramszoptional_rerank_params: )rE   rF   rG   preset_cache_keystream_response)exclude_unset)r4   r   rH   optional_paramslitellm_paramsr   COHERE_API_BASEzhttps://api.cohere.comzNInvalid api base. api_base=None. Set in call or via `COHERE_API_BASE` env var.)r   r   provider_configoptional_rerank_paramslogging_objtimeoutrJ   rI   	_is_asyncrC   r   model_responseAZURE_AI_API_BASE)r   r   rW   rV   rX   rY   rJ   rI   rZ   rC   r   r[   INFINITY_API_BASEzPInvalid api base. api_base=None. Set in call or via `INFINITY_API_BASE` env var.TOGETHERAI_API_KEYzSTogetherAI API key is required, please set 'TOGETHERAI_API_KEY' in your environment)	r   r   r   r$   r%   r&   r'   rJ   rZ   zMJina AI API key is required, please set 'JINA_AI_API_KEY' in your environmentBEDROCK_API_BASE)r   r   rW   rX   rV   rY   rJ   rI   rZ   rC   r   r[   zSNvidia NIM API key is required, please set 'NVIDIA_NIM_API_KEY' in your environmentNVIDIA_NIM_API_BASEzhttps://ai.api.nvidia.comextra_headers)r   r   r   r$   r%   r&   r'   rZ   rS   rY   rI   ra   rX   r   HOSTED_VLLM_API_KEYHOSTED_VLLM_API_BASEzbapi_base must be provided for Hosted VLLM rerank. Set in call or via HOSTED_VLLM_API_BASE env var.DEEPINFRA_API_KEYDEEPINFRA_API_BASEz^api_base must be provided for Deepinfra rerank. Set in call or via DEEPINFRA_API_BASE env var.FIREWORKS_API_KEYFIREWORKS_AI_API_KEYFIREWORKSAI_API_KEYFIREWORKS_AI_TOKENFIREWORKS_AI_API_BASEVOYAGE_API_KEYVOYAGE_AI_API_KEYVOYAGE_API_BASE)rS   rJ   rI   rJ   rI   tokenr   r?   zUnsupported provider: zError in rerank: )r   r   original_exception )4getpopGenericLiteLLMParamsitemslitellmget_llm_providerrI   rJ   r   get_provider_rerank_configLlmProvidersr   rM   r   info
isinstancerY   strfloatr   update_from_kwargsdict
model_dumpCOHERELITELLM_PROXYr   r3   base_llm_http_handlerr-   rC   AZURE_AIINFINITYr   TOGETHER_AItogetherai_api_key
ValueErrortogether_rerankJINA_AI
NVIDIA_NIMBEDROCKbedrock_rerankHOSTED_VLLM	DEEPINFRAFIREWORKS_AIVOYAGEWATSONXr   get_watsonx_credentialsCohereRerankConfigCohereRerankV2Configerrorr   )$r   r   r   r   r$   r%   r&   r'   rA   r4   rC   rD   rE   rF   rG   rH   r   rZ   rS   unique_version_paramskvrL   _custom_llm_providerdynamic_api_keydynamic_api_baserN   rW   r[   rJ   rI   r:   merged_headersextra_headers_from_kwargscredentialsr;   s$                                       r<   r-   r-   M   s   : %jj3G-3ZZ8M-N%+ZZ0A4%HO!::&<dCL$/J::fd#DZZ$'FI
JJy%0D8	.88 #5"4!

 0557"
!Q1=A"
 "
 $$ 3$--#++	
	
  "<< --.BC(11'=	 	 (B#9

=1QW5H5HQE 4#-11%(
 	67M6NOPo--s3&+O,C,C&DO#').. !78#2(<($(#% ",,4,@ !5 	/ 	
$ !G$8$8$?$??#w';';'I'II  M?#:#:Mgoo 
 ! ,"++,##, /0, ,  d  -33$8 6'=/'//!#87??8b- 4 HR w
 "W%9%9%B%BB  3"++3##3 12	  -33$8'= 6/'//'B?+B+B!#87??8b- 4 Hh
 M
 "W%9%9%B%BB%S)@)@SGOOG ! 7"++7##7 ""56	  f  -33$8 6'=/'//'B?+B+B!#87??8b- 4 Hl	 Q	 "W%9%9%E%EE   #"**#--# 23# ??   i  '--#'!1#5# . 
Hr ] "W%9%9%A%AA& c 
 ! 2"++2##2 01	  -33$8'=/ 6'//'B?+B+B!#87??8b- 4 HB g "W%9%9%D%DD& i   (( /34/.  -33$8'=/ 6'//'B?+B+B!#87??8b- 4 HJ o "W%9%9%A%AA  2"++2##2 01	  %==2N(.

?(C%(!PN!P6O!P%,,#'!1#5# / : : : N'//!,/ - HR s "W%9%9%E%EE   9"**9!"78  ! :"++:!"89   x  -33$8 6'=/'//!#87??8b- 4 HL o "W%9%9%C%CC 7"**7!"56  ! 8"++8!"67   t  -33$8 6'=/'//!#87??8b- 4 HJ o "W%9%9%F%FF 8"**8!"568 ""898 ""78	8
 ""67  ! ;"++;!"9:  -33$8 6'=/'//!#87??8b- 4 HN s "W%9%9%@%@@ 7"**7!"237 ""56	  ! 5"++5!"34  -33$8 6'=/'//!#87??8b- 4 HV { "W%9%9%A%AA)AA $_ 5')K "),G":.Hw'32=g2F&w/,33$8 6'=/'//!#87??8b- 4 H` 1 5w7Q7QR!"8':V:VW(H4(O; #9:N9O!PQQ,33$8 6'=/'//'B?+B+B)E_-E-E#87??8b- 4 H  y"
z  
0Q9:-@UV
 	

s   >7k 5
k kHk Bk 5Ck B
k B)k 6Bk B;k 
B&k 1B&k C k B&k  B#k $B*k k 	l/ll)NNNNN)NNNTNN)0r+   r.   	functoolsr   typingr   r   r   r   r   r	   r
   ru   litellm._loggingr   *litellm.litellm_core_utils.litellm_loggingr   LiteLLMLoggingObj+litellm.llms.base_llm.rerank.transformationr   #litellm.llms.bedrock.rerank.handlerr   *litellm.llms.custom_httpx.llm_http_handlerr   'litellm.llms.together_ai.rerank.handlerr   !litellm.llms.watsonx.common_utilsr   litellm.rerank_api.rerank_utilsr   litellm.secret_managers.mainr   r   litellm.types.rerankr   litellm.types.routerlitellm.utilsr   r   r   r   r   r   r{   intboolr*   r-   rp       r<   <module>r      s      G G G  + S H D I D = F C / " G G #$%'*,   	'+'+(,--- E#tCH~-./- "U	
	- C=- $s)$- tn- !- >9S#~%=>>?- -` $ 	'+'+(,(,-l
l
l
 E#tCH~-./l
 "		
	l
$ C=%l
& $s)$'l
( tn)l
* !+l
, !-l
0 >9S#~%=>>?1l
 l
r   