Ë
    µŒjv5  ã                  óæ   — d dl mZ d dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d	Zd
ZdZdZ ej6                  e«      Z eddd¬«       G d„ de«      «       Zy)é    )ÚannotationsN)ÚAnyÚIteratorÚListÚMappingÚOptional)Ú
deprecated)ÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚGenerationChunkÚ	LLMResult)Ú
ConfigDictÚgpt2útext-generation)útext2text-generationr   ÚsummarizationÚtranslationé   z0.0.37z1.0z)langchain_huggingface.HuggingFacePipeline)ÚsinceÚremovalÚalternative_importc                  ó  — e Zd ZU dZdZded<   eZded<   	 dZded<   	 dZ	ded	<   	 e
Zd
ed<   	  ed¬«      Zeddddde
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zedd„«       Zedd„«       Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚHuggingFacePipelinea\  HuggingFace Pipeline API.

    To use, you should have the ``transformers`` python package installed.

    Only supports `text-generation`, `text2text-generation`, `summarization` and
    `translation`  for now.

    Example using from_model_id:
        .. code-block:: python

            from langchain_community.llms import HuggingFacePipeline
            hf = HuggingFacePipeline.from_model_id(
                model_id="gpt2",
                task="text-generation",
                pipeline_kwargs={"max_new_tokens": 10},
            )
    Example passing pipeline in directly:
        .. code-block:: python

            from langchain_community.llms import HuggingFacePipeline
            from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

            model_id = "gpt2"
            tokenizer = AutoTokenizer.from_pretrained(model_id)
            model = AutoModelForCausalLM.from_pretrained(model_id)
            pipe = pipeline(
                "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=10
            )
            hf = HuggingFacePipeline(pipeline=pipe)
    Nr   ÚpipelineÚstrÚmodel_idúOptional[dict]Úmodel_kwargsÚpipeline_kwargsÚintÚ
batch_sizeÚforbid)ÚextraÚdefaultéÿÿÿÿc	                ó6  — 	 ddl m}
m}m} ddl m} |xs i } |j                  |fi |¤Ž}	 |dk(  r5|dk(  r	 ddlm} 	  |j                  |fi |¤Ž}nc |
j                  |fi |¤Ž}nO|dv r5|dk(  r	 ddlm
} 	  |j                  |fi |¤Ž}n* |j                  |fi |¤Ž}nt        d|› dt        › d�«      ‚|j                  €¹|j                  j                  �|j                  j                  |_        n‡|j                  j                   �@t#        |j                  j                   t$        «      r|j                  j                   |_        n1|j                   �|j                   |_        n|j'                  ddi«       t)        |dd«      st)        |dd«      r"|� |dk(  rt*        j-                  d|› d�«       d}|�‰t.        j0                  j3                  d«      �j|dk(  reddl}|j6                  j9                  «       }|dk  s||k\  rt        d|› d|› d�«      ‚|�|dk  rd}|� |dk  r|dkD  rt*        j-                  d |«       |�|�|dk(  rt*        j-                  d!«       d"|v r)|j;                  «       D ��ci c]  \  }}|d"k7  sŒ||“Œ }}}|xs i } |d%|||||||d#œ|¤Ž}|j<                  t        vr t        d|j<                  › dt        › d�«      ‚ | d%|||||d$œ|	¤ŽS # t
        $ r t        d«      ‚w xY w# t
        $ r t        d«      ‚w xY w# t        $ r  |j                  |fd	d
i|¤Ž}Y �Œ~w xY w# t
        $ r t        d«      ‚w xY w# t        $ r  |j                  |fd	d
