Ë
    µŒjå  ã                   ó®   — d dl Z 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 d dlmZmZmZ d dlmZ  e j(                  e«      Z G d„ d	e«      Zy)
é    N)ÚAnyÚDictÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)Ú
get_fields)Ú
ConfigDictÚFieldÚmodel_validator)Úenforce_stop_tokensc                   ó  — e Zd ZU dZdZeed<   	  ee¬«      Z	e
eef   ed<   	  ed¬«      Z ed¬	«      ed
e
eef   defd„«       «       Zedeeef   fd„«       Zedefd„«       Z	 	 ddedeee      dee   dedef
d„Zy)ÚModala|  Modal large language models.

    To use, you should have the ``modal-client`` python package installed.

    Any parameters that are valid to be passed to the call can be passed
    in, even if not explicitly saved on this class.

    Example:
        .. code-block:: python

            from langchain_community.llms import Modal
            modal = Modal(endpoint_url="")

    Ú Úendpoint_url)Údefault_factoryÚmodel_kwargsÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 óL  — t        | «      j                  «       D �ch c]  }|j                  ’Œ }}|j                  di «      }t	        |«      D ]I  }||vsŒ||v rt        d|› d�«      ‚t        j                  |› d|› d�«       |j                  |«      ||<   ŒK ||d<   |S c c}w )z>Build extra kwargs from additional params that were passed in.r   zFound z supplied twice.zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.)	r
   r   ÚaliasÚgetÚlistÚ
ValueErrorÚloggerÚwarningÚpop)Úclsr   ÚfieldÚall_required_field_namesr   Ú
field_names         úh/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/modal.pyÚbuild_extrazModal.build_extra*   sÁ   € ô >HÈ»_×=SÑ=SÔ=UÓ#VÑ=U°E E§K£KÐ=UÐ Ð#Và—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØÐ!9Ò9Ø Ñ&Ü$ v¨j¨\Ð9IÐ%JÓKÐKÜ—‘Ø#˜ð %)Ø)3¨Ð4JðNôð %+§J¡J¨zÓ$:��jÒ!ð 'ð "'ˆˆ~ÑØˆùò $Ws   œB!c                 ó>   — i d| j                   i¥d| j                  i¥S )zGet the identifying parameters.r   r   )r   r   ©Úselfs    r'   Ú_identifying_paramszModal._identifying_params=   s2   € ð
Ø˜t×0Ñ0Ð1ð
à˜t×0Ñ0Ð1ð
ð 	
ó    c                  ó   — y)zReturn type of llm.Úmodal© r*   s    r'   Ú	_llm_typezModal._llm_typeE   s   € ð r-   NÚpromptÚstopÚrun_managerÚkwargsc                 ó$  — | j                   xs i }i |¥|¥}t        j                  | j                  ddid|i|¥¬«      }	 ||j	                  «       d   v r|j	                  «       }d   }|�t        ||«      }|S # t
        $ r t        d«      ‚w xY w)zCall to Modal endpoint.zContent-Typezapplication/jsonr2   )ÚurlÚheadersÚjsonz,LangChain requires 'prompt' key in response.)r   ÚrequestsÚpostr   r9   ÚKeyErrorr   )	r+   r2   r3   r4   r5   ÚparamsÚresponseÚresponse_jsonÚtexts	            r'   Ú_callzModal._callJ   s¼   € ð ×"Ñ"Ò( bˆØ%�FÐ%˜fÐ%ˆÜ—=‘=Ø×!Ñ!àÐ 2ðð ˜FÐ- fÐ-ô
ˆð	KØ˜Ÿ™›¨Ñ2Ñ2Ø (§¡£�ð ˜XÑ&ˆØÐô ' t¨TÓ2ˆDØˆøô ò 	KÜÐIÓJÐJð	Kús   Á %A: Á:B)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   Údictr   r   r   r   Úmodel_configr   Úclassmethodr(   Úpropertyr   r,   r1   r   r   r   rA   r0   r-   r'   r   r      s  … ñð €L�#ÓØá#(¸Ô#>€L�$�s˜C�x‘.Ó>ðñ Øô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðð" ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ðð %)Ø:>ñ	àðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
ôr-   r   )ÚloggingÚtypingr   r   r   r   r   r:   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.utils.pydanticr
   Úpydanticr   r   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrB   r    r   r0   r-   r'   Ú<module>rT      sC   ðÛ ß 5Õ 5ã Ý =Ý 3Ý 4ß 7Ñ 7å >à	ˆ×	Ñ	˜8Ó	$€ôVˆCõ Vr-   