Ë
    µŒj.  ã                   óV  — d dl Z d dlZd dlmZ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mZ d dlmZmZ d dl	mZmZmZ d dlmZmZmZmZmZ d d	lmZ d
Z dZ! ejD                  e#«      Z$ G d„ de«      Z%e › e!› �dfde%de&de&dee   def
d„Z'de%deegef   fd„Z(de%dedefd„Z)y)é    N)ÚAnyÚCallableÚDictÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú
ConfigDictÚ	SecretStr)ÚConnectTimeoutÚReadTimeoutÚRequestException)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponential©Úenforce_stop_tokenszhttps://api-nebula.symbl.aiz/v1/model/generatec                   ó  — e Zd ZU dZ	 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   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	      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 e	ef   fd„«       Z!ede	fd„«       Z"deee	      dedefd„Z#e$ded eee	      de	fd!„«       Z%	 	 d%d"e	d eee	      d#ee&   dede	f
d$„Z'y)&ÚNebulaa)  Nebula Service models.

    To use, you should have the environment variable ``NEBULA_SERVICE_URL``,
    ``NEBULA_SERVICE_PATH`` and ``NEBULA_API_KEY`` set with your Nebula
    Service, or pass it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms import Nebula

            nebula = Nebula(
                nebula_service_url="NEBULA_SERVICE_URL",
                nebula_service_path="NEBULA_SERVICE_PATH",
                nebula_api_key="NEBULA_API_KEY",
            )
    NÚmodel_kwargsÚnebula_service_urlÚnebula_service_pathÚnebula_api_keyÚmodelé€   Úmax_new_tokensg333333ã?Útemperaturegffffffî?Útop_pg      ð?Úrepetition_penaltyé   Útop_kÚstop_sequencesé
   Úmax_retriesÚforbid)ÚextraÚvaluesÚreturnc                 óò   — t        |ddt        «      }t        |ddt        «      }t        t        |ddd«      «      }|j	                  d«      r|dd	 }|j                  d«      sd|z   }||d<   ||d<   ||d<   |S )
z?Validate that api key and python package exists in environment.r   ÚNEBULA_SERVICE_URLr   ÚNEBULA_SERVICE_PATHr   ÚNEBULA_API_KEYNÚ/éÿÿÿÿ)r   ÚDEFAULT_NEBULA_SERVICE_URLÚDEFAULT_NEBULA_SERVICE_PATHr   ÚendswithÚ
startswith)Úclsr-   r   r   r   s        úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/symblai_nebula.pyÚvalidate_environmentzNebula.validate_environmentC   s­   € ô 2ØØ Ø Ü&ó	
Ðô 3ØØ!Ø!Ü'ó	
Ðô /Ü  Ð)9Ð;KÈTÓRó
ˆð ×&Ñ& sÔ+Ø!3°C°RÐ!8ÐØ"×-Ñ-¨cÔ2Ø"%Ð(;Ñ";Ðà'9ˆÐ#Ñ$Ø(;ˆÐ$Ñ%Ø#1ˆÐÑ àˆó    c                 óv   — | j                   | j                  | j                  | j                  | j                  dœS )z2Get the default parameters for calling Cohere API.©r"   r#   r'   r$   r%   r>   ©Úselfs    r:   Ú_default_paramszNebula._default_paramsa   s7   € ð #×1Ñ1Ø×+Ñ+Ø—Z‘ZØ—Z‘ZØ"&×"9Ñ"9ñ
ð 	
r<   c                 ó\   — | j                   xs i }| j                  | j                  dœd|i¥S )zGet the identifying parameters.)r   r   r   )r   r   r   )r@   Ú_model_kwargss     r:   Ú_identifying_paramszNebula._identifying_paramsl   s?   € ð ×)Ñ)Ò/¨Rˆà"&×"9Ñ"9Ø#'×#;Ñ#;ñ
ð ˜}Ð-ð
ð 	
r<   c                  ó   — y)zReturn type of llm.Únebula© r?   s    r:   Ú	_llm_typezNebula._llm_typev   s   € ð r<   Úkwargsc                 óš   — | j                   }| j                  �|�t        d«      ‚| j                  �| j                  |d<   n||d<   i |¥|¥S )Nz2`stop` found in both the input and default params.r(   )rA   r(   Ú
ValueError)r@   r(   rI   Úparamss       r:   Ú_invocation_paramszNebula._invocation_params{   sd   € ð ×%Ñ%ˆØ×ÑÐ*¨~Ð/IÜÐQÓRÐRØ× Ñ Ð,Ø'+×':Ñ':ˆFÐ#Ò$à'5ˆFÐ#Ñ$Ø#�&Ð#˜FÐ#Ð#r<   ÚresponseÚstopc                 ó2   — | d   d   }|rt        ||«      }|S )NÚoutputÚtextr   )rN   rO   rR   s      r:   Ú_process_responsezNebula._process_response‡   s%   € à˜Ñ! &Ñ)ˆÙÜ& t¨TÓ2ˆDØˆr<   ÚpromptÚrun_managerc                 óÜ   —  | j                   |fi |¤Ž}|j                  «       }t        | ||| j                  › | j                  › �¬«      }|j                  d«      }| j                  ||«      S )aa  Call out to Nebula Service 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 = nebula("Tell me a joke.")
        )rT   rL   Úurlr(   )rM   ÚstripÚcompletion_with_retryr   r   ÚgetrS   )r@   rT   rO   rU   rI   rL   rN   Ú_stops           r:   Ú_callzNebula._callŽ   sw   € ð" )�×(Ñ(¨Ñ8°Ñ8ˆØ—‘“ˆä(ØØØØ×*Ñ*Ð+¨D×,DÑ,DÐ+EÐFô	
