
    Ng,                         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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)convert_to_secret_strget_from_dict_or_envpre_init)
ConfigDict	SecretStr)enforce_stop_tokensc                      e Zd ZU dZ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Z0ee1         ed-<   	 d.Z2e	ed/<   	 dZ3ee	         ed0<   	 d1Z4eed2<   	 d3Z5eed4<   	 dZ6eed5<   	  e7d67          Z8e9d8ed9efd:            Z:e;d9ee	ef         fd;            Z<e;d9ee	ef         fd<            Z=e;d9e	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")
    Nclientzluminous-basemodel@   maximum_tokensg        temperaturer   top_ktop_ppresence_penaltyfrequency_penaltyF#repetition_penalties_include_prompt#use_multiplicative_presence_penalty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niceforbid)extra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.r7   ALEPH_ALPHA_API_KEYr   )Clientr8   r9   r:   r<   r=   )tokenr8   r9   r:   r<   r=   r   zlCould not import aleph_alpha_client python package. Please install it with `pip install aleph_alpha_client`.)r
   r   aleph_alpha_clientrD   get_secret_valueImportError)clsr@   rD   s      `/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/aleph_alpha.py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^     F8  	 	 	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/   r0   r1   r2   r3   r4   r5   )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   r5   selfs    rJ   _default_paramszAlephAlpha._default_params   sd    
d1 
4+ 
 TZ 
 TZ	 

  5 
  !7 
  
 243[ 
 243[ 
 D- 
 !$"9 
 89g 
 t| 
 $/ 
  
  dk! 
" $T%?# 
$ #1I484] $ 5+/+K373[)-)G:>:i)-)G:>:i,0,M$($=7;7c"1? 
  
  
  	
    c                 &    i d| j         i| j        S )zGet the identifying parameters.r   )r   rO   rM   s    rJ   _identifying_paramszAlephAlpha._identifying_params   s     A7DJ'@4+?@@rP   c                     dS )zReturn type of llm.aleph_alpha rM   s    rJ   	_llm_typezAlephAlpha._llm_type   s	     }rP   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.r6   rW   )r   requestrU   )rF   r\   r]   rO   r6   
ValueError	from_textr   completer   completions
completionr   )rN   rW   rX   rY   rZ   r\   r]   paramsr^   responsetexts              rJ   _callzAlephAlpha._call   s    * 	A@@@@@@@%*t/?L    ,'+':F#$$'+F#$%F%f%##NN6+;+;F+C+CNvNN;''dj''JJ#A&1 t2>&tV4D-EFFDrP   )NN)A__name__
__module____qualname____doc__r   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/   r0   r1   r2   r3   r4   r5   r6   r7   r   r8   r9   r:   r<   r=   r   model_configr   rK   propertyrO   rR   rV   r   rg   rU   rP   rJ   r   r      s           FC*E8C=***NC7KQE3NNN@E5D!e!!!$"u""";:?'$???  ;@'$???6 #'L(3-&&&*.2c+222, AE-x~DDDB!GXc]!!! AsJJJ;-1Jc5j)*111Q#Ix}###R"FHTN"""&,18D>111$%NHSM%%%2D$,16($666!e!!!'((((05'5559=x6===7<.<<<9=x6===7<.<<<J48 (5/888
 ,0(4./// 59+T888( !ND   ?*.NHT#Y'...  04),333&-D#---9!GXc]!!!4 $'S&&&W M3 D$> :  L $ 4    X. "
c3h "
 "
 "
 X"
H AT#s(^ A A A XA 3    X %):>	( (( tCy!( 67	(
 ( 
( ( ( ( ( (rP   r   __main__zHow are you?N)typingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   langchain_community.llms.utilsr   r   rh   aaprintinvokerU   rP   rJ   <module>r}      s   6 6 6 6 6 6 6 6 6 6 6 6 6 6 = = = = = = 3 3 3 3 3 3 V V V V V V V V V V * * * * * * * * > > > > > >M M M M M M M M` z	B	E"))N
#
#$$$$$ rP   