o
    ưi2X                     @   s   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#T 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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d Z/dS )#    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              
      s   z=t  }	d|d< tt| |||||||f	i |}
t }t|j|
}|	d|I dH }t |r:|I dH }|W S |}|W S  t	yL } z|d}~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ctxZfunc_with_contextZinit_responseresponsee r8   N/home/app/Keep/.python/lib/python3.10/site-packages/litellm/rerank_api/main.pyr(      s:   


r(   T)
r   r   Zazure_aiinfinitylitellm_proxyZhosted_vllmr   r    r!   r"   max_tokens_per_docc	           #      K   s0  |	 d}
|	 d}|	 dd}|	 dd}|	 dd}|	 di }|	 dd}|	 d	d}z|	d
ddu }tdBi |	}||d}dd | D }tj| ||j|jd\} }}}tj	| t
||j|d}t|| |	 dputjpud|||||||||	d}td|  t|jtrt|j|_t }|j| |t|||||di d|jdd|d |tj
jks|tj
jkr|p|jptj}|p|jptjptdpd}|du rtdtj| |||||j||||
ptjpi ||d}|W S |tj
jkr+|p
|jp
tjp
td}tj| |||||j|p|j|||
p#tjp#i ||d}|W S |tj
jkrt|p;|jp;tj}|pJ|jpJtjpJt d}|du rTtdtj| |||||j|pb|j|||
pltjpli ||d}|W S |tj
j!kr|p|jptj"ptd ptj}|du rt#d!t$j| ||||||||d"	}|W S |tj
j%kr|du rt#d#|p|jptjptd$}tj| |||||j|p|j|||
ptjpi ||d%}|W S |tj
j&kr"|du rt#d&|jptd'pd(}tj| |||||j|p|j|||
ptjpi ||d%}|W S |tj
j'krj|p7|jp7tjp7td$}|
p@tjp@i }|	 d)} | rOi || }t(j| ||||||||jdd|j||||d*}|W S |tj
j)kr|p{|jp{t d+}|p|jpt d,}|du rt#d-tj| |||||j||||
ptjpi ||d}|W S |tj
j*kr|p|jpt d.}|p|jpt d/}|du rt#d0tj| |||||j||||
ptjpi ||d}|W S |tj
j+kr6|p|jpt d1pt d2pt d3pt d4}|p|jpt d5}tj| |||||j||||
p.tjp.i ||d}|W S |tj
j,krt|pL|jpLt d6pLt d7}|pW|jpWt d8}tj| |||||j||||
pltjpli ||d}|W S |tj
j-krt.j/t|||d9}!|!d: }|!d; }|! d<dur|!d< |d<< tj| |||||j||||
ptjpi ||d}|W S t|tj0st|tj1r|d=kr|d>krt#d?| tj| |||||j|p|j|p|j||
ptjpi ||d}|W S  ty }" zt2d@t|"  t3| ||"dAd}"~"ww )CzK
    Reranks a list of documents based on their relevance to the query
    headerslitellm_logging_objlitellm_call_idNproxy_server_request
model_infometadatauserr   r(   FT)r&   r<   c                 S   s   g | ]
\}}|d ur|qS )Nr8   ).0kvr8   r8   r9   
<listcomp>v   s    zrerank.<locals>.<listcomp>)r   r   api_baseapi_key)r   providerrH   present_version_paramsdrop_params)rerank_provider_configr   rL   r   r   r   r#   r$   r%   r&   r<   Znon_default_paramszoptional_rerank_params: )r?   r@   rA   rB   Zpreset_cache_keyZstream_response)Zexclude_unset)r   rC   optional_paramsZlitellm_paramsr   Z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timeoutrI   rH   	_is_asyncr=   r   model_responseZAZURE_AI_API_BASE)r   r   rP   rO   rQ   rR   rI   rH   rS   r=   r   rT   ZINFINITY_API_BASEzPInvalid api base. api_base=None. Set in call or via `INFINITY_API_BASE` env var.ZTOGETHERAI_API_KEYzSTogetherAI API key is required, please set 'TOGETHERAI_API_KEY' in your environment)	r   r   r   r#   r$   r%   r&   rI   rS   zMJina AI API key is required, please set 'JINA_AI_API_KEY' in your environmentZBEDROCK_API_BASE)r   r   rP   rQ   rO   rR   rI   rH   rS   r=   r   rT   zSNvidia NIM API key is required, please set 'NVIDIA_NIM_API_KEY' in your environmentZNVIDIA_NIM_API_BASEzhttps://ai.api.nvidia.comextra_headers)r   r   r   r#   r$   r%   r&   rS   rN   rR   rH   rU   rQ   r   ZHOSTED_VLLM_API_KEYZHOSTED_VLLM_API_BASEzbapi_base must be provided for Hosted VLLM rerank. Set in call or via HOSTED_VLLM_API_BASE env var.ZDEEPINFRA_API_KEYZDEEPINFRA_API_BASEz^api_base must be provided for Deepinfra rerank. Set in call or via DEEPINFRA_API_BASE env var.ZFIREWORKS_API_KEYZFIREWORKS_AI_API_KEYZFIREWORKSAI_API_KEYZFIREWORKS_AI_TOKENZFIREWORKS_AI_API_BASEZVOYAGE_API_KEYZVOYAGE_AI_API_KEYZVOYAGE_API_BASE)rN   rI   rH   rI   rH   tokenr   r;   zUnsupported provider: zError in rerank: )r   r   Zoriginal_exceptionr8   )4getpopZGenericLiteLLMParamsitemslitellmZget_llm_providerrH   rI   r   Zget_provider_rerank_configZLlmProvidersr   rL   r
   info
isinstancerR   strfloatr   Zupdate_environment_variablesdictZ
model_dumpZCOHEREZLITELLM_PROXYr   r1   base_llm_http_handlerr+   r=   ZAZURE_AIINFINITYr   ZTOGETHER_AIZtogetherai_api_key
ValueErrortogether_rerankZJINA_AIZ
NVIDIA_NIMZBEDROCKbedrock_rerankZHOSTED_VLLMZ	DEEPINFRAZFIREWORKS_AIZVOYAGEZWATSONXr   Zget_watsonx_credentialsZCohereRerankConfigZCohereRerankV2Configerrorr   )#r   r   r   r   r#   r$   r%   r&   r<   r2   r=   r>   r?   r@   rA   rB   rC   r   rS   rN   Zunique_version_paramsrK   Z_custom_llm_providerZdynamic_api_keyZdynamic_api_baserM   rP   rT   rI   rH   r6   Zmerged_headersZextra_headers_from_kwargscredentialsr7   r8   r8   r9   r+   I   s  

			
	  i  
  T  

  6  
    

   

 d 

 H 
 % 
 
eI
0





r+   )NNNNN)NNNTNN)0r)   r,   	functoolsr   typingr   r   r   r   r   r   r	   rZ   Zlitellm._loggingr
   Z*litellm.litellm_core_utils.litellm_loggingr   ZLiteLLMLoggingObjZ+litellm.llms.base_llm.rerank.transformationr   Z#litellm.llms.bedrock.rerank.handlerr   Z*litellm.llms.custom_httpx.llm_http_handlerr   Z'litellm.llms.together_ai.rerank.handlerr   Z!litellm.llms.watsonx.common_utilsr   Zlitellm.rerank_api.rerank_utilsr   Zlitellm.secret_managers.mainr   r   Zlitellm.types.rerankr   Zlitellm.types.routerZlitellm.utilsr   r   r   rc   rd   r`   r]   intboolr(   r+   r8   r8   r8   r9   <module>   s    $


,
