
    KKi6@                        S SK Jr  S SKrS SKrS SKrS SK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  S S
KJr  \R6                  " \5      rSr " S S\5      rg)    )annotationsN)AsyncIteratorIteratorMapping)Any)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)GenerationChunk)from_envget_pydantic_field_names)
ConfigDictFieldmodel_validator)Self)ztext2text-generationztext-generationsummarizationconversationalc                     \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    \	" \
" SSS	9S
9rS\S'   SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    \	" \S
9rS\S'    SrS\S'    SrS \S!'    S"rS\S#'    SrS\S$'    SrS\S%'    SrS\S&'    \	" \S
9rS'\S('    \	" \S
9rS'\S)'    S \S*'   SrS+\S,'   Sr S+\S-'   Sr!S\S.'    \"" S/S09r#\$" S1S29\%S?S3 j5       5       r&\$" S4S29S@S5 j5       r'\(SAS6 j5       r)\(SBS7 j5       r*\(SCS8 j5       r+      SDS9 jr,  SE         SFS: jjr-  SE         SGS; jjr.  SE         SHS< jjr/  SE         SIS= jjr0S>r1g)JHuggingFaceEndpoint   at  Hugging Face Endpoint. This works with any model that supports text generation (i.e. text completion) task.

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:
    ```python
    # Basic Example (no streaming)
    model = 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(model.invoke("What is Deep Learning?"))

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

    callbacks = [StreamingStdOutCallbackHandler()]
    model = 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(model.invoke("What is Deep Learning?"))

    # Basic Example (no streaming) with Mistral-Nemo-Base-2407 model using a third-party provider (Novita).
    model = HuggingFaceEndpoint(
        repo_id="mistralai/Mistral-Nemo-Base-2407",
        provider="novita",
        max_new_tokens=100,
        do_sample=False,
        huggingfacehub_api_token="my-api-key",
    )
    print(model.invoke("What is Deep Learning?"))
    ```
