
    jH                     H   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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)get_optional_rerank_params)
get_secretget_secret_str)RerankResponse)*)ProviderConfigManagerclientexception_typemodelquery	documentscustom_llm_provider)coheretogether_ai	deepinfra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                   p/Users/manta/Documents/Projects/TheRoad-I1/backend/.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infinitylitellm_proxyhosted_vllmr   max_tokens_per_docc	                    |	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        d3i |	}||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(  rb|xs+ |j                  xs t        j                  xs t3        d"      }tP        j9                  | ||||||||j-                  d      |||'      } | 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        |t        jV                        st        |t        jX                        r|d.k7  r|d/k7  rtG        d0|       t6        j9                  | |||||j                   |xs |j                  |xs |j                  ||
xs t        j:                  xs i ||      } | S c c}}w # t4        $ r4}!t        jZ                  d1t#        |!              t]        | ||!2      d}!~!ww xY w)4zK
    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=   )r   r   api_baseapi_key)r   providerrF   present_version_paramsdrop_params)rerank_provider_configr   rJ   r   r   r   r    r!   r"   r#   r=   non_default_paramszoptional_rerank_params: )rA   rB   rC   rD   preset_cache_keystream_response)exclude_unset)r   rE   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timeoutrG   rF   	_is_asyncr?   r   model_responseAZURE_AI_API_BASE)r   r   rT   rS   rU   rV   rG   rF   rW   r?   r   rX   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#   rG   rW   zMJina AI API key is required, please set 'JINA_AI_API_KEY' in your environmentBEDROCK_API_BASE)r   r   rT   rU   rS   rV   rG   rF   rW   r?   r   rX   zSNvidia NIM API key is required, please set 'NVIDIA_NIM_API_KEY' in your environmentNVIDIA_NIM_API_BASEzhttps://ai.api.nvidia.com)r   r   r   r    r!   r"   r#   rW   rP   rF   rU   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.r   r;   zUnsupported provider: zError in rerank: )r   r   original_exception )/getpopGenericLiteLLMParamsitemslitellmget_llm_providerrF   rG   r   get_provider_rerank_configLlmProvidersr   rJ   r   info
isinstancerV   strfloatr   update_environment_variablesdict
model_dumpCOHERELITELLM_PROXYr   r/   base_llm_http_handlerr)   r?   AZURE_AIINFINITYr   TOGETHER_AItogetherai_api_key
ValueErrortogether_rerankJINA_AI
NVIDIA_NIMBEDROCKbedrock_rerankHOSTED_VLLM	DEEPINFRACohereRerankConfigCohereRerankV2Configerrorr   )"r   r   r   r   r    r!   r"   r#   r=   r0   r?   r@   rA   rB   rC   rD   rE   r   rW   rP   unique_version_paramskvrI   _custom_llm_providerdynamic_api_keydynamic_api_baserK   rT   rX   rG   rF   r6   r7   s"                                     r8   r)   r)   H   s$
   4 %jj3G-3ZZ8M-N%+ZZ0A4%HO!::&<dCL$/Jzz*b)H::fd#DZZ$'Fi
JJy%0D8	.88 #5"4!

 0557"
7$!Q1=A7 	 "
 $$ 3$--#++	
	
  "<< --.BC(11'=	 	 (B#9

=1QW5H5HQE 4#-11%(
 	67M6NOPo--s3&+O,C,C&DO#')88 !78#2(<($$(#% ",,4,@ !5 	9 	
"  7#7#7#>#>>BVZaZnZnZ|Z|B|  M?#:#:Mgoo 
 ! ,"++,##, /0, ,  d  -33$8 6'=/'//!#87??8b- 4 HX } "W%9%9%B%BB  3"++3##3 12	  -33$8'= 6/'//'B?+B+B!#87??8b- 4 Hn S "W%9%9%B%BB%S)@)@SGOOG ! 7"++7##7 ""56	  f  -33$8 6'=/'//'B?+B+B!#87??8b- 4 Hr W "W%9%9%E%EE   #"**#--# 23# ??   i  '--#'!1#5# . 
Hx c "W%9%9%A%AA& c 
 ! 2"++2##2 01	  -33$8'=/ 6'//'B?+B+B!#87??8b- 4 HH m "W%9%9%D%DD& i   (( /34/.  -33$8'=/ 6'//'B?+B+B!#87??8b- 4 HP u "W%9%9%A%AA  2"++2##2 01	  &,,#'!1#5# / : : : N!/ - Hd I "W%9%9%E%EE   9"**9!"78  ! :"++:!"89   x  -33$8 6'=/'//!#87??8b- 4 Hb E "W%9%9%C%CC 7"**7!"56  ! 8"++8!"67   t  -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
 	

sp   7b 
bbHb *Bb Cb B
b B)b Bb  A>b B&b B&b -B*b b 	c'/cc)NNNNN)NNNTNN).r'   r*   	functoolsr   typingr   r   r   r   r   r	   r
   rh   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.rerank_api.rerank_utilsr   litellm.secret_managers.mainr   r   litellm.types.rerankr   litellm.types.routerlitellm.utilsr   r   r   r{   r   ru   rn   intboolr&   r)   rc       r8   <module>r      s      G G G  + S H D I D F C / " G G #$%'*,  
 TX'+'+(,))) E#tCH~-./) "'*N"OP	)
 C=) $s)$) tn) !) >9S#~%=>>?) )X  	'+'+(,(,'J
J
J
 E#tCH~-./J
 "	

	J
 C=J
  $s)$!J
" tn#J
$ !%J
& !'J
* >9S#~%=>>?+J
 J
r   