
    7|h
                     b    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y	)
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                 B    t        ||      }t        |   dd|i| y)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        h/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/retrievers/dria_index.pyr   zDriaRetriever.__init__   s&     %W+N;[;F;    namedescriptioncategory	embeddingreturnc                 B    | j                   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                 t    |D cg c]  }|d   |d   d }}| j                   j                  |       yc c}w )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.
        textmetadata)r"   r#   N)r   insert_data)r   r    r"   datas       r   	add_textszDriaRetriever.add_texts4   sA     RWWf4
3CDWW$$T* Xs   5queryrun_managerc          	          | j                   j                  |      }|D cg c]  }t        |d   |d   |d   d       }}|S c c}w )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.
        r#   idscore)r*   r+   )page_contentr#   )r   searchr   )r   r'   r(   resultsresultdocss         r   _get_relevant_documentsz%DriaRetriever._get_relevant_documentsC   sd     ""))%0 "

 	 #J/ &tvgG
 
 
s    A)N)Unspecifiedjina)__name__
__module____qualname____doc__r	   __annotations__strr   r   r   r   r   r&   r   r   r1   __classcell__)r   s   @r   r   r      s    4	< 	<(3- 	<RU 	< &  	
  
0++ 
+*H	hr   r   N)r7   typingr   r   r   langchain_core.callbacksr   langchain_core.documentsr   langchain_core.retrieversr   langchain_community.utilitiesr	   r   r   r   r   <module>r@      s(    $ & & C - 3 8KM Kr   