§
    æ˜ºhå,  ã                   óÎ   — 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mZ d dlmZmZ d dlmZ  G d„ de	¦  «        Zed	k    r  e¦   «         Z e ed
¦  «        ¦  «         dS dS )é    )ÚAnyÚDictÚListÚOptionalÚSequence)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_env)Úenforce_stop_tokensc                   ó¦  — e Zd ZU dZeed<   dZee         ed<   	 dZ	e
ed<   	 dZeed<   	 d	Ze
ed
<   	 dZeed<   	 dZeed<   	 dZ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<   	 dZee
         ed<   	 dZe
ed<   	 dZeee
ef                  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d<   	 dZ!eed<   dZ"eed<   d Z#e
ed!<   dZ$eed"<   dZ%ee&e                  ed#<   dZ'eed$<   dZ(ee&e                  ed%<   dZ)eed&<   	 dZ*ee         ed'<   	 d(Z+ee         ed)<   	 d(Z,eed*<   	 dZ-eed+<   	 dZ.eee                  ed,<   	 dZ/ee         ed-<   	 d.Z0eed/<   	 dZ1ee         ed0<   	 d1Z2e
ed2<   	 d3Z3e
ed4<   	 dZ4eed5<   	  G d6„ d7¦  «        Z5 e6¦   «         d8ed9efd:„¦   «         Z7e8d9eeef         fd;„¦   «         Z9e8d9eeef         fd<„¦   «         Z:e8d9efd=„¦   «         Z;	 	 dCd>ed?eee                  d@ee<         dAed9ef
dB„Z=dS )DÚ
AlephAlphaam  Aleph Alpha large language models.

    To use, you should have the ``aleph_alpha_client`` python package installed, and the
    environment variable ``ALEPH_ALPHA_API_KEY`` set with your API key, or pass
    it as a named parameter to the constructor.

    Parameters are explained more in depth here:
    https://github.com/Aleph-Alpha/aleph-alpha-client/blob/c14b7dd2b4325c7da0d6a119f6e76385800e097b/aleph_alpha_client/completion.py#L10

    Example:
        .. code-block:: python

            from langchain_community.llms import AlephAlpha
            aleph_alpha = AlephAlpha(aleph_alpha_api_key="my-api-key")
    Úclientzluminous-baseÚmodelé@   Úmaximum_tokensg        Útemperaturer   Útop_kÚtop_pÚpresence_penaltyÚfrequency_penaltyFÚ#repetition_penalties_include_promptÚ#use_multiplicative_presence_penaltyNÚpenalty_biasÚpenalty_exceptionsÚ)penalty_exceptions_include_stop_sequencesÚbest_ofé   ÚnÚ
logit_biasÚ	log_probsÚtokensÚdisable_optimizationsÚminimum_tokensÚechoÚ$use_multiplicative_frequency_penaltyÚsequence_penaltyé   Úsequence_penalty_min_lengthÚ#use_multiplicative_sequence_penaltyÚcompletion_bias_inclusionÚ*completion_bias_inclusion_first_token_onlyÚcompletion_bias_exclusionÚ*completion_bias_exclusion_first_token_onlyÚcontextual_control_thresholdTÚcontrol_log_additiveÚ'repetition_penalties_include_completionÚraw_completionÚstop_sequencesÚaleph_alpha_api_keyzhttps://api.aleph-alpha.comÚhostÚhostingi1  Úrequest_timeout_secondsé   Útotal_retriesÚnicec                   ó    — e Zd ZdZej        ZdS )úAlephAlpha.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úl/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/aleph_alpha.pyÚConfigr>   ¥   s   € € € € € Ø5Ð5à”ˆˆˆrF   rH   ÚvaluesÚreturnc           	      ó&  — t          t          |dd¦  «        ¦  «        |d<   	 ddlm}  ||d                              ¦   «         |d         |d         |d         |d         |d	         ¬
¦  «        |d<   n# t
          $ r t          d¦  «        ‚w xY w|S )z?Validate that api key and python package exists in environment.r6   ÚALEPH_ALPHA_API_KEYr   )ÚClientr7   r8   r9   r;   r<   )Útokenr7   r8   r9   r;   r<   r   zlCould not import aleph_alpha_client python package. Please install it with `pip install aleph_alpha_client`.)r   r   Úaleph_alpha_clientrM   Úget_secret_valueÚImportError)ÚclsrI   rM   s      rG   Úvalidate_environmentzAlephAlpha.validate_environmentª   s×   € õ )>Ý  Ð)>Ð@UÑVÔVñ)
