
    ^hDb                        S SK r S SKrS SKJrJrJrJrJrJrJ	r	J
r
JrJr  S SKrS SKrS SKJr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJ r!  S S
KJ"r"  SSK#J$r$  SSK%J&r&  \" 5       r'\S   r(S\)S\\)   S\)S\\)   4S jr*S\)S\\)   S\)S\\)   4S jr+S\\   S\)S\,S\)S\)S\-S\\
\.\R^                  4      S\0S\	\\Rb                  4   4S jr2 " S S\$5      r3g)    N)
AnyCallableDictListLiteralOptionalTupleUnioncastget_args)Logging)CustomStreamWrapper)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)HuggingfaceChatConfig)AllMessageValues)EmbeddingResponse)Logprobs)ModelResponse   )BaseLLM   )HuggingfaceError)sentence-similarityzfeature-extractionrerankembed
similaritymodel	task_typeapi_basereturnc                     Ub4  U[        [        5      ;   a  U$ [        SR                  U[        5      5      e[	        SS9nUR                  US9nUR                  5       nUR                  SS 5      nU$ )N(Invalid task_type={}. Expected one of={}   concurrent_limiturlpipeline_tag)r   hf_tasks_embeddings	Exceptionformatr   getjsonr    r!   r"   http_client
model_infomodel_info_dictr+   s          _/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/huggingface/chat/handler.pyget_hf_task_embedding_for_modelr6   /   s     !455:AA2 
 q1KX.J oo'O"1"5"5nd"KL    c                 4  #    Ub4  U[        [        5      ;   a  U$ [        SR                  U[        5      5      e[	        [
        R                  R                  S9nUR                  US9I S h  vN nUR                  5       nUR                  SS 5      nU$  N(7f)Nr%   llm_providerr)   r+   )
r   r,   r-   r.   r   litellmLlmProvidersHUGGINGFACEr/   r0   r1   s          r5   %async_get_hf_task_embedding_for_modelr>   F   s      !455:AA2 
 )))55K #844J oo'O"1"5"5nd"KL 5s   A+B-B.)Bclientheadersdatamessagestimeout	json_modec	           	        #    U c  [         R                  n  U R                  XUSUS9I S h  vN n	UR!                  USU	S	U0S
