Ë
    µŒjÉ  ã                   ó´   — d dl mZmZmZmZmZ d dlZd dl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Zd	Zd
Zdj+                  eede¬«      Z G d„ de
«      Zy)é    )ÚAnyÚDictÚListÚMappingÚOptionalN)ÚCallbackManagerForLLMRun)ÚLLM)Úget_from_dict_or_envÚpre_init)Ú
ConfigDict)Úenforce_stop_tokensz### Instruction:z### Response:ziBelow is an instruction that describes a task. Write a response that appropriately completes the request.z7{intro}
{instruction_key}
{instruction}
{response_key}
z{instruction})ÚintroÚinstruction_keyÚinstructionÚresponse_keyc                   ó  — e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
e   ed<   	 dZeed	<   	 dZe
e   ed
<    ed¬«      Zededefd„«       Zedeeef   fd„«       Zedefd„«       Zdedefd„Z	 	 	 ddede
ee      de
e   dededefd„Zy)ÚMosaicMLa2  MosaicML LLM service.

    To use, you should have the
    environment variable ``MOSAICML_API_TOKEN`` set with your API token, or pass
    it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms import MosaicML
            endpoint_url = (
                "https://models.hosted-on.mosaicml.hosting/mpt-7b-instruct/v1/predict"
            )
            mosaic_llm = MosaicML(
                endpoint_url=endpoint_url,
                mosaicml_api_token="my-api-key"
            )
    zDhttps://models.hosted-on.mosaicml.hosting/mpt-7b-instruct/v1/predictÚendpoint_urlFÚinject_instruction_formatNÚmodel_kwargsg      ð?Úretry_sleepÚmosaicml_api_tokenÚforbid)ÚextraÚvaluesÚreturnc                 ó*   — t        |dd«      }||d<   |S )z?Validate that api key and python package exists in environment.r   ÚMOSAICML_API_TOKEN)r
   )Úclsr   r   s      úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/mosaicml.pyÚvalidate_environmentzMosaicML.validate_environmentB   s*   € ô 2ØÐ(Ð*>ó
Ðð (:ˆÐ#Ñ$Øˆó    c                 óJ   — | j                   xs i }i d| j                  i¥d|i¥S )zGet the identifying parameters.r   r   )r   r   )ÚselfÚ_model_kwargss     r    Ú_identifying_paramszMosaicML._identifying_paramsK   s>   € ð ×)Ñ)Ò/¨Rˆð
Ø˜t×0Ñ0Ð1ð
à˜}Ð-ð
ð 	
r"   c                  ó   — y)zReturn type of llm.Úmosaic© )r$   s    r    Ú	_llm_typezMosaicML._llm_typeT   s   € ð r"   Úpromptc                 óJ   — | j                   rt        j                  |¬«      }|S )zTransform prompt.)r   )r   ÚPROMPT_FOR_GENERATION_FORMATÚformat)r$   r+   s     r    Ú_transform_promptzMosaicML._transform_promptY   s*   € à×)Ò)Ü1×8Ñ8Ø"ð 9ó ˆFð ˆr"   ÚstopÚrun_managerÚis_retryÚkwargsc                 óò  — | j                   xs i }| j                  |«      }d|gi}|j                  |«       |j                  |«       | j                  › ddœ}	 t	        j
                  | j                  ||¬«      }		 |	j                  dk(  rN|s4ddl}|j                  | j                  «       | j                  |||d	¬
«      S t        d|	j                  › �«      ‚|	j!                  «       }t#        |t$        «      rOg d¢}|D ]  }||v sŒ||   } n! t        ddj'                  |«      › d|› �«      ‚t#        |t(        «      r|d   }n|}nt        d|› �«      ‚|j+                  |«      r|t-        |«      d }|�t1        ||«      }|S # t        j                  j                  $ r}
t        d|
› �«      ‚d}
~
ww xY w# t        j                  j.                  $ r }
t        d|
› d|	j                  › �«      ‚d}
~
ww xY w)az  Call out to a MosaicML LLM inference endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = mosaic_llm.invoke("Tell me a joke.")
        Úinputszapplication/json)ÚAuthorizationzContent-Type)ÚheadersÚjsonz$Error raised by inference endpoint: Ni­  r   T)r2   z>Error raised by inference API: rate limit exceeded.
Response: )ÚdataÚoutputÚoutputszNo valid key (z, z) in response: zUnexpected response type: zError raised by inference API: z.
Response: )r   r/   Úupdater   ÚrequestsÚpostr   Ú
exceptionsÚRequestExceptionÚ
ValueErrorÚstatus_codeÚtimeÚsleepr   Ú_callÚtextr8   Ú
isinstanceÚdictÚjoinÚlistÚ
startswithÚlenÚJSONDecodeErrorr   )r$   r+   r0   r1   r2   r3   r%   Úpayloadr7   ÚresponseÚerC   Úparsed_responseÚoutput_keysÚkeyÚoutput_itemrF   s                    r    rE   zMosaicML._calla   s$  € ð, ×)Ñ)Ò/¨Rˆà×'Ñ'¨Ó/ˆà˜f˜XÐ&ˆØ�‰�}Ô%Ø�‰�vÔð !%× 7Ñ 7Ð8Ø.ñ
ˆð	IÜ—}‘} T×%6Ñ%6ÀÈgÔVˆHð+	Ø×#Ñ# sÒ*ÙÛà—J‘J˜t×/Ñ/Ô0àŸ:™: f¨d°KÈ$˜:ÓOÐOä ØUØ—}‘}�oð'óð ð
 'Ÿm™m›oˆOô ˜/¬4Ô0Ú;�Û&�CØ˜oÒ-Ø&5°cÑ&:˜Ùð 'ô
 %Ø(¨¯©°;Ó)?Ð(@ð AØ+Ð,ð.óð ô ˜k¬4Ô0Ø& q™>‘Dà&‘Dä Ð#=¸oÐ=NÐ!OÓPÐPð �‰˜vÔ&ØœC ›K˜MÐ*�ð ÐÜ& t¨TÓ2ˆDØˆøôg ×"Ñ"×3Ñ3ò 	IÜÐCÀAÀ3ÐGÓHÐHûð	IûôV ×"Ñ"×2Ñ2ò 	ÜØ1°!°°MÀ(Ç-Á-ÀÐQóð ûð	ús?   Á"F Á=AF9 ÃAF9 ÄA.F9 ÆF6Æ#F1Æ1F6Æ9G6ÇG1Ç1G6)NNF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   Úboolr   r   rH   r   Úfloatr   r   Úmodel_configr   r   r!   Úpropertyr   r   r&   r*   r/   r   r   rE   r)   r"   r    r   r      s:  … ñð( 	Oð �#ó ð Ø&+Ð˜tÓ+ØCØ#'€L�(˜4‘.Ó'Ø1Ø€K�ÓØEà(,Ð˜ ™Ó,áØô€Lð ð¨$ð °4ò ó ðð ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ðð¨ð °ó ð %)Ø:>ØñZàðZð �t˜C‘yÑ!ðZð Ð6Ñ7ð	Zð
 ðZð ðZð 
ôZr"   r   )Útypingr   r   r   r   r   r=   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.utilsr
   r   Úpydanticr   Úlangchain_community.llms.utilsr   ÚINSTRUCTION_KEYÚRESPONSE_KEYÚINTRO_BLURBr.   r-   r   r)   r"   r    Ú<module>rh      sg   ðß 5Õ 5ã Ý =Ý 3ß ?Ý å >à$€Ø€ðAð ð ÷ �FØ
Ø#ØØð	 ó ð	 ô^ˆsõ ^r"   