Ë
    µŒj‚"  ã                  ó¦   — d dl mZ 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 d dlmZ d dlmZ dZ ej&                  e«      Z G d	„ d
e«      Zy)é    )ÚannotationsN)ÚAnyÚCallableÚIteratorÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)Ú
ConfigDictz mlx-community/quantized-gemma-2bc                  ó.  — e Zd ZU dZeZded<   	 dZded<   	 dZded<   	 dZ	ded	<   	 dZ
d
ed<   	 dZded<   	 dZded<   	  ed¬«      Ze	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zedd„«       Zedd„«       Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy)ÚMLXPipelineaò  MLX Pipeline API.

    To use, you should have the ``mlx-lm`` python package installed.

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

            from langchain_community.llms import MLXPipeline
            pipe = MLXPipeline.from_model_id(
                model_id="mlx-community/quantized-gemma-2b",
                pipeline_kwargs={"max_tokens": 10, "temp": 0.7},
            )
    Example passing model and tokenizer in directly:
        .. code-block:: python

            from langchain_community.llms import MLXPipeline
            from mlx_lm import load
            model_id="mlx-community/quantized-gemma-2b"
            model, tokenizer = load(model_id)
            pipe = MLXPipeline(model=model, tokenizer=tokenizer)
    ÚstrÚmodel_idNr   ÚmodelÚ	tokenizerúOptional[dict]Útokenizer_configúOptional[str]Úadapter_fileFÚboolÚlazyÚpipeline_kwargsÚforbid)Úextrac                ó¸   — 	 ddl m} |xs i }|r |||||¬«      \  }}	n ||||¬«      \  }}	|xs i }
 | d|||	||||
dœ|¤ŽS # t        $ r t        d«      ‚w xY w)z5Construct the pipeline object from model_id and task.r   )ÚloadúTCould not import mlx_lm python package. Please install it with `pip install mlx_lm`.)Úadapter_pathr   )r   )r   r   r   r   r   r   r   © )Úmlx_lmr   ÚImportError)Úclsr   r   r   r   r   Úkwargsr   r   r   Ú_pipeline_kwargss              úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/mlx_pipeline.pyÚfrom_model_idzMLXPipeline.from_model_idR   s¨   € ð	Ý#ð ,Ò1¨rÐÙÙ#ØÐ*¸ÈDô ÑˆE‘9ñ  $ HÐ.>ÀTÔJÑˆE�9à*Ò0¨bÐÙð 	
ØØØØ-Ø%ØØ,ñ	
ð ñ	
ð 		
øô ò 	Üð?óð ð	ús   ‚A ÁAc                óv   — | j                   | j                  | j                  | j                  | j                  dœS )zGet the identifying parameters.©r   r   r   r   r   r*   ©Úselfs    r'   Ú_identifying_paramszMLXPipeline._identifying_paramsz   s7   € ð Ÿ™Ø $× 5Ñ 5Ø ×-Ñ-Ø—I‘IØ#×3Ñ3ñ
ð 	
ó    c                 ó   — y)NÚmlx_pipeliner!   r+   s    r'   Ú	_llm_typezMLXPipeline._llm_type…   s   € àr.   c           
     óF  — 	 ddl m} ddlm}m} |j                  d| j                  «      xs i }|j                  dd«      }	|j                  dd	«      }
|j                  d
d«      }|j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd«      }|j                  dd«      }|j                  dd«      } ||	|||«      } |d ||«      } || j                  | j                  ||
||||¬«      S # t
        $ r t        d«      ‚w xY w)Nr   )Úgenerate©Úmake_logits_processorsÚmake_samplerr   r   Útempç        Ú
