
    7|h                         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y	)
    )AnyDictListOptionalUnioncast)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_env)
ConfigDict	SecretStrmodel_validator)ArceeWrapper
DALMFilterc                   Z    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                      y)zReturn type of llm.arcee )selfs    ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/arcee.py	_llm_typezArcee._llm_type:   s         datac                     t        |   di | t        t        | j                        }t        || j                  | j                  | j                  | j                        | _
        y)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__?   sX     	 4 y$"4"45#!,,"44**zz
r'   before)modevaluesc                    t        t        |dd            |d<   t        |dd      |d<   t        |dd      |d<   t        |dd      |d<   |j                  d	      r|d	   }|j                  d
      |j                  d
      dk\  st        d      |j                  d      Kt	        |j                  d      t
              st        d      |j                  d      D ]  }t        di |  |S )z%Validate Arcee environment variables.r   ARCEE_API_KEYr   ARCEE_API_URLr   ARCEE_APP_URLr   ARCEE_API_VERSIONr   sizer   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   s    #8 #
 #7#
 #7#
 ';'
"# ::n%'B vvf~)vvf~*$%>?? vvi ,!"&&"3T:$%?@@	* $AOO$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}   sa     	D<< !=>>(4<<((AA&AA 	D7s;<!C	Ds   47 	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      sI   $ '+GXl#*15M5C-.5J/M3/!s!/M3/Hc-1L(4S>*11L 3  
s 
t 
 (#-4 -C -  $-d %):>	DD tCy!D 67	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 = 3 L ; ; HGDC GDr'   