ˆð —
‘
Ð+Ó,ˆØ×%Ñ% h°Ó6Ð6r<   )NN)(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚdictÚ__annotations__r   Ústrr   r   r   r    r"   Úintr#   Úfloatr$   r%   r'   r(   r   r*   r   Úmodel_configr   r   r;   Úpropertyr   rA   r   rD   rH   rM   ÚstaticmethodrS   r	   r\   rG   r<   r:   r   r      sö  … ñð$ LØ#'€L�(˜4‘.Ó'àà(,Ð˜ ™Ó,Ø)-Ð˜ #™Ó-Ø*.€N�H˜YÑ'Ó.Ø€Eˆ8�C‰=ÓØ$'€N�H˜S‘MÓ'Ø#&€K�˜%‘Ó&Ø!€Eˆ8�E‰?Ó!Ø*-Ð˜ ™Ó-Ø€Eˆ8�C‰=ÓØ*.€N�H˜T #™YÑ'Ó.Ø!#€K�˜#‘Ó#áØô€Lð ð¨$ð °4ò ó ðð: ð
  c¨3 h¡ò 
ó ð
ð ð
 W¨S°#¨XÑ%6ò 
ó ð
ð ð˜3ò ó ðð
$Ø& t¨C¡yÑ1ð
$Ø=@ð
$à	ó
$ð ð Cð ¨x¸¸S¹	Ñ/Bð Àsò ó ðð %)Ø:>ñ	7àð7ð �t˜C‘yÑ!ð7ð Ð6Ñ7ð	7ð
 ð7ð 
ô7r<   r   r@   rT   rW   rL   r.   c                 ó‚  — |xs i }d}| j                   �| j                   j                  «       }d|› dœ}d|i}|j                  «       D ]
  \  }}|||<   Œ t        j                  |||¬«      }	|	j
                  dk7  r%t        d|	j
                  › d|	j                  › �«      ‚t        j                  |	j                  «      S )	zGenerate text from the model.Nzapplication/json)zContent-TypeÚApiKeyrT   )ÚheadersÚjsonéÈ   z Request failed with status code z and message )
r   Úget_secret_valueÚitemsÚrequestsÚpostÚstatus_codeÚ	ExceptionrR   rl   Úloads)
r@   rT   rW   rL   Úapi_keyrk   ÚbodyÚkeyÚvaluerN   s
             r:   Úmake_requestry   ¬   sÎ   € ð Š\�r€FØ€GØ×ÑÐ&Ø×%Ñ%×6Ñ6Ó8ˆà*Ø�Iñ€Gð
 �fÐ€Dð —l‘l–n‰
ˆˆUØˆˆSŠ	ð %ô �}‰}˜S¨'¸Ô=€Hà×Ñ˜sÒ"ÜØ.¨x×/CÑ/CÐ.DØ˜HŸM™M˜?ð,ó
ð 	
ô
 �:‰:�h—m‘mÓ$Ð$r<   Úllmc           
      óð   — d}d}| j                   �| j                   nd}t        dt        |«      t        d||¬«      t	        t
        t        t        f«      t        t        t        j                  «      ¬«      S )Né   r)   é   Tr&   )Ú
multiplierÚminÚmax)ÚreraiserO   Úwaitr   Úbefore_sleep)r*   r   r   r   r   r   r   r   r   ÚloggerÚloggingÚWARNING)rz   Úmin_secondsÚmax_secondsr*   s       r:   Ú_create_retry_decoratorr‰   Î   sd   € Ø€KØ€Kð &)§_¡_Ð%@�#—/’/Àa€KÜØÜ Ó,Ü¨°ÀÔMä#Ô%5´~Ä{Ð$SÓTä%¤f¬g¯o©oÓ>ôð r<   rI   c                 óX   ‡ — t        ‰ «      }|dt        dt        fˆ fd„«       } |di |¤ŽS )z*Use tenacity to retry the completion call.Ú_kwargsr.   c                  ó   •— t        ‰fi | ¤ŽS )N)ry   )r‹   rz   s    €r:   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retryã   s   ø€ ä˜CÑ+ 7Ñ+Ð+r<   rG   )r‰   r   )rz   rI   Úretry_decoratorr�   s   `   r:   rY   rY   ß   s=   ø€ ä-¨cÓ2€Oàð,¬#ð ,´#ô ,ó ð,ñ "Ñ+ FÑ+Ð+r<   )*rl   r…   Útypingr   r   r   r   r   r   rp   Úlangchain_core.callbacksr	   Ú#langchain_core.language_models.llmsr
   Úlangchain_core.utilsr   r   r   Úpydanticr   r   r   r   r   Útenacityr   r   r   r   r   Úlangchain_community.llms.utilsr   r5   r6   Ú	getLoggerr]   r„   r   rc   ry   r‰   rY   rG   r<   r:   Ú<module>r—      sé   ðÛ Û ß ?× ?ã Ý =Ý 3ß VÑ Vß *ß BÑ B÷õ õ ?à:Ð Ø2Ð à	ˆ×	Ñ	˜8Ó	$€ôN7ˆSô N7ðh -Ð-Ð.IÐ-JÐKØ!ñ	%Ø
ð%àð%ð 
ð%ð �T‰Nð	%ð
 	ó%ðD ð ¨H°c°U¸C°ZÑ,@ó ð",˜vð ,°ð ,¸ô ,r<   