Nz
str | Noneendpoint_urlrepo_idproviderHUGGINGFACEHUB_API_TOKEN)default)default_factoryhuggingfacehub_api_tokeni   intmax_new_tokensz
int | Nonetop_kgffffff?zfloat | Nonetop_p	typical_pg?temperaturerepetition_penaltyFboolreturn_full_texttruncatez	list[str]stop_sequencesseed strinference_server_urlx   timeout	streaming	do_sample	watermarkdict[str, Any]server_kwargsmodel_kwargsmodelr   clientasync_clienttaskforbid)extrabefore)modec           
        [        U 5      nUR                  S0 5      n[        U5       HR  nXC;   a  SU S3n[        U5      eXB;  d  M   [        R                  SU SU SU S35        UR                  U5      X4'   MT     UR                  UR                  5       5      nU(       a  SU S	3n[        U5      eX1S'   UR                  S
5      nUR                  S5      nUR                  S5      n	[        [        U5      [        U5      [        U	5      /5      S:  a  Sn[        U5      eU=(       d1    U=(       d(    U	=(       d    [        R                  R                  S5      US
'   US
   (       d  Sn[        U5      eU$ )z>Build extra kwargs from additional params that were passed in.r4   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.r5   r   r      zVPlease specify either a `model` OR an `endpoint_url` OR a `repo_id`,not more than one.HF_INFERENCE_ENDPOINTzKPlease specify a `model` or an `endpoint_url` or a `repo_id` for the model.)r   getlist
ValueErrorloggerwarningpopintersectionkeyssumr%   osenviron)
clsvaluesall_required_field_namesr:   
field_namemsginvalid_model_kwargsr5   r   r   s
             q/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_huggingface/llms/huggingface_endpoint.pybuild_extraHuggingFaceEndpoint.build_extra   s    $<C#@ 

>2.v,J"zl*:; o%9!* .L !++5,6LP
 %+JJz$:! '  8DDUZZ\R23 4S T  S/!!&~" 

7#zz.1**Y'UT,/g?@1D%  S/!W\WWW

?V0W 	w g  S/!    afterc           
     V   U R                   =(       d    [        R                  " S5      nSSKJnJn  [        [        R                  " U5      R                  5      nU" SU R                  U R                  UU R                  S.U R                  R                  5        VVs0 s H  u  pVXT;   d  M  XV_M     snnD6U l        [        [        R                  " U5      R                  5      nU" SU R                  U R                  UU R                  S.U R                  R                  5        VVs0 s H  u  pVXW;   d  M  XV_M     snnD6U l        [        U R                  R#                  5       5      U-
  U-
  n[%        U5      S:  a  [&        R)                  SU S35        U $ s  snnf s  snnf )zCValidate that package is installed and that the API token is valid.HF_TOKENr   )AsyncInferenceClientInferenceClient)r5   r.   api_keyr   zhIgnoring following parameters as they are not supported by the InferenceClient or AsyncInferenceClient: . )r   rI   getenvhuggingface_hubrX   rY   setinspect	signature
parametersr5   r.   r   r3   itemsr6   r7   rG   lenrC   rD   )	selfr   rX   rY   sync_supported_kwargskeyvalueasync_supported_kwargsignored_kwargss	            rQ   validate_environment(HuggingFaceEndpoint.validate_environment   s    $(#@#@ $
BIIE
 	
 !$G$5$5o$F$Q$Q R% 

**LL,]]	

 #'"4"4":":"<"<JC/ 
"<

 "%W%6%67K%L%W%W!X0 

**LL,]]	

 #'"4"4":":"<"<JC0 
"<

 ""'')*#$$% 	
 ~"NN<<J;K1N
 =s   F.F,F%;F%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'   stopr)   r0   r1   )r   r    r!   r"   r#   r$   r&   r'   r(   r)   r0   r1   r4   re   s    rQ   _default_params#HuggingFaceEndpoint._default_params  s|     #11ZZZZ++"&"9"9 $ 5 5''II
 
 	
rT   c                v    U R                   =(       d    0 nU R                  U R                  U R                  US.$ )zGet the identifying parameters.)r   r8   r   r4   )r4   r   r8   r   )re   _model_kwargss     rQ   _identifying_params'HuggingFaceEndpoint._identifying_params-  s8     ))/R --II)	
 	
rT   c                    g)zReturn type of llm.huggingface_endpointr\   ro   s    rQ   	_llm_typeHuggingFaceEndpoint._llm_type8  s     &rT   c                N    0 U R                   EUEnUS   U=(       d    / -   US'   U$ )Nrn   )rp   )re   runtime_stopkwargsparamss       rQ   _invocation_params&HuggingFaceEndpoint._invocation_params=  s5     4D((3F3<+=2>vrT   c                \   U R                   " U40 UD6nU R                  (       a.  SnU R                  " U4SU0UD6 H  nXgR                  -  nM     U$ U R                  R
                  " SUU R                  S.UD6nUS    H'  n	U[        U	5      * S U	:X  d  M  US[        U	5      *  nM)     U$ )z1Call out to HuggingFace Hub's inference endpoint.r*   run_manager)promptr5   rn   Nr\   )r~   r/   _streamtextr6   text_generationr5   rd   
re   r   rn   r   r|   invocation_params
completionchunkresponse_textstop_seqs
             rQ   _callHuggingFaceEndpoint._callD  s     !33DCFC>>J$/3D jj(
 33 
**
  
 *&1Hc(m^-.(: -.>X ? 2 rT   c                  #    U R                   " U40 UD6nU R                  (       a0  SnU R                  " U4SU0UD6  S h  vN nXgR                  -  nM  U R                  R
                  " SSU0UDU R                  SS.D6I S h  vN nUS    H'  n	U[        U	5      * S  U	:X  d  M  US [        U	5      *  nM)     U$  N{
 U$  N;7f)Nr*   r   r   F)r5   streamrn   r\   )r~   r/   _astreamr   r7   r   r5   rd   r   s
             rQ   _acallHuggingFaceEndpoint._acallb  s      !33DCFC>>J#}} $/ 3D  )e jj(
 #//?? 


 **	
 
 *&1Hc(m^-.(: -.>X ? 2 %)   
s;   <CC B>C ACCC)C>C  C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Nr   Trn   )r   )r~   r6   r   indexr   on_llm_new_tokenr   re   r   rn   r   r|   r   responsestop_seq_foundr   r   r   s              rQ   r   HuggingFaceEndpoint._stream  s      !33DCFC33
'
04
H *.N-f5'%-N 6
  $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   )r~   r7   r   r   r   r   r   r   s              rQ   r   HuggingFaceEndpoint._astream  s      !33DCFC$($5$5$E$E%
'%
04%
 
 
 	( *.N-f5'%-N 6
  $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)r7   r6   )rL   r2   returnr   )r   r   )r   r2   )r   zMapping[str, Any])r   r+   )r{   list[str] | Noner|   r   r   r2   )NN)
r   r+   rn   r   r   CallbackManagerForLLMRun | Noner|   r   r   r+   )
r   r+   rn   r   r   $AsyncCallbackManagerForLLMRun | Noner|   r   r   r+   )
r   r+   rn   r   r   r   r|   r   r   zIterator[GenerationChunk])
r   r+   rn   r   r   r   r|   r   r   zAsyncIterator[GenerationChunk])2__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r'   rA   r(   r)   r,   r.   r/   r0   r1   dictr3   r4   r6   r7   r8   r   model_configr   classmethodrR   rk   propertyrp   rt   rx   r~   r   r   r   r   __static_attributes__r\   rT   rQ   r   r      s$   1f  $L*#A GZPHjp
 ,1 !;TJ,j  NC,E: E<A #I|"K !$K#;'++P #d"=Hj2 %d ;NI;MD* "#"5GSIt?It"It* %*$$?M>?X#(#>L.>NJFCL#D*VL (#<  $<| '"0 #0d 
 
$ 
 
 & &,8;	 "&7;	  5	
  
B "&<@	  :	
  
B "&7;	## # 5	#
 # 
##P "&<@	"" " :	"
 " 
(" "rT   r   ) 
__future__r   r`   loggingrI   collections.abcr   r   r   typingr   langchain_core.callbacksr   r	   #langchain_core.language_models.llmsr
   langchain_core.outputsr   langchain_core.utilsr   r   pydanticr   r   r   typing_extensionsr   	getLoggerr   rC   VALID_TASKSr   r\   rT   rQ   <module>r      sX    "   	 < <  4 2 C 7 7 "			8	$j# jrT   