
    3fi-                         d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ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mZ  e j0                  e      Z e	d	d
d       G d de             Zy)    N)AnyAsyncIteratorDictIteratorListOptional)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)GenerationChunk)get_pydantic_field_namespre_init)
ConfigDictFieldmodel_validatorz0.0.21z1.0z)langchain_huggingface.HuggingFaceEndpoint)removalalternative_importc                   P   e Zd ZU dZdZeed<   	 dZee   ed<   	 dZ	ee
   ed<   	 dZee
   ed<   	 d	Zee
   ed
<   	 dZee
   ed<   	 dZeed<   	 dZee   ed<   	  ee      Zee   ed<   	 dZee   ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	  ee      Zeeef   ed<   	  ee      Z eeef   ed<   	 dZ!eed<   dZ"eed<    e#d      Z$ e%d       e&d!eeef   d"efd#              Z'e(d!ed"efd$       Z)e*d"efd%       Z+e*d"eeef   fd&       Z,d'eee      d(ed"eeef   fd)Z-	 	 d1d*ed+eee      d,ee.   d(ed"ef
d-Z/	 	 d1d*ed+eee      d,ee0   d(ed"ef
d.Z1	 	 d1d*ed+eee      d,ee.   d(ed"e2e3   f
d/Z4	 	 d1d*ed+eee      d,ee0   d(ed"e5e3   f
d0Z6y)2HuggingFaceTextGenInferenceaW  
    HuggingFace text generation API.
    ! This class is deprecated, you should use HuggingFaceEndpoint instead !

    To use, you should have the `text-generation` python package installed and
    a text-generation server running.

    Example:
        .. code-block:: python

            # Basic Example (no streaming)
            llm = HuggingFaceTextGenInference(
                inference_server_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,
            )
            print(llm.invoke("What is Deep Learning?"))  # noqa: T201

            # Streaming response example
            from langchain_community.callbacks import streaming_stdout

            callbacks = [streaming_stdout.StreamingStdOutCallbackHandler()]
            llm = HuggingFaceTextGenInference(
                inference_server_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
            )
            print(llm.invoke("What is Deep Learning?"))  # noqa: T201

    i   max_new_tokensN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clientasync_clientforbid)extrabefore)modevaluesreturnc           
      `   t        |       }|j                  di       }t        |      D ]M  }||v rt        d| d      ||vst        j                  d| d| d| d       |j                  |      ||<   O |j                  |j                               }|rt        d| d	      ||d<   |S )
z>Build extra kwargs from additional params that were passed in.r*   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm 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   getlist
ValueErrorloggerwarningpopintersectionkeys)clsr1   all_required_field_namesr.   
field_nameinvalid_model_kwargss         u/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_community/llms/huggingface_text_gen_inference.pybuild_extraz'HuggingFaceTextGenInference.build_extran   s     $<C#@ 

>2.v, 		;JU" 6*5E!FGG!99!* .L !))34JN
 %+JJz$:j!		;  8DDUZZ\R23 4S T 
 "'~    c                     	 ddl } |j                  |d   fd|d   i|d   |d<    |j                  |d   fd|d   i|d   |d<   |S # t        $ r t        d      w xY w)	z3Validate that python package exists in environment.r   Nr#   r%   r)   r+   r,   zfCould not import text_generation python package. Please install it with `pip install text_generation`.)text_generationClientAsyncClientImportError)r<   r1   rD   s      r@   validate_environmentz0HuggingFaceTextGenInference.validate_environment   s    	"555-. y)  ) F8
 &A_%@%@-.&y)& )&F>"   	H 	s   AA
 
Ac                      y)zReturn type of llm.huggingface_textgen_inference selfs    r@   	_llm_typez%HuggingFaceTextGenInference._llm_type   s     /rB   c                 (   | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  d| j                  S )zEGet the default parameters for calling text generation inference API.)r   r   r   r   r   r   r   r   r    r!   r'   r(   )r   r   r   r   r   r   r   r   r    r!   r'   r(   r*   rL   s    r@   _default_paramsz+HuggingFaceTextGenInference._default_params   s|     #11ZZZZ++"&"9"9 $ 5 5"11II
 
 	
rB   runtime_stopkwargsc                 D    i | j                   |}|d   |xs g z   |d<   |S )Nr    )rP   )rM   rQ   rR   paramss       r@   _invocation_paramsz.HuggingFaceTextGenInference._invocation_params   s9     4D((3F3#)*:#;|?Qr#R rB   promptstoprun_managerc                 x   | j                   r-d} | j                  |||fi |D ]  }||j                  z  } |S  | j                  |fi |} | j                  j
                  |fi |}|d   D ]>  }	|	|j                  v s|j                  d |j                  j                  |	       |_        @ |j                  S Nr"   r    )r&   _streamtextrU   r+   generategenerated_textindex
rM   rV   rW   rX   rR   
completionchunkinvocation_paramsresstop_seqs
             r@   _callz!HuggingFaceTextGenInference._call   s     >>J%fdKJ6J )ejj(
)3D33DCFC"dkk""6?->?)*:; 	H3---%(%7%78c((..x8&"	
 !!!rB   c                   K   | j                   r0d} | j                  |||fi |2 3 d {   }||j                  z  } | j                  |fi |} | j                  j
                  |fi | d {   }|d   D ]>  }	|	|j                  v s|j                  d |j                  j                  |	       |_        @ |j                  S 7 6 |S 7 [wrZ   )r&   _astreamr\   rU   r,   r]   r^   r_   r`   s
             r@   _acallz"HuggingFaceTextGenInference._acall   s      >>J,t}}VT;Q&Q ) )eejj(
 4D33DCFC.D%%..vK9JKK)*:; 	H3---%(%7%78c((..x8&"	
 !!!)Q Ls8   $CCC	CAC2C3C;C	CCc              +   
  K    | j                   |fi |} | j                  j                  |fi |D ]  }d }|d   D ]  }||j                  j                  v s|} d }	|j                  j
                  rd }	nU|r=|j                  j                  d |j                  j                  j                  |       }	n|j                  j                  }	|	r-t        |	      }
|r|j                  |
j                         |
 |s y  y wNr    )r\   )	rU   r+   generate_streamtokenr\   specialr_   r   on_llm_new_tokenrM   rV   rW   rX   rR   rc   rd   stop_seq_foundre   r\   rb   s              r@   r[   z#HuggingFaceTextGenInference._stream   s      4D33DCFC.4;;..vK9JK 	C,0N-.>? .syy~~-%-N.
 #'Dyy  yy~~&L		(<(<^(LMyy~~ 'T200< 5	s   ADB%D?Dc                0  K    | j                   |fi |} | j                  j                  |fi |2 3 d {   }d }|d   D ]  }||j                  j                  v s|} d }	|j                  j
                  rd }	nU|r=|j                  j                  d |j                  j                  j                  |       }	n|j                  j                  }	|	r6t        |	      }
|r#|j                  |
j                         d {    |
 |s y 7 7 6 y wrk   )	rU   r,   rl   rm   r\   rn   r_   r   ro   rp   s              r@   rh   z$HuggingFaceTextGenInference._astream  s     4D33DCFC:**::6WEVW 	 	#,0N-.>? .syy~~-%-N.
 #'Dyy  yy~~&L		(<(<^(LMyy~~ 'T2%66uzzBBB 5	* C+ XsD   1DDDD#DB"DDDDDDD)NN)7__name__
__module____qualname____doc__r   int__annotations__r   r   r   floatr   r   r   r   boolr   r   r5   r    r   strr!   r#   r%   r&   r'   r(   dictr)   r   r   r*   r+   r,   r   model_configr   classmethodrA   r   rH   propertyrN   rP   rU   r   rf   r
   ri   r   r   r[   r   rh   rK   rB   r@   r   r      sW   'R 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FCL#L (#c3h C   $2 $ 4  . /3 / / 
c3h 
 
$$T#Y/;>	c3h %):>	"" tCy!" 67	"
 " 
"4 %)?C	"" tCy!" ;<	"
 " 
"4 %):>	## tCy!# 67	#
 # 
/	"#P %)?C	## tCy!# ;<	#
 # 
	'#rB   r   )loggingtypingr   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   	getLoggerrs   r7   r   rK   rB   r@   <module>r      se     E E 6 4 2 C 7 7			8	$ B
`# `
`rB   