ô )
ˆÐ$Ñ%ð	Ø1Ð1Ð1Ð1Ð1Ð1à%˜vØÐ2Ô3×DÒDÑFÔFØ˜F”^Ø˜yÔ)Ø(.Ð/HÔ(IØ$ _Ô5Ø˜F”^ð ñ  ô  ˆF�8ÑÐøõ ð 	ð 	ð 	ÝðKñô ð ð	øøøð
 ˆs   £AA4 Á4Bc                 óÄ  — i d| j         “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d	| j        “d
| j	        “d| j
        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “| j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        dœ¥S )z;Get the default parameters for calling the Aleph Alpha API.r   r   r   r   r   r   r!   r   r   r   r   r   r   r"   r#   r$   r%   )r&   r'   r(   r)   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   )r   r   r   r   r   r   r!   r   r   r   r   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   ©Úselfs    rG   Ú_default_paramszAlephAlpha._default_paramsÂ   sd  € ð 
Ø˜dÔ1ð 
à˜4Ô+ð 
ð �T”Zð 
ð �T”Zð	 
ð
  Ô 5ð 
ð   Ô!7ð 
ð �”ð 
ð 2°4Ô3[ð 
ð 2°4Ô3[ð 
ð ˜DÔ-ð 
ð ! $Ô"9ð 
ð 8¸Ô9gð 
ð �t”|ð 
ð ˜$œ/ð 
ð ˜œð 
ð  �d”kð! 
ð" $ TÔ%?ð# 
ð$ #Ô1Ø”IØ48Ô4]Ø $Ô 5Ø+/Ô+KØ37Ô3[Ø)-Ô)GØ:>Ô:iØ)-Ô)GØ:>Ô:iØ,0Ô,MØ$(Ô$=Ø7;Ô7cØ"Ô1ð? 
ð  
ð  
ð  	
rF   c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   rW   rU   s    rG   Ú_identifying_paramszAlephAlpha._identifying_paramsç   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@rF   c                 ó   — dS )zReturn type of llm.Úaleph_alpharE   rU   s    rG   Ú	_llm_typezAlephAlpha._llm_typeì   s	   € ð ˆ}rF   ÚpromptÚstopÚrun_managerÚkwargsc                 ól  — ddl m}m} | j        }| j        �|�t          d¦  «        ‚| j        �| j        |d<   n||d<   i |¥|¥} |dd|                     |¦  «        i|¤Ž}| j                             | j	        |¬¦  «        }	|	j
        d         j        }
|€| j        �t          |
|d         ¦  «        }
|
S )	at  Call out to Aleph Alpha's completion 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 = aleph_alpha("Tell me a joke.")
        r   )ÚCompletionRequestÚPromptNz:stop sequences found in both the input and default params.r5   r]   )r   ÚrequestrE   )rO   rb   rc   rW   r5   Ú