max_tokenséd   ÚverboseFÚ	formatterÚrepetition_penaltyÚrepetition_context_sizeÚtop_pç      ð?Úmin_pÚmin_tokens_to_keepé   )r   r   Úpromptr9   r;   r<   ÚsamplerÚlogits_processors)
r"   r3   Úmlx_lm.sample_utilsr5   r6   r#   Úgetr   r   r   )r,   rD   ÚstopÚrun_managerr%   r3   r5   r6   r   r7   r9   r;   r<   r=   r>   r?   rA   rB   rE   rF   s                       r'   Ú_callzMLXPipeline._call‰   sT  € ð	Ý'ßPð !Ÿ*™*Ð%6¸×8LÑ8LÓMÒSÐQSˆà%×)Ñ)¨&°#Ó6ˆØ)×-Ñ-¨l¸CÓ@ˆ
Ø'×+Ñ+¨I°uÓ=ˆØ(7×(;Ñ(;¸KÈÓ(Nˆ	Ø.=×.AÑ.AØ  $ó/
Ðð 2A×1DÑ1DØ% tó2
Ðð '×*Ñ*¨7°CÓ8ˆØ&×*Ñ*¨7°CÓ8ˆØ"1×"5Ñ"5Ð6JÈAÓ"NÐá˜t U¨EÐ3EÓFˆÙ2ØÐ$Ð&=ó
Ðñ Ø—*‘*Ø—n‘nØØ!ØØØØ/ô	
ð 		
øô7 ò 	Üð?óð ð	ús   ‚D ÄD c              +  óî  K  — 	 dd l m} ddlm}m} ddlm} |j                  d| j                  «      xs i }	|	j                  dd«      }
|	j                  dd	«      }|	j                  d
d «      }|	j                  dd «      }|	j                  dd«      }|	j                  dd«      }|	j                  dd«      }| j                  j                  |d¬«      }|j                  |d   «      }| j                  j                  }| j                  j                  }|j                  «         ||
xs d|||«      } |d ||«      }t!         ||| j"                  ||¬«      t%        |«      «      D ]t  \  \  }}}d }|j'                  |«       |j)                  «        |j*                  }|r-t-        |¬«      }|r|j/                  |j0                  «       |–— ||k(  s|€Œo||v sŒt y  y # t        $ r t        d«      ‚w xY w­w)Nr   r4   )Úgenerate_stepr   r   r7   r8   r9   r:   r=   r>   r?   r@   rA   rB   rC   Únp)Úreturn_tensors)rD   r   rE   rF   )Útext)Úmlx.coreÚcorerG   r5   r6   Úmlx_lm.utilsrM   r#   rH   r   r   ÚencodeÚarrayÚeos_token_idÚdetokenizerÚresetÚzipr   ÚrangeÚ	add_tokenÚfinalizeÚlast_segmentr   Úon_llm_new_tokenrP   )r,   rD   rI   rJ   r%   Úmxr5   r6   rM   r   r7   Úmax_new_tokensr=   r>   r?   rA   rB   Úprompt_tokensrV   rW   rE   rF   ÚtokenÚprobÚnrP   Úchunks                              r'   Ú_streamzMLXPipeline._streamº   s
  è ø€ ð		Ý!ßPÝ2ð !Ÿ*™*Ð%6¸×8LÑ8LÓMÒSÐQSˆà%×)Ñ)¨&°#Ó6ˆØ-×1Ñ1°,ÀÓDˆØ.=×.AÑ.AØ  $ó/
Ðð 2A×1DÑ1DØ% tó2
Ðð '×*Ñ*¨7°CÓ8ˆØ&×*Ñ*¨7°CÓ8ˆØ"1×"5Ñ"5Ð6JÈAÓ"NÐà—‘×&Ñ& v¸dÐ&ÓCˆàŸ™ ¨¡Ó+ˆà—~‘~×2Ñ2ˆØ—n‘n×0Ñ0ˆØ×ÑÔá˜tš{ s¨E°5Ð:LÓMˆá2ØÐ$Ð&=ó
Ðô !$ÙØ$Ø—j‘jØØ"3ô	ô �.Ó!ö!
Ñ‰MˆU�D˜1ð #'ˆDØ×!Ñ! %Ô(Ø× Ñ Ô"Ø×+Ñ+ˆDñ Ü'¨TÔ2�ÙØ×0Ñ0°·±Ô<Ø’ð ˜Ò$¨Ñ)9¸dÀdºlÙñ1!
øôE ò 	Üð?óð ð	üs(   ‚G5„G ˜F;G5ÇG5ÇG5ÇG2Ç2G5)NNFN)r   r   r   r   r   r   r   r   r   r   r%   r   Úreturnr   )rg   zMapping[str, Any])rg   r   )NN)
rD   r   rI   úOptional[List[str]]rJ   ú"Optional[CallbackManagerForLLMRun]r%   r   rg   r   )
rD   r   rI   rh   rJ   ri   r%   r   rg   zIterator[GenerationChunk])Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDEFAULT_MODEL_IDr   Ú__annotations__r   r   r   r   r   r   r   Úmodel_configÚclassmethodr(   Úpropertyr-   r1   rK   rf   r!   r.   r'   r   r      s’  … ñð, %€HˆcÓ$ØØ€Eˆ3ÓØØ€IˆsÓØØ'+Ð�nÓ+ðð #'€L�-Ó&ðð €Dˆ$Óðð
 '+€O�^Ó*ðñ  Øô€Lð ð ,0Ø&*ØØ*.ð%
àð%
ð )ð%
ð $ð	%
ð
 ð%
ð (ð%
ð ð%
ð 
ò%
ó ð%
ðN ò
ó ð
ð òó ðð %)Ø:>ð	/
àð/
ð "ð/
ð 8ð	/
ð
 ð/
ð 
ó/
ðh %)Ø:>ð	FàðFð "ðFð 8ð	Fð
 ðFð 
#ôFr.   r   )Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   Úlangchain_core.callbacksr
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úpydanticr   rn   Ú	getLoggerrj   Úloggerr   r!   r.   r'   Ú<module>r|      sC   ðÝ "ã ß C× Cå =Ý 3Ý 2Ý à5Ð à	ˆ×	Ñ	˜8Ó	$€ôp�#õ pr.   