9  U	R#                  5       U	R$                  4$  N4! [        R                   a  n
[        U
SS 5      n[        U
SS 5      nUc  U(       a  [        USS 5      n[        U
R                  R                  [        U
R                  R                  5       I S h  vN  5      U(       a  [        [        U5      S9eS S9eS n
A
f[         aA  n
[         R                   H  n[        X5      (       d  M  U
e   [        S[        U
5      S9eS n
A
ff = f7f)NT)r@   rA   streamrC   r@   responsestatus_codemessager@     rI   rJ    complete_input_dict)inputapi_keyoriginal_responseadditional_args)r;   module_level_aclientposthttpxHTTPStatusErrorgetattrr   rG   rI   strareadr   dictr-   LITELLM_EXCEPTION_TYPES
isinstance	post_callaiter_linesr@   )r?   r"   r@   rA   r    rB   logging_objrC   rD   rG   eerror_headerserror_response	exceptions                 r5   	make_callrd   _   s`     ~--@Dw % 
 
( ".5	   !8#3#3337
    	
9d3 J5 ^#NItDM

..ajj..00011>D}-
 	
 EI
 	

  @ 88I!'' 9 3A??	@sV   EA# A!A# 0E!A# #E7A-D
$C'%%D

E!E<EEEc                   Z  ^  \ rS rSr% Sr\\R                     \S'   Sr	\\R                     \S'   S,U 4S jjr0 SSS0 4S\S	\S
\\   S\S\S\S\S\S\S\\\\4      S\4U 4S jjjrS
\S\S\S\S\S\S\S\S\S\S\S	\\   4S jr S-S
\S\S\S\S	\\   S\S\S\\   4S jjrS\S\\   S\4S jrS\S\\   S\S\S\S\4S jrS\S\S\4S  jrS\S\S!\ S"   S\S\S\4S# jr!S$\S\"S\S\S\S\"4S% jr# S-S\S\S\$RJ                  RD                  S\\\RL                  4   S\S\S
\S\\   S\S\S\\   4S& jjr'SS\RL                  " S5      SS0 4S\S\S\"S\S\S\S\\   S
\\   S\\\RL                  4   S'\\   S\\\\4      S\"4U 4S( jjjr(S)\\   S\\)   4S* jr*S+r+U =r,$ ).Huggingface   N_client_session_aclient_sessionr#   c                 "   > [         TU ]  5         g N)super__init__)self	__class__s    r5   rm   Huggingface.__init__   s    r7   Fr    rB   r"   model_responseprint_verboserC   optional_paramslitellm_paramsacompletionr?   r@   c                 <  > [         TU ]  5         Sn [        R                  U5      u  nnUUS'   [        R	                  UUUUU
S9n[        R                  X1S9n[        R                  UUU
UUS9nU	R                  UUUUUUS.S9  USL aA  U
R                  S	S5      (       a  U R                  U	UUUXAXbS
9$ U R                  UUUUUXqXUS9
$ Ub  [        U[        5      (       d
  [        5       nS	U
;   aA  U
S	   SL a9  UR                  UU[        R                   " U5      U
S	   S9nUR#                  5       $ UR                  UU[        R                   " U5      S9n[        R%                  UUUU	UUUU
US US9$ ! [&        R(                   aL  n[+        UR,                  R.                  UR,                  R0                  UR,                  R2                  S9eS nAf[*         a	  nSnUeS nAf[4         a*  nU(       a  UeSS Kn[+        SUR9                  5       S9eS nAff = f)NFtask)rP   r@   r    rB   rs   )r"   r    )r    rB   rs   rt   r@   )rN   r@   r"   ru   rO   rP   rR   TrF   )r_   r"   rA   r@   rq   r    rC   rB   )
r"   rA   r@   rq   rw   encodingr    rs   rC   rt   )r*   r@   rA   rF   )r*   r@   rA   r    raw_responserq   r_   rP   request_datarB   rs   ry   rD   rt   rH   r   rK   rL   )rl   
completionhf_chat_configget_hf_task_for_modelvalidate_environmentget_api_basetransform_requestpre_callr/   async_streamingru   r\   r   r   rT   r0   dumps
iter_linestransform_responserU   rV   r   rG   rI   textr@   r-   	traceback
format_exc)rn   r    rB   r"   rq   rr   rC   ry   rP   r_   rs   rt   custom_prompt_dictru   	logger_fnr?   r@   exception_mapping_workedrw   completion_urlrA   rG   r`   r   ro   s                           r5   r}   Huggingface.completion   s   & 	#( V	X(>>uEKD%%)N6"$99! / : G ,88(8XN!33! /- 4 D   +/& .#.	! ! 	 d""&&x77//KR`gku|  N\  sz/  N  N  ++^$X_p~  FJ  U]  |K  m{+  |  |~Z%D%D*,?*x/HD/P!;;&#D)*84	 '   **,, ";;&#D) '  &88!)#1 +#!%%$3%"#1 9   $$ 	"JJ22



** 
   	'+$G 	X' &3	@T@T@VWW	XsE   B#E8 7E8 A(E8 6AE8 8HAGH G$$H1%HHrA   ry   r_   rP   c                 <  #    S n [        [        R                  R                  S9nUR	                  X[
        R                  " U5      U	S9I S h  vN nUn[        R                  UUUU
UUUUUS US9$  N#! [         a  n[        U[        R                  5      (       a
  [        SSS9e[        U[        5      (       a  UeUb>  [        US5      (       a-  [        S[        U5       SUR                    3UR"                  S	9e[        S[        U5       S9eS nAff = f7f)
Nr9   )r*   r@   rA   rC   rz   rK   zRequest Timeout ErrorrL   r   z

Original Response: rH   )r   r;   r<   r=   rT   r0   r   r~   r   r-   r\   rU   TimeoutExceptionr   hasattrrX   r   r@   )rn   r"   rA   r@   rq   ry   r    rs   rt   rC   r_   rP   rB   rG   r2   http_responser`   s                    r5   ru   Huggingface.acompletion   s:     .2$	M0$11==K #."2"2DJJt4Dg #3 # M %H!44*-'!! /!- 5  &  	M!U3344&3@WXXA/00%'(F*C*C& #"1vh&=hmm_M$,,  '33q6(LL	Ms<   DA	A5 A3"A5 2D3A5 5
D?BDDDc
                    #    [        U	UU[        R                  " U5      UUUUSS9	I S h  vN u  p[        U
USUS9nU$  N7f)NF)	r?   r"   r@   rA   r    rB   r_   rC   rD   huggingface)completion_streamr    custom_llm_providerr_   )rd   r0   r   r   )rn   r_   r"   rA   r@   rq   rB   r    rC   r?   r   _streamwrappers                r5   r   Huggingface.async_streaming6  sc      &/D!#
&
 
 
 ,/ -#	
 #
 
s   )AA ArO   r+   c                     Uc  SU0$ US:X  d  US:X  a&  [        U5      S:  a
  [        SSS9eSUS   US	S  S
.0$ US:X  a&  [        U5      S:  a
  [        SSS9eSUS   US	S  S.0$ SU0$ )Ninputsr   r   r     z)sentence-similarity requires 2+ sentencesrL   r   r&   source_sentence	sentencesr   zreranker requires 2+ sentences)querytexts)lenr   )rn   rO   r+   s      r5    _transform_input_on_pipeline_tag,Huggingface._transform_input_on_pipeline_tagU  s     e$$00LL4P5zA~& #G  %(qrSTTX%5zA~& #<  a59EFF%  r7   r!   	embed_urlc                    #    [        XUS9I S h  vN nU R                  XFS9n[        UR                  5       5      S:  a  XWS'   U$  N67f)Nr    r!   r"   rO   r+   r   options)r>   r   r   keys)rn   r    r!   r   rO   rs   hf_taskrA   s           r5   _async_transform_input"Huggingface._async_transform_inputj  sW      >y
 
 4454W##%&*-O
s   A	A7A	c                     [        5       R                  5       n/ SQnUR                  5        HI  u  pVXS;   a  UR                  S0 5        XaS   U'   M%  XT;   a  UR                  S0 5        XaS   U'   ME  XaU'   MK     U$ )N)
min_length
max_lengthtop_ktop_ptemperaturerepetition_penaltymax_timer   
parameters)HuggingfaceConfigget_special_options_paramsitems
setdefault)rn   rA   rs   special_options_keysspecial_parameters_keyskvs          r5   _process_optional_params$Huggingface._process_optional_params}  s    02MMO#
 $))+DA(	2.%&Y"-b1()\"1%Q , r7   	call_type)syncasyncc                 V   0 nSU;   a'  [        U5      S:X  a
  [        SSS9eSUS   USS  S.0nOMSU0nUR                  S	S 5      nUS
:X  a  [        X'US9nOUS:X  a  U R	                  X'XQS9$ U R                  UWS9n[        UR                  5       5      S:  a  U R                  XdS9nU$ )Nzsentence-transformersr   r   z+sentence transformers requires 2+ sentencesrL   r   r&   r   
input_typer   r   r   )r    r!   r   rO   r   )rA   rs   )r   r   popr6   r   r   r   r   )	rn   rO   r    r   rs   r   rA   r!   r   s	            r5   _transform_inputHuggingface._transform_input  s     "e+5zQ& #I  %(qrSTDe$D'++L$?IF"9y g%22	 3   88' 9 D ##%&*00 1 D r7   
embeddingsc                 X   / nSU;   a$  US    H  u  pxUR                  SUUS.5        M     O[        U5       H  u  px[        U[        5      (       a  UR                  SUUS.5        M1  [        U[        5      (       a/  [        US   [        5      (       a  UR                  SUUS.5        Mu  UR                  SUUS   S   S.5        M     SUl        Xbl        X2l        Sn	U H   n
U	[        UR                  U
5      5      -  n	M"     [        US[        R                  " U	U	U	S S S95        U$ )Nsimilarities	embedding)objectindexr   r   listusage)prompt_tokenscompletion_tokenstotal_tokensprompt_tokens_detailscompletion_tokens_details)append	enumerater\   floatr   r   rA   r    r   encodesetattrr;   Usage)rn   r   rq   r    rO   ry   output_dataidxr   input_tokensr   s              r5   _process_embedding_response'Huggingface._process_embedding_response  sO    Z'",^"<"""-!$%. #= #,J"7i//&&&1%()2  	400Z	!e5T5T&&&1%()2  &&&1%()21 !*% #86 !')$DC 566L  	MM*".)&**.
	
 r7   c                   #    U R                  UUSUUS9nUR                  UUUU	US.S9  Uc!  [        [        R                  R
                  S9nUR                  Xy[        R                  " U5      S9I S h  vN nUR                  UUSU0US9  UR                  5       nS	U;   a  [        S
US	   S9eU R                  UUUUU
S9$  NN7f)Nr   rO   r    r   rs   r   rN   r@   r"   rx   r9   r@   rA   rN   rO   rP   rR   rQ   errorrK   rL   r   rq   r    rO   ry   )r   r   r   r;   r<   r=   rT   r0   r   r]   r   r   )rn   r    rO   rq   rC   r_   rs   r"   rP   r@   ry   r?   rA   rG   r   s                  r5   
aembeddingHuggingface.aembedding  s     $$+ % 
 	'+"$ 	 	
 >+$11==F  XTZZPTEUVV 	2D9&	 	 	
 ]]_
j "sJw<OPP //!) 0 
 	
! Ws   A4C6C7ACr   c                 
  > [         TU ]  5         [        R                  UUUU/ S9nSnSU;   a  UnOgU(       a  UnO]S[        R
                  ;   a  [        R                  " SS5      nO1S[        R
                  ;   a  [        R                  " SS5      nOSU 3nU
SL a0  U R                  UUU	UUUU[        U[        5      (       a  UOS UUUS9$ U R                  UUS	UUS
9nUR                  UUUUUS.S9  Ub  [        U[        5      (       d	  [        SS9nUR                  X[        R                  " U5      S9nUR!                  UUSU0US9  UR                  5       nSU;   a  [#        SUS   S9eU R%                  UUUUUS9$ )N)rP   r@   r    rs   rB   rM   httpsHF_API_BASEHUGGINGFACE_API_BASEz,https://api-inference.huggingface.co/models/T)rO   rq   rC   r_   r@   r"   rP   r?   r    rs   ry   r   r   r   rx   r&   r'   r   rN   r   r   rK   rL   r   )rl   r   r~   r   osenvirongetenvr   r\   r   r   r   r   rT   r0   r   r]   r   r   )rn   r    rO   rq   rs   r_   ry   rP   r"   rC   r   r?   r@   r   rA   rG   r   ro   s                    r5   r   Huggingface.embedding@  s    	 55+ 6 
 	eI Ibjj(		-4I#rzz1		"8"=IFugNI ??-'"!+F4D!E!Ev4 /! #    $$+ % 
 	'+"% 	 	
 >FK!@!@ !4F;;y

4@P;Q 	2D9&	 	 	
 ]]_
j "sJw<OPP //!) 0 
 	
r7   hf_responsec           
         Uc  g[        / / / / S9nU GH[  nUS   nUR                  S0 5      n[        US   5       Hf  u  pgUS   nUS   n	UR                  R	                  U5        UR
                  R	                  U	5        SS	S
S.n
UR                  R	                  U
5        Mh     [        US   5       H  u  pgUS   nUS   n	0 n
/ nU0 :w  a  XV   nU H  nUS   nUS   nXU'   M     UR                  R	                  U5        UR
                  R	                  U	5        UR                  R	                  U
5        UR                  R	                  [        S US   SU  5       5      5        M     GM^     U$ )z?
Transform Hugging Face logprobs to OpenAI.Completion() format
N)text_offsettoken_logprobstokenstop_logprobsdetails
top_tokensprefillr   logprobg      g       g      )rM   rM   rM   r   c              3   >   #    U  H  n[        US    5      v   M     g7f)r   N)r   ).0ts     r5   	<genexpr>2Huggingface._transform_logprobs.<locals>.<genexpr>  s     O0N1AfI0Ns   )	TextCompletionLogprobsr/   r   r   r   r   r   r   sum)rn   r   _logprobrG   response_detailsr   itoken
token_texttoken_logprobtop_alt_tokenstemp_top_logprobselemr   r   s                  r5   _transform_logprobsHuggingface._transform_logprobs  s     ,B	,
 $H'	2)--lB?J%&6y&AB"6]
 !&i 0 &&z2''..}= '+$!?%%,,^< C  &&6x&@A"6]
 !&i 0!#$&!#(2% .D<D"9oG+24( . &&z2''..}=%%,,^< $$++O0@0J2A0NOO3 B+ $d r7    )r#   Nrk   )-__name__
__module____qualname____firstlineno__rh   r   rU   Client__annotations__ri   AsyncClientrm   rX   r   r   r   r   rZ   boolr
   r   r   r}   r   LiteLLMLoggingObjr   r   ru   r   r   r   r   r   r   r   r   r;   utilsTimeoutr   r   r  r  __static_attributes____classcell__)ro   s   @r5   rf   rf      s}   .2OXell+248hu0018  !AE#kXkX kX 3-	kX
 &kX  kX kX kX kX kX  {,<<=>!kX" #kX kXZ4M4M 4M 	4M
 &4M 4M 4M 4M 4M 4M '4M 4M '(4M@ .2  	
  & '(   )*>!!)1#!	!* C= 	
   
&T D T 0(( ( ?+	(
 ( ( 
(T@@ *@ 	@
 @ @ 
@\ .2=
=
 =
  77	=

 uemm+,=
 '=
 =
 =
 #=
 =
 =
 )*=
N "&"&/4}}T/B%)AEa
a
 a
 *	a

 a
 'a
 a
 #a
 3-a
 uemm+,a
 TNa
 {,<<=>a
 
a
 a
FD#D>D	(	)D Dr7   rf   )4r0   r   typingr   r   r   r   r   r   r	   r
   r   r   rU   r;   *litellm.litellm_core_utils.litellm_loggingr   r  ,litellm.litellm_core_utils.streaming_handlerr   &litellm.llms.custom_httpx.http_handlerr   r   r   r   ,litellm.llms.huggingface.chat.transformationr   r   litellm.types.llms.openair   litellm.types.utilsr   r   r  r   baser   common_utilsr   r~   r,   rX   r6   r>   rZ   r   r   r  r  Headersrd   rf   r  r7   r5   <module>r(     sN    	     S L  7 1 B -  +"$ P 
#C=47c].#C=47c]2*4%&*4*4 *4 	*4
 *4 *4 eE5==012*4 *4 3*4Z[	' [	r7   