ValueErrorÚ	from_textr   Úcompleter   ÚcompletionsÚ
completionr   )rV   r]   r^   r_   r`   rb   rc   Úparamsrd   ÚresponseÚtexts              rG   Ú_callzAlephAlpha._callñ   sý   € ð* 	AÐ@Ð@Ð@Ð@Ð@Ð@Ð@àÔ%ˆØÔÐ*¨tÐ/?ÝØLñô ð ð Ô Ð,Ø'+Ô':ˆFÐ#Ñ$Ð$à'+ˆFÐ#Ñ$Ø%�FÐ%˜fÐ%ˆØ#Ð#ÐNÐN¨6×+;Ò+;¸FÑ+CÔ+CÐNÀvÐNÐNˆØ”;×'Ò'¨d¬jÀ'Ð'ÑJÔJˆØÔ# AÔ&Ô1ˆð Ð˜tÔ2Ð>Ý& t¨VÐ4DÔ-EÑFÔFˆDØˆrF   )NN)>r?   r@   rA   rB   r   Ú__annotations__r   r   Ústrr   Úintr   Úfloatr   r   r   r   r   Úboolr   r   r   r   r   r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r+   r,   r-   r   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r;   r<   rH   r   rS   ÚpropertyrW   rY   r\   r   rm   rE   rF   rG   r   r      sì  € € € € € € ðð ð  €K€K�KØ*€Eˆ8�CŒ=Ð*Ð*Ñ*Øà€N�CÐÐÑØ7à€K�ÐÐÑØQà€Eˆ3€N€N�NØ@à€Eˆ5ÐÐÑØDà!Ð�eÐ!Ð!Ñ!Ø$à"Ð�uÐ"Ð"Ñ"Ø;à:?Ð'¨°$¬Ð?Ð?Ñ?ð ð ;@Ð'¨°$¬Ð?Ð?Ñ?ð6ð #'€L�(˜3”-Ð&Ð&Ñ&Ø*à.2Ð˜  c¤Ô+Ð2Ð2Ñ2ð,ð AEÐ-¨x¸¬~ÐDÐDÑDØBà!€GˆX�cŒ]Ð!Ð!Ñ!ðð €A€s€J€J�JØ;à-1€J�˜˜c 5˜jÔ)Ô*Ð1Ð1Ñ1ØQà#€Iˆx˜Œ}Ð#Ð#Ñ#ØRà"€FˆH�TŒNÐ"Ð"Ñ"Ø&à,1Ð˜8 Dœ>Ð1Ð1Ñ1à$%€N�H˜S”MÐ%Ð%Ñ%Ø2à€Dˆ$ÐÐÑØ,à16Ð(¨$Ð6Ð6Ñ6à!Ð�eÐ!Ð!Ñ!à'(Ð Ð(Ð(Ñ(à05Ð'¨Ð5Ð5Ñ5à9=Ð˜x¨°¬Ô6Ð=Ð=Ñ=à7<Ð.°Ð<Ð<Ñ<à9=Ð˜x¨°¬Ô6Ð=Ð=Ñ=à7<Ð.°Ð<Ð<Ñ<ØJà48Ð  (¨5¤/Ð8Ð8Ñ8ðð
 ,0Ð˜( 4œ.Ð/Ð/Ñ/ðð 59Ð+¨TÐ8Ð8Ñ8ð(ð !€N�DÐ Ð Ñ Ø?à*.€N�H˜T #œYÔ'Ð.Ð.Ñ.Ø ð *.Ð˜ #œÐ-Ð-Ñ-Ø&Ø-€Dˆ#Ð-Ð-Ñ-ð9à!€GˆX�cŒ]Ð!Ð!Ñ!ð4ð $'Ð˜SÐ&Ð&Ñ&ðWð €M�3ÐÐÑðð €Dˆ$ÐÐÑð>ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð. ð"
  c¨3 h¤ð "
ð "
ð "
ñ „Xð"
ðH ðA T¨#¨s¨(¤^ð Að Að Añ „XðAð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	(ð (àð(ð �t˜C”yÔ!ð(ð Ð6Ô7ð	(ð
 ð(ð 
ð(ð (ð (ð (ð (ð (rF   r   Ú__main__zHow are you?N)Útypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   Úlangchain_core.utilsr   r   Úlangchain_community.llms.utilsr   r   r?   ÚaaÚprintrE   rF   rG   ú<module>r}      s  ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là >Ð >Ð >Ð >Ð >Ð >ðNð Nð Nð Nð N�ñ Nô Nð Nðb ˆzÒÐØ	ˆ‰Œ€Bà	€Eˆ"ˆ"ˆ^Ñ
Ô
ÑÔÐÐÐð ÐrF   