
    dh99                         S SK r 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
  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJrJr  \R6                  " \5      rS	r\" S
SSS9 " S S\5      5       rg)    N)AnyAsyncIteratorDictIteratorListMappingOptional)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)GenerationChunk)get_pydantic_field_namespre_init)
ConfigDictFieldmodel_validator)ztext2text-generationztext-generationsummarizationconversationalz0.0.37z1.0z)langchain_huggingface.HuggingFaceEndpoint)sinceremovalalternative_importc                      \ rS rSr% SrSr\\   \S'    Sr	\\   \S'    Sr
\\   \S'   Sr\\S'    Sr\\   \S	'    S
r\\   \S'    S
r\\   \S'    Sr\\   \S'    Sr\\   \S'    Sr\\S'    Sr\\   \S'    \" \S9r\\   \S'    Sr\\   \S'    Sr\\S'    Sr\\S'    Sr\\S'    Sr\\S'    Sr\\S'    \" \ S9r!\"\\#4   \S'    \" \ S9r$\"\\#4   \S'    \\S'   Sr%\#\S '   Sr&\#\S!'   Sr'\\   \S"'    \(" S#S$9r)\*" S%S&9\+S'\"\\#4   S(\#4S) j5       5       r,\-S'\"S(\"4S* j5       r.\/S(\"\\#4   4S+ j5       r0\/S(\1\\#4   4S, j5       r2\/S(\4S- j5       r3S.\\\      S/\#S(\"\\#4   4S0 jr4  S9S1\S2\\\      S3\\5   S/\#S(\4
S4 jjr6  S9S1\S2\\\      S3\\7   S/\#S(\4
S5 jjr8  S9S1\S2\\\      S3\\5   S/\#S(\9\:   4
S6 jjr;  S9S1\S2\\\      S3\\7   S/\#S(\<\:   4
S7 jjr=S8r>g):HuggingFaceEndpoint   a  
HuggingFace Endpoint.

To use this class, you should have installed the ``huggingface_hub`` package, and
the environment variable ``HUGGINGFACEHUB_API_TOKEN`` set with your API token,
or given as a named parameter to the constructor.

Example:
    .. code-block:: python

        # Basic Example (no streaming)
        llm = HuggingFaceEndpoint(
            endpoint_url="http://localhost:8010/",
            max_new_tokens=512,
            top_k=10,
            top_p=0.95,
            typical_p=0.95,
            temperature=0.01,
            repetition_penalty=1.03,
            huggingfacehub_api_token="my-api-key"
        )
        print(llm.invoke("What is Deep Learning?"))

        # Streaming response example
        from langchain_core.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

        callbacks = [StreamingStdOutCallbackHandler()]
        llm = HuggingFaceEndpoint(
            endpoint_url="http://localhost:8010/",
            max_new_tokens=512,
            top_k=10,
            top_p=0.95,
            typical_p=0.95,
            temperature=0.01,
            repetition_penalty=1.03,
            callbacks=callbacks,
            streaming=True,
            huggingfacehub_api_token="my-api-key"
        )
        print(llm.invoke("What is Deep Learning?"))