i|¤Ž}Y �Œ»w xY w# t
        $ r}t        d|› d�«      |‚d}~ww xY wc c}}w )&z5Construct the pipeline object from model_id and task.r   )ÚAutoModelForCausalLMÚAutoModelForSeq2SeqLMÚAutoTokenizer)r   z`Could not import transformers python package. Please install it with `pip install transformers`.r   Úopenvino)ÚOVModelForCausalLMzlCould not import optimum-intel python package. Please install it with: pip install 'optimum[openvino,nncf]' ÚexportT)r   r   r   )ÚOVModelForSeq2SeqLMúGot invalid task ú, currently only ú are supportedzCould not load the z# model due to missing dependencies.NÚ	pad_tokenz[PAD]Úis_loaded_in_4bitFÚis_loaded_in_8bitr%   z+Setting the `device` argument to None from z˜ to avoid the error caused by attempting to move the model that was already loaded on the GPU using the Accelerate module to the same or another device.Útorchr&   zGot device==z', device is required to be within [-1, Ú)zÍDevice has %d GPUs available. Provide device={deviceId} to `from_model_id` to use availableGPUs for execution. deviceId is -1 (default) for CPU and can be a positive integer associated with CUDA device id.z6Please set device for OpenVINO through: `model_kwargs`Útrust_remote_code)ÚtaskÚmodelÚ	tokenizerÚdeviceÚ
device_mapr"   r   )r   r   r   r    r"   © )Útransformersr(   r)   r*   r   ÚImportErrorÚfrom_pretrainedÚoptimum.intel.openvinor,   Ú	Exceptionr.   Ú
ValueErrorÚVALID_TASKSr2   ÚconfigÚpad_token_idÚeos_token_idÚ
isinstancer!   Úadd_special_tokensÚgetattrÚloggerÚwarningÚ	importlibÚutilÚ	find_specr5   ÚcudaÚdevice_countÚitemsr8   )Úclsr   r8   Úbackendr;   r<   r   r    r"   Úkwargsr(   r)   r*   Úhf_pipelineÚ_model_kwargsr:   r,   r9   r.   Úer5   Úcuda_device_countÚkÚvÚ_pipeline_kwargsr   s                             úw/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/huggingface_pipeline.pyÚfrom_model_idz!HuggingFacePipeline.from_model_idM   s¿  € ð	÷ñ õ
 =ð %Ò*¨ˆØ1�M×1Ñ1°(ÑL¸mÑLˆ	ð=	ØÐ(Ò(Ø˜jÒ(ðÝMð
à BÐ 2× BÑ BØ$ñ!Ø(5ñ!™ð AÐ0×@Ñ@Ø ñØ$1ñ‘Eð ÐQÑQØ˜jÒ(ðÝNð
à CÐ 3× CÑ CØ$ñ!Ø(5ñ!™ð BÐ1×AÑAØ ñØ$1ñ‘Eô !Ø'¨ vð .&Ü&1 ]°.ðBóð ð ×ÑÐ&Ø�|‰|×(Ñ(Ð4Ø).¯©×)BÑ)B�	Õ&Ø—‘×*Ñ*Ð6¼:Ø—‘×)Ñ)¬3ô<ð */¯©×)BÑ)B�	Õ&Ø×'Ñ'Ð3Ø)2×)?Ñ)?�	Õ&à×,Ñ,¨k¸7Ð-CÔDô ˜Ð2°EÔ:Ü˜5Ð"5°uÔ=àÐ"Ø˜9Ò$ä�N‰NØ=¸f¸Xð F"ð "ôð ˆFð ÐÜ—‘×(Ñ(¨Ó1Ð=Ø˜9Ò$ãà %§
¡
× 7Ñ 7Ó 9ÐØ˜Š{˜vÐ):Ò:Ü Ø" 6 (ð +<Ø<MÐ;NÈaðQóð ð Ð%¨&°1ª*Ø�ØÐ! f¨q¢jÐ5FÈÒ5JÜ—‘ðPð &ôð Ð *Ð"8¸WÈ
Ò=RÜ�N‰NÐSÔTØ -Ñ/à!.×!4Ñ!4Ô!6ôÙ!6™˜˜A¸!Ð?RÓ:R��1‘Ð!6ð ñ ð +Ò0¨bÐÙð 	
ØØØØØ!Ø!Ø&ñ	
ð ñ	
ˆð �=‰=¤Ñ+ÜØ# H§M¡M ?ð 3"Ü"- ¨nð>óð ñ ð 
ØØØ&Ø,Ø!ñ
ð ñ
ð 	
øôc ò 	ÜðEóð ð	ûô 'ò Ü)ðDóð ðûô %ò à BÐ 2× BÑ BØ$ñ!Ø-1ð!Ø5Bñ!›ðûô 'ò Ü)ðDóð ðûô %ò à CÐ 3× CÑ CØ$ñ!Ø-1ð!Ø5Bñ!›ðûô ò 	ÜØ% d VÐ+NÐOóàðûð	üóvs˜   ‚K" ¬
M4 ·K: ¾L ÁM4 Á0L7 Á7M Â
+M4 É6NÊNË"K7Ë:LÌM4 ÌL4Ì0M4 Ì3L4Ì4M4 Ì7MÍM4 ÍM1Í-M4 Í0M1Í1M4 Í4	NÍ=NÎNc                óJ   — | j                   | j                  | j                  dœS )zGet the identifying parameters.©r   r   r    r`   ©Úselfs    r]   Ú_identifying_paramsz'HuggingFacePipeline._identifying_paramsý   s'   € ð Ÿ™Ø ×-Ñ-Ø#×3Ñ3ñ
ð 	
ó    c                 ó   — y)NÚhuggingface_pipeliner=   ra   s    r]   Ú	_llm_typezHuggingFacePipeline._llm_type  s   € à%rd   c           	     óP  — g }| j                   r| j                   ni }|j                  d|«      }|j                  dd«      }t        dt        |«      | j                  «      D �]  }	||	|	| j                  z    }
 | j
                  |
