
    dh                         S SK JrJrJrJrJrJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJrJrJr  S SKJrJr   " S S\
5      rg	)
    )AnyDictListOptionalUnioncast)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_env)
ConfigDict	SecretStrmodel_validator)ArceeWrapper
DALMFilterc                   b  ^  \ rS rSr% SrSr\\   \S'    Sr	\
\\S4   \S'    \\S'    Sr\\S'    S	r\\S
'    Sr\\S'    Sr\\S'    Sr\\\\4      \S'    \" SS9r\S\4S j5       rS\SS4U 4S jjr\" SS9\S\S\4S j5       5       r  S S\S\\\      S\\   S\S\4
S jjrSrU =r $ )!Arcee   a  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                     g)zReturn type of llm.arcee )selfs    V/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/arcee.py	_llm_typeArcee._llm_type:   s         datac                    > [         TU ]  " S0 UD6  [        [        U R                  5      n[        UU R                  U R                  U R                  U R                  S9U l
        g)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.   Arcee.__init__?   sX     	 4 y$"4"45#!,,"44**zz
r)   before)modevaluesc                    [        [        USS5      5      US'   [        USS5      US'   [        USS5      US'   [        USS5      US'   UR                  S	5      (       a  US	   nUR                  S
5      b   UR                  S
5      S:  d  [        S5      eUR                  S5      bR  [	        UR                  S5      [
        5      (       d  [        S5      eUR                  S5       H  n[        S0 UD6  M     U$ )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   )clsr4   kwfs       r&   validate_environmentsArcee.validate_environmentsL   s    #8 #
 #7#
 #7#
 ';'
"# ::n%%'B vvf~)vvf~*$%>?? vvi ,!"&&"3T::$%?@@	*AOO +r)   promptstoprun_managerkwargsc                      U R                   (       d  [        S5      eU R                   R                  " SSU0UD6$ ! [         a  n[        SU 35      UeSnAff = f)zGenerate 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.rD   zFailed to generate text: Nr$   )r   r=   generate	Exception)r%   rD   rE   rF   rG   es         r&   _callArcee._call}   s_     	D<< !=>><<((AA&AA 	D7s;<!C	Ds   9< 
AAA)r   )NN)!__name__
__module____qualname____firstlineno____doc__r   r   r   __annotations__r   r   r   strr   r   r   r   r   r   r   r   model_configpropertyr'   r.   r   classmethodrB   r   r	   rL   __static_attributes____classcell__)r0   s   @r&   r   r      sO   $ '+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 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>r`      s-    9 9 = 3 L ; ; HGDC GDr)   