Nendpoint_urlrepo_idhuggingfacehub_api_tokeni   max_new_tokenstop_kgffffff?top_p	typical_pg?temperaturerepetition_penaltyFreturn_full_texttruncate)default_factorystop_sequencesseed inference_server_urlx   timeout	streaming	do_sample	watermarkserver_kwargsmodel_kwargsmodelclientasync_clienttaskforbid)extrabefore)modevaluesreturnc           
      $   [        U 5      nUR                  S0 5      n[        U5       HP  nXC;   a  [        SU S35      eXB;  d  M  [        R                  SU SU SU S35        UR                  U5      X4'   MR     UR                  UR                  5       5      nU(       a  [        SU S	35      eX1S'   S
U;  a  SU;  a  [        S5      eS
U;   a  SU;   a  [        S5      eUR                  S
5      =(       d    UR                  S5      US'   U$ )z>Build extra kwargs from additional params that were passed in.r2   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zL was transferred to model_kwargs.
                    Please make sure that z is what you intended.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.r   r   z<Please specify an `endpoint_url` or `repo_id` for the model.zAPlease specify either an `endpoint_url` OR a `repo_id`, not both.r3   )	r   getlist
ValueErrorloggerwarningpopintersectionkeys)clsr;   all_required_field_namesr8   
field_nameinvalid_model_kwargss         e/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/huggingface_endpoint.pybuild_extraHuggingFaceEndpoint.build_extra   s@    $<C#@ 

>2.v,J" 6*5E!FGG9!* .L !++5,6LP
 %+JJz$:! '  8DDUZZ\R23 4S T 
 "'~'IV,CN  V#	V(;S  !**^4M

98Mw    c                 J    SSK Jn  US   =(       d    [        R                  " S5      nUb   U" US9  SS	K JnJn  U" SUS
   US   US.US   D6US'   U" SUS
   US   US.US   D6US'   U$ ! [         a    [        S5      ef = f! [
         a  n[        S5      UeSnAff = f)zCValidate that package is installed and that the API token is valid.r   )loginzfCould not import huggingface_hub python package. Please install it with `pip install huggingface_hub`.r   HUGGINGFACEHUB_API_TOKENN)tokenzICould not authenticate with huggingface_hub. Please check your API token.)AsyncInferenceClientInferenceClientr3   r-   )r3   r-   rQ   r1   r4   r5    )	huggingface_hubrO   ImportErrorosgetenv	Exceptionr@   rR   rS   )rF   r;   rO   r   erR   rS   s          rJ   validate_environment(HuggingFaceEndpoint.validate_environment   s   	- $**D#E $
&J
  $/45 	J* 
/9%*
 _%	
x "6 "
/9%*"
 _%	"
~ A  	H 	   3 s"   A. B .B
B"BB"c                 (   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  S.U R                  E$ )zEGet the default parameters for calling text generation inference API.)r   r    r!   r"   r#   r$   r%   r&   r(   r)   r/   r0   )r   r    r!   r"   r#   r$   r%   r&   r(   r)   r/   r0   r2   selfs    rJ   _default_params#HuggingFaceEndpoint._default_params   s|     #11ZZZZ++"&"9"9 $ 5 5"11II
 
 	
rM   c                 j    U R                   =(       d    0 n0 U R                  U R                  S.ESU0E$ )zGet the identifying parameters.)r   r6   r2   )r2   r   r6   )r_   _model_kwargss     rJ   _identifying_params'HuggingFaceEndpoint._identifying_params   sB     ))/R
#00$))D
}-
 	
