
    Ng                         d dl mZ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mZ d dlmZmZ  G d de
          Zd	S )
    )AnyDictListOptionalUnioncast)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_env)
ConfigDict	SecretStrmodel_validator)ArceeWrapper
DALMFilterc                       e Zd ZU dZdZee         ed<   	 dZe	e
edf         ed<   	 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f                  ed<   	  ed          Zedefd            Zdeddf fdZ ed          ededefd                        Z	 	 ddedeee                  dee         dedef
dZ xZS )Arceea  Arcee's Domain Adapted Language Models (DALMs).

    To use, set the ``ARCEE_API_KEY`` environment variable with your Arcee API key,
    or pass ``arcee_api_key`` as a named parameter.

    Example:
        .. code-block:: python

            from langchain_community.llms import Arcee

            arcee = Arcee(
                model="DALM-PubMed",
                arcee_api_key="ARCEE-API-KEY"
            )

            response = arcee("AI-driven music therapy")
    N_clientarcee_api_keymodelzhttps://api.arcee.aiarcee_api_urlv2arcee_api_versionzhttps://app.arcee.aiarcee_app_url model_idmodel_kwargsforbid)extrareturnc                     dS )zReturn type of llm.arcee )selfs    Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/arcee.py	_llm_typezArcee._llm_type:   s	     w    datac                      t                      j        di | t          t          | j                  }t          || j        | j        | j        | j	                  | _
        dS )zInitializes private fields.)r   r   r   r   
model_nameNr#   )super__init__r   r   r   r   r   r   r   r   r   )r$   r(   api_key	__class__s      r%   r,   zArcee.__init__?   sh     	  4   y$"455#!,"4*z
 
 
r'   before)modevaluesc                 T   t          t          |dd                    |d<   t          |dd          |d<   t          |dd          |d<   t          |dd          |d<   |                    d	          r|d	         }|                    d
          (|                    d
          dk    st          d          |                    d          [t	          |                    d          t
                    st          d          |                    d          D ]}t          di | |S )z%Validate Arcee environment variables.r   ARCEE_API_KEYr   ARCEE_API_URLr   ARCEE_APP_URLr   ARCEE_API_VERSIONr   sizeNr   z`size` must be positivefiltersz`filters` must be a listr#   )r   r   get
ValueError
isinstancer   r   )clsr1   kwfs       r%   validate_environmentszArcee.validate_environmentsL   sU    #8  #
 #
 #7#
 #
 #7#
 #
 ';'
 '
"# ::n%% 	$'B vvf~~)vvf~~**$%>??? vvi  ,!"&&"3"3T:: A$%?@@@	** $ $AOOOOOOr'   promptstoprun_managerkwargsc                     	 | j         st          d           | j         j        dd|i|S # t          $ r}t          d|           |d}~ww xY w)a)  Generate text from Arcee DALM.

        Args:
            prompt: Prompt to generate text from.
            size: The max number of context results to retrieve.
            Defaults to 3. (Can be less if filters are provided).
            filters: Filters to apply to the context dataset.
        zClient is not initialized.r@   zFailed to generate text: Nr#   )r   r:   generate	Exception)r$   r@   rA   rB   rC   es         r%   _callzArcee._call}   s}     	D< ? !=>>>(4<(AAA&AAA 	D 	D 	D;;;<<!C	Ds   ), 
AA		A)NN)__name__
__module____qualname____doc__r   r   r   __annotations__r   r   r   strr   r   r   r   r   r   r   r   model_configpropertyr&   r,   r   classmethodr?   r   r	   rH   __classcell__)r.   s   @r%   r   r      s         $ '+GXl#***15M5C-.555JJJ/M3///!s!!!/M3///Hc-1L(4S>*1111:  L 3    X
s 
t 
 
 
 
 
 
 _(###-4 -C - - - [ $#-d %):>	D DD tCy!D 67	D
 D 
D D D D D D D Dr'   r   N)typingr   r   r   r   r   r   langchain_core.callbacksr	   #langchain_core.language_models.llmsr
   langchain_core.utilsr   r   pydanticr   r   r   #langchain_community.utilities.arceer   r   r   r#   r'   r%   <module>rY      s    9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 = = = = = = 3 3 3 3 3 3 L L L L L L L L ; ; ; ; ; ; ; ; ; ; H H H H H H H HGD GD GD GD GDC GD GD GD GD GDr'   