
    dhY                         S SK JrJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJrJr  S SKJrJr   " S S	\
5      rg
)    )AnyDictListOptional)CallbackManagerForRetrieverRun)Document)BaseRetriever)convert_to_secret_strget_from_dict_or_envpre_init)
ConfigDict	SecretStr)ArceeWrapper
DALMFilterc            	          ^  \ rS rSr% SrSr\\   \S'    \	\S'    \
\S'    Sr\
\S'    S	r\
\S
'    Sr\
\S'    Sr\\\
\4      \S'    \" SS9rS\SS4U 4S jjr\S\S\4S j5       rS\
S\S\S\\   4S jrSrU =r$ )ArceeRetriever   a  Arcee Domain Adapted Language Models (DALMs) retriever.

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.retrievers import ArceeRetriever

        retriever = ArceeRetriever(
            model="DALM-PubMed",
            arcee_api_key="ARCEE-API-KEY"
        )

        documents = retriever.invoke("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_kwargsforbid)extradatareturnc                    > [         TU ]  " S0 UD6  [        U R                  R	                  5       U R
                  U R                  U R                  U R                  S9U l	        U R                  R                  5         g)zInitializes private fields.)r   r   r   r   
model_nameN )super__init__r   r   get_secret_valuer   r   r   r   r   validate_model_training_status)selfr   	__class__s     \/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/retrievers/arcee.pyr$   ArceeRetriever.__init__8   sg     	 4 #,,==?,,"44**zz
 	335    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S	   (       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 not be negative.filtersz`filters` must be a list.r"   )r
   r   get
ValueError
isinstancer   r   )clsr,   kwfs       r)   validate_environments$ArceeRetriever.validate_environmentsG   s	   
 #8 #
 #7#
 #7#
 ';'
"# .!'B vvf~)vvf~*$%CDD vvi ,!"&&"3T::$%@AA	*AOO + r+   query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)a  Retrieve {size} contexts with your retriever for a given query

Args:
    query: Query to submit to the model
    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"Error while retrieving documents: Nr"   )r   r5   retrieve	Exception)r'   r<   r=   r>   es        r)   _get_relevant_documents&ArceeRetriever._get_relevant_documentsx   s_    	N<< !=>><<((?u??? 	NA!EFAM	Ns   9< 
AAA)r   )__name__
__module____qualname____firstlineno____doc__r   r   r   __annotations__r   strr   r   r   r   r   r   r   model_configr$   r   r:   r   r   r   rC   __static_attributes____classcell__)r(   s   @r)   r   r      s    $ '+GXl#*J/M3/!s!/M3/-1L(4S>*11L6s 6t 6 .4 .D . .`NN'ENQTN	hN Nr+   r   N)typingr   r   r   r   langchain_core.callbacksr   langchain_core.documentsr   langchain_core.retrieversr	   langchain_core.utilsr
   r   r   pydanticr   r   #langchain_community.utilities.arceer   r   r   r"   r+   r)   <module>rV      s0    , , C - 3 V V * H}N] }Nr+   