
    gF.                     Z   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"m#Z# d dl$ d dl%m&Z&m'Z'm(Z(  e       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       Z0e'	 	 	 	 	 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       Z1y)    N)partial)Any	CoroutineDictListLiteralOptionalUnion)verbose_logger)Logging)BaseRerankConfig)BedrockRerankHandler)BaseLLMHTTPHandler)JinaAIRerank)TogetherAIRerank)get_optional_rerank_params)
get_secretget_secret_str)OptionalRerankParamsRerankResponse)*)ProviderConfigManagerclientexception_typemodelquery	documentscustom_llm_provider)coheretogether_ai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                   L/var/www/openai/venv/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infinityc                 
   |j                  d      }	|j                  d      }
|j                  dd      }|j                  dd      }|j                  dd      }|j                  di       }|j                  dd      }|j                  d	d      }	 |j                  d
d      du }t        d+i |}t        j                  | ||j
                  |j                        \  } }}}t        j                  | t        j                  |            }t        || |j                  d      xs t        j                  xs d||||||||      }t        |j                  t              rt        |j                        |_        t!               }|
j#                  | |t%        |      ||||di d|j'                  d      |       |dk(  r|xs |j                  xs t        j                  }|xs/ |j
                  xs! t        j
                  xs t)        d      xs d}|t+        d      t,        j/                  | |||
|j                  |xs |j                  |||	xs t        j0                  xs i ||      }|S |dk(  r|xs+ |j
                  xs t        j
                  xs t)        d      }t,        j/                  | |||
|j                  |xs |j                  |||	xs t        j0                  xs i ||      }|S |dk(  r|xs |j                  xs t        j                  }|xs+ |j
                  xs t        j
                  xs t3        d      }|t+        d      t,        j/                  | |||
|j                  |xs |j                  |||	xs t        j0                  xs i ||      }|S |dk(  rn|xs= |j                  xs/ t        j4                  xs t)        d      xs t        j                  }|t7        d       t8        j/                  | ||||||||!	      }|S |d"k(  r-|t7        d#      t:        j/                  | ||||||||$	      }|S |d%k(  ra|xs+ |j
                  xs t        j
                  xs t)        d&      }t<        j/                  | ||||||||j'                  d      ||
'      }|S t7        d(|       # t*        $ r4}t?        j@                  d)t        |              tC        | ||*      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metadatauserr   r'   FT)r   r   api_baseapi_key)r   providerdrop_params)rerank_provider_configr   rG   r   r   r   r!   r"   r#   r$   non_default_params)r?   r@   rA   rB   preset_cache_keystream_response)exclude_unset)r   rC   optional_paramslitellm_paramsr   r   COHERE_API_BASEzhttps://api.cohere.comzNInvalid api base. api_base=None. Set in call or via `COHERE_API_BASE` env var.)r   r   optional_rerank_paramslogging_objtimeoutrE   rD   	_is_asyncr=   r   model_responser:   AZURE_AI_API_BASEr;   INFINITY_API_BASEzPInvalid api base. api_base=None. Set in call or via `INFINITY_API_BASE` env var.r    TOGETHERAI_API_KEYzSTogetherAI API key is required, please set 'TOGETHERAI_API_KEY' in your environment)	r   r   r   r!   r"   r#   r$   rE   rS   jina_aizMJina AI API key is required, please set 'JINA_AI_API_KEY' in your environment)	r   rE   r   r   r!   r"   r#   r$   rS   bedrockBEDROCK_API_BASE)r   r   r   r!   r"   r#   r$   rS   rM   rD   rQ   zUnsupported provider: zError in rerank: )r   r   original_exception )"getpopGenericLiteLLMParamslitellmget_llm_providerrD   rE   r   get_provider_rerank_configLlmProvidersr   rG   
isinstancerR   strfloatr   update_environment_variablesdict
model_dumpr   r0   base_llm_http_handlerr*   r=   r   togetherai_api_key
ValueErrortogether_rerankjina_ai_rerankbedrock_rerankr   errorr   )r   r   r   r   r!   r"   r#   r$   r1   r=   r>   r?   r@   rA   rB   rC   r   rS   rM   _custom_llm_providerdynamic_api_keydynamic_api_baserH   rP   rT   rE   rD   r7   r8   s                                r9   r*   r*   J   s   " %jj3G-3ZZ8M-N%+ZZ0A4%HO!::&<dCL$/Jzz*b)H::fd#DZZ$'FQ
JJy%0D8	.88 $$$7(11'//	 	G#_6F "<< --.BC 	 8R#9

=1QW5H5HQE 4#-1%8
 o--s3&+O,C,C&DO#')88 !78#2(<($$(#% ",,4,@ !5 	9 	
"  8+  M?#:#:Mgoo 
 ! ,"++,##, /0, ,  d  -33$8'=/'//'B?+B+B!#87??8b- 4 HD k "Z/  3"++3##3 12	  -33$8'=/'//'B?+B+B!#87??8b- 4 H\ C "Z/%S)@)@SGOOG ! 7"++7##7 ""56	  f  -33$8'=/'//'B?+B+B!#87??8b- 4 Hb I "]2   #"**#--# 23# ??   i  '--#'!1#5# . 
Hj U "Y.& c  &,,'#'!1#5# - 
HH 3 "Y.  2"++2##2 01	  &,,#'!1#5# / : : : N!/ - H"  56J5KLMM  
0Q9:-@UV
 	

sA   G"S 3BS 7B2S *A2S 1S A%S 5S 	T /S;;T )NNNNN)NNNTN)2r(   r+   	functoolsr   typingr   r   r   r   r   r	   r
   r`   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.jina_ai.rerank.handlerr   'litellm.llms.together_ai.rerank.handlerr   litellm.rerank_api.rerank_utilsr   litellm.secret_managers.mainr   r   litellm.types.rerankr   r   litellm.types.routerlitellm.utilsr   r   r   rm   rn   ro   rj   re   intboolr'   r*   r\       r9   <module>r      s      G G G  + S H D I < D F C E " G G #$%'*,  
 GK'+'+(,))) E#tCH~-./) "'*A"BC	)
 C=) $s)$) tn) !) >9S#~%=>>?) )X  	'+'+(,i
i
i
 E#tCH~-./i
 "?@	i
 C=i
 $s)$i
 tni
 !i
 >9S#~%=>>?i
 i
r   