
    Ng
                     j    d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  G d de
          Zd	S )
zWrapper around Dria Retriever.    )AnyListOptional)CallbackManagerForRetrieverRunDocument)BaseRetriever)DriaAPIWrapperc                        e Zd ZU dZeed<   ddedee         def fdZ		 	 dd
ededededef
dZ
deddfdZdededee         fdZ xZS )DriaRetrieverz*`Dria` retriever using the DriaAPIWrapper.api_wrapperNapi_keycontract_idkwargsc                 `    t          ||          } t                      j        dd|i| dS )z
        Initialize the DriaRetriever with a DriaAPIWrapper instance.

        Args:
            api_key: The API key for Dria.
            contract_id: The contract ID of the knowledge base to interact with.
        )r   r   r   N )r
   super__init__)selfr   r   r   r   	__class__s        e/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/retrievers/dria_index.pyr   zDriaRetriever.__init__   s?     %W+NNN;;[;F;;;;;    Unspecifiedjinanamedescriptioncategory	embeddingreturnc                 @    | j                             ||||          }|S )aw  Create a new knowledge base in Dria.

        Args:
            name: The name of the knowledge base.
            description: The description of the knowledge base.
            category: The category of the knowledge base.
            embedding: The embedding model to use for the knowledge base.


        Returns:
            The ID of the created knowledge base.
        )r   create_knowledge_base)r   r   r   r   r   responses         r   r!   z#DriaRetriever.create_knowledge_base   s,    & #99+x
 
 r   textsc                 R    d |D             }| j                             |           dS )zAdd texts to the Dria knowledge base.

        Args:
            texts: An iterable of texts and metadatas to add to the knowledge base.

        Returns:
            List of IDs representing the added texts.
        c                 0    g | ]}|d          |d         dS )textmetadata)r&   r'   r   ).0r&   s     r   
<listcomp>z+DriaRetriever.add_texts.<locals>.<listcomp>@   s)    WWWf4
3CDDWWWr   N)r   insert_data)r   r#   datas      r   	add_textszDriaRetriever.add_texts4   s6     XWQVWWW$$T*****r   queryrun_managerc                R    | j                             |          }d |D             }|S )a*  Retrieve relevant documents from Dria based on a query.

        Args:
            query: The query string to search for in the knowledge base.
            run_manager: Callback manager for the retriever run.

        Returns:
            A list of Documents containing the search results.
        c                 Z    g | ](}t          |d          |d         |d         d          )S )r'   idscore)r1   r2   )page_contentr'   r   )r(   results     r   r)   z9DriaRetriever._get_relevant_documents.<locals>.<listcomp>P   sT     
 
 

 	 #J/ &tvgGG  
 
 
r   )r   search)r   r-   r.   resultsdocss        r   _get_relevant_documentsz%DriaRetriever._get_relevant_documentsC   sA     "))%00
 

 "
 
 
 r   )N)r   r   )__name__
__module____qualname____doc__r
   __annotations__strr   r   r   r!   r   r,   r   r   r8   __classcell__)r   s   @r   r   r      s        44	< 	< 	<(3- 	<RU 	< 	< 	< 	< 	< 	< &   	
  
   0++ 
+ + + +*H	h       r   r   N)r<   typingr   r   r   langchain_core.callbacksr   langchain_core.documentsr   langchain_core.retrieversr	   langchain_community.utilitiesr
   r   r   r   r   <module>rE      s    $ $ & & & & & & & & & & C C C C C C - - - - - - 3 3 3 3 3 3 8 8 8 8 8 8K K K K KM K K K K Kr   