fi |¤Ž}t        |«      D ]ã  \  }}t        |t        «      r|d   }| j
                  j                  dk(  r|d   }n†| j
                  j                  dk(  r|d   }ng| j
                  j                  dk(  r|d	   }nH| j
                  j                  d
v r|d   }n*t        d| j
                  j                  › dt        › d�«      ‚|r|t        |
|   «      d  }|j                  |«       Œå �Œ t        |D �cg c]  }t        |¬«      g‘Œ c}¬«      S c c}w )Nr    Úskip_promptFr   r   Úgenerated_textr   r   Úsummary_textr   Útranslation_textr/   r0   r1   ©Útext)Úgenerations)r    ÚgetÚrangeÚlenr"   r   Ú	enumeraterH   Úlistr8   rC   rD   Úappendr   r   )rb   ÚpromptsÚstopÚrun_managerrU   Útext_generationsÚdefault_pipeline_kwargsr    ri   ÚiÚbatch_promptsÚ	responsesÚjÚresponsern   s                  r]   Ú	_generatezHuggingFacePipeline._generate
  s¸  € ð ')Ðà:>×:NÒ:N $×"6Ò"6ÐTVÐØ Ÿ*™*Ð%6Ð8OÓPˆà—j‘j °Ó6ˆä�qœ#˜g›,¨¯©×8ˆAØ# A¨¨D¯O©OÑ(;Ð<ˆMð &˜Ÿ™Øñà!ñˆIô  )¨Ö3‘��8Ü˜h¬Ô-à'¨™{�Hà—=‘=×%Ñ%Ð):Ò:Ø#Ð$4Ñ5‘DØ—]‘]×'Ñ'Ð+AÒAØ#Ð$4Ñ5‘DØ—]‘]×'Ñ'¨?Ò:Ø# NÑ3‘DØ—]‘]×'Ñ'¨=Ñ8Ø#Ð$6Ñ7‘Dä$Ø+¨D¯M©M×,>Ñ,>Ð+?ð @*Ü*5¨°nðFóð ñ Ø¤ M°!Ñ$4Ó 5Ð 7Ð8�Dà ×'Ñ'¨Õ-ò+  4ð 9ôB Ù=MÓNÑ=M°Tœ*¨$Ô/Ò0Ð=MÑNô
ð 	
ùÚNs   ÆF#c              +  ó‚  ‡K  — ddl m} dd l}ddlm}m}m}	 |j                  di «      }
|j                  dd«      }|�%| j                  j                  j                  |«      }|xs g Š G ˆfd„d|«      } | |«       g«      }| j                  j                  |d	¬
«      } |	| j                  j                  d|d¬«      }t        |f||dœ|
¤Ž} || j                  j                  j                  |¬«      }|j                  «        |D ]1  }t        |¬«      }|r|j!                  |j"                  |¬«       |–— Œ3 y ­w)Nr   )ÚThread)ÚStoppingCriteriaÚStoppingCriteriaListÚTextIteratorStreamerr    ri   Tc                  ó*   •— e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zy)ú1HuggingFacePipeline._stream.<locals>.StopOnTokensc                ó.   •— ‰D ]  }|d   d   |k(  sŒ y y)Nr   r&   TFr=   )rb   Ú	input_idsÚscoresrU   Ústop_idÚstopping_ids_lists        €r]   Ú__call__z:HuggingFacePipeline._stream.<locals>.StopOnTokens.__call__V  s(   ø€ ó  1�GØ  ‘| BÑ'¨7Ó2Ù#ð  1ð rd   N)r‰   ztorch.LongTensorrŠ   ztorch.FloatTensorrU   r   ÚreturnÚbool)Ú__name__Ú
__module__Ú__qualname__r�   )rŒ   s   €r]   ÚStopOnTokensr‡   U  s.   ø„ ð	à+ð	ð *ð	ð ð		ð
 ö	rd   r“   Úpt)Úreturn_tensorsg      N@)Útimeoutri   Úskip_special_tokens)ÚstreamerÚstopping_criteria)ÚtargetrU   rm   )Úchunk)Ú	threadingr‚   r5   r>   rƒ   r„   r…   rp   r   r:   Úconvert_tokens_to_idsÚdictr9   ÚgenerateÚstartr   Úon_llm_new_tokenrn   )rb   Úpromptrw   rx   rU   r‚   r5   rƒ   r„   r…   r    ri   r“   r™   Úinputsr˜   Úgeneration_kwargsÚt1Úcharr›   rŒ   s                       @r]   Ú_streamzHuggingFacePipeline._stream>  s>  øè ø€ õ 	%ã÷	
ñ 	
ð !Ÿ*™*Ð%6¸Ó;ˆØ—j‘j °Ó5ˆàÐØ—=‘=×*Ñ*×@Ñ@ÀÓFˆDØ šJ BÐö
	Ð+ô 
	ñ 1±,³.Ð1AÓBÐà—‘×(Ñ(¨ÀÐ(ÓEˆÙ'Ø�M‰M×#Ñ#ØØ#Ø $ô	
ˆô !Øð
àØ/ñ
ð ñ	
Ðñ ˜4Ÿ=™=×.Ñ.×7Ñ7Ð@QÔRˆØ
�‰Œ
ãˆDÜ#¨Ô.ˆEÙØ×,Ñ,¨U¯Z©Z¸uÐ,ÔEà‹Kñ ùs   ƒD<D?)r   r   r8   r   rT   r   r;   zOptional[int]r<   zOptional[str]r   r   r    r   r"   r!   rU   r   rŽ   r   )rŽ   zMapping[str, Any])rŽ   r   )NN)
rv   z	List[str]rw   úOptional[List[str]]rx   ú"Optional[CallbackManagerForLLMRun]rU   r   rŽ   r   )
r¢   r   rw   r¨   rx   r©   rU   r   rŽ   zIterator[GenerationChunk])r�   r‘   r’   Ú__doc__r   Ú__annotations__ÚDEFAULT_MODEL_IDr   r   r    ÚDEFAULT_BATCH_SIZEr"   r   Úmodel_configÚclassmethodr^   Úpropertyrc   rg   r€   r§   r=   rd   r]   r   r      sŽ  … ñð> €HˆcÓØ$€HˆcÓ$ØØ#'€L�.Ó'Ø0Ø&*€O�^Ó*Ø3Ø(€J�Ó(ØHáØô€Lð ð
 !Ø "Ø$(Ø'+Ø*.Ø,ðm
àðm
ð ðm
ð ð	m
ð
 ðm
ð "ðm
ð %ðm
ð (ðm
ð ðm
ð ðm
ð 
òm
ó ðm
ð^ ò
ó ð
ð ò&ó ð&ð %)Ø:>ð	2
àð2
ð "ð2
ð 8ð	2
ð
 ð2
ð 
ó2
ðn %)Ø:>ð	:àð:ð "ð:ð 8ð	:ð
 ð:ð 
#ô:rd   r   )Ú
__future__r   Úimportlib.utilrM   ÚloggingÚtypingr   r   r   r   r   Úlangchain_core._api.deprecationr	   Úlangchain_core.callbacksr
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   r   Úpydanticr   r¬   ÚDEFAULT_TASKrD   r­   Ú	getLoggerr�   rK   r   r=   rd   r]   Ú<module>r¼      s~   ðÝ "ã Û ß 9Õ 9å 6Ý =Ý 7ß IÑ IÝ àÐ Ø €ð€ð Ð à	ˆ×	Ñ	˜8Ó	$€ñ Ø
ØØBôô
Y˜'ó Yóñ
Yrd   