rM   c                     g)zReturn type of llm.huggingface_endpointrT   r^   s    rJ   	_llm_typeHuggingFaceEndpoint._llm_type   s     &rM   runtime_stopkwargsc                 N    0 U R                   EUEnUS   U=(       d    / -   US'   U$ )Nr(   )r`   )r_   rj   rk   paramss       rJ   _invocation_params&HuggingFaceEndpoint._invocation_params   s9     4D((3F3#)*:#;|?Qr#R rM   promptstoprun_managerc                 *   U R                   " U40 UD6nU R                  (       a-  SnU R                  " XU40 UD6 H  nXgR                  -  nM     U$ US   US'   U R                  R                  XS.SU R                  S9n [        R                  " UR                  5       5      S   S   n	US    H'  n
U	[        U
5      * S	 U
:X  d  M  U	S	[        U
5      *  n	M)     U	$ ! [         a*    [        R                  " UR                  5       5      S   n	 Nef = f)
z1Call out to HuggingFace Hub's inference endpoint.r*   r(   rq   inputs
parametersFjsonstreamr6   r   generated_textN)rn   r.   _streamtextr4   postr6   rx   loadsdecodeKeyErrorlenr_   rp   rq   rr   rk   invocation_params
completionchunkresponseresponse_textstop_seqs              rJ   _callHuggingFaceEndpoint._call   s*    !33DCFC>>JfKUCTUjj(
 V(9 )f% {{'' &HYY ( H
P $

8??+< =a @AQ R ..>? #h-!12h>$12BS]N$CM @ !   P $

8??+< =>N OPs   *C 1DDc                 T  #    U R                   " U40 UD6nU R                  (       a/  SnU R                  " XU40 UD6  S h  vN nXgR                  -  nM  US   US'   U R                  R                  XS.SU R                  S9I S h  vN n [        R                  " UR                  5       5      S   S   n	US    H'  n
U	[        U
5      * S  U
:X  d  M  U	S [        U
5      *  n	M)     U	$  N
 U$  Nf! [         a*    [        R                  " UR                  5       5      S   n	 Nlf = f7f)	Nr*   r(   rq   rt   Frw   r   rz   )rn   r.   _astreamr|   r5   r}   r6   rx   r~   r   r   r   r   s              rJ   _acallHuggingFaceEndpoint._acall  sH     !33DCFC>>J#}}k ->  )e jj(
 )::J(Kf%!..33 &HYY 4  H
P $

8??+< =a @AQ R ..>? #h-!12h>$12BS]N$CM @ ! -)     P $

8??+< =>N OPs_   ;D(C,C*C,AD(C/	D(*C1 8D(D(*C,,D(11D%"D($D%%D(c              +   n  #    U R                   " U40 UD6nU R                  R                  " U40 UDSS0D6 Hy  nS nUS    H  nX;   d  M
  UnM     S n	U(       a  US UR                  U5       n	OUn	U	(       a/  [	        U	S9n
U(       a  UR                  U
R                  5        U
v   U(       d  My    g    g 7fNry   Tr(   )r|   )rn   r4   text_generationindexr   on_llm_new_tokenr|   r_   rp   rq   rr   rk   r   r   stop_seq_foundr   r|   r   s              rJ   r{   HuggingFaceEndpoint._stream>  s      !33DCFC33
'
04
H -1N-.>?'%-N @
 #'D @(.."@A 'T200< ~5
s   AB5A!B50B5c                  #    U R                   " U40 UD6nU R                  R                  " U40 UDSS0D6I S h  vN   S h  vN nS nUS    H  nX;   d  M
  UnM     S n	U(       a  US UR                  U5       n	OUn	U	(       a8  [	        U	S9n
U(       a#  UR                  U
R                  5      I S h  vN   U
7v   U(       d  M    g  N N N
 g 7fr   )rn   r5   r   r   r   r   r|   r   s              rJ   r   HuggingFaceEndpoint._astreamc  s      !33DCFC$($5$5$E$E%
'%
04%
 
 
 	( -1N-.>?'%-N @
 #'D @(.."@A 'T2%66uzzBBB ~5
 	* C+
sQ   8CC	CCCCCAC4C5CCCCCrT   )NN)?__name__
__module____qualname____firstlineno____doc__r   r	   str__annotations__r   r   r   intr    r!   floatr"   r#   r$   r%   boolr&   r   r?   r(   r   r)   r+   r-   r.   r/   r0   dictr1   r   r   r2   r4   r5   r6   r   model_configr   classmethodrK   r   r[   propertyr`   r   rd   rh   rn   r   r   r   r   r   r   r{   r   r   __static_attributes__rT   rM   rJ   r   r      s   )V #'L(3-&!GXc]!.2hsm2NC,E8C=!E8E?!A!%Ix%K#&K%&;*..P"d"="Hhsm"2 %d ;NDI;MD(3- "#"5GSIt?It"It*$)$$?M4S>?X#(#>L$sCx.>NJFCL#D(3-I L (# c3h  C    $ D %$ %4 % %N 
c3h 
 
$ 
WS#X%6 
 
 &3 & &$T#Y/;>	c3h %):>	!!!! tCy!!! 67	!!
 !! 
!!L %)?C	 ! ! tCy! ! ;<	 !
  ! 
 !J %):>	## tCy!# 67	#
 # 
/	"#P %)?C	"" tCy!" ;<	"
 " 
	'" "rM   r   ) rx   loggingrW   typingr   r   r   r   r   r   r	   langchain_core._api.deprecationr
   langchain_core.callbacksr   r   #langchain_core.language_models.llmsr   langchain_core.outputsr   langchain_core.utilsr   r   pydanticr   r   r   	getLoggerr   rA   VALID_TASKSr   rT   rM   rJ   <module>r      sw      	 N N N 6 4 2 8 7			8	$ 
B
c# c
crM   