
    7|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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j/                  d
             yy)    )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@y)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   j	                         |d   |d   |d   |d   |d	   
      |d<   |S # t
        $ r t        d      w xY w)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      c/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/aleph_alpha.pyvalidate_environmentzAlephAlpha.validate_environment   s     )> )>@UV)
$%	1%23DDFF^y)(./H(I$_5F^ F8   	K 	s   7A A)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.                  | j0                  | j2                  | j4                  | j6                  | j8                  | 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   s    
d11 
4++ 
 TZZ 
 TZZ	 

  5 5 
  !7!7 
  
 243[3[ 
 243[3[ 
 D-- 
 !$"9"9 
 89g9g 
 t|| 
 $// 
  
  dkk! 
" $T%?%?# 
$ #11II484]4] $ 5 5+/+K+K373[3[)-)G)G:>:i:i)-)G)G:>:i:i,0,M,M$($=$=7;7c7c"1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7DJJ'@4+?+?@@rP   c                      y)zReturn type of llm.aleph_alpha rM   s    rJ   	_llm_typezAlephAlpha._llm_type   s     rP   promptstoprun_managerkwargsc                    ddl m}m} | j                  }| j                  |t        d      | j                  | j                  |d<   n||d<   i ||} |dd|j                  |      i|}| j                  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Promptz: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%#N6+;+;F+CNvN;;''djj''J##A&11 t22>&tV4D-E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E3N@E5D!e!$"u";:?'$?  ;@'$?6 #'L(3-&*.2c+2, AE-x~DB!GXc]! AsJ;-1Jc5j)*1Q#Ix}#R"FHTN"&,18D>1$%NHSM%2D$,16($6!e!'((05'59=x6=7<.<9=x6=7<.<J48 (5/8
 ,0(4./ 59+T8( !ND ?*.NHT#Y'.  04),3&-D#-9!GXc]!4 $'S&W M3 D$> L $ 4  . "
c3h "
 "
H AT#s(^ A A 3   %):>	(( 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}      sS    6 6 = 3 V V * >M M` z	B	"))N
#$ rP   