
    Ng                     d    d dl Z d dlmZmZmZmZmZ  e j        e          Z	 G d d          Z
dS )    N)AnyDictListOptionalUnionc            
       6   e Zd ZdZ	 ddedee         defdZded	ed
ededef
dZde	e
eef                  defdZdede	e
eef                  fdZde	e         de	e
eef                  fdZdeee	e         f         dee	e
eef                           fdZdS )DriaAPIWrappera  Wrapper around Dria API.

    This wrapper facilitates interactions with Dria's vector search
    and retrieval services, including creating knowledge bases, inserting data,
    and fetching search results.

    Attributes:
        api_key: Your API key for accessing Dria.
        contract_id: The contract ID of the knowledge base to interact with.
        top_n: Number of top results to fetch for a search.
    N
   api_keycontract_idtop_nc                 $   	 ddl m}m} n+# t          $ r t                              d           Y d S w xY w|| _        || _        || _        || _	         || j                  | _
        | j        r!| j
                            | j                   d S d S )Nr   )DriaModelszDria is not installed. Please install Dria to use this wrapper.
                
                You can install Dria using the following command:
                pip install dria
                )r   )driar   r   ImportErrorloggererrorr   modelsr   r   dria_clientset_contract)selfr   r   r   r   r   s         d/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/dria_index.py__init__zDriaAPIWrapper.__init__   s    
	))))))))) 	 	 	LL   FF	 &
4555 	<))$*:;;;;;	< 	<s    $33namedescriptioncategory	embeddingreturnc                     | j                             ||||          }t                              d|            || _        |S )zCreate a new knowledge base.)r   r   r   r   z Knowledge base created with ID: )r   creater   infor   )r   r   r   r   r   r   s         r   create_knowledge_basez$DriaAPIWrapper.create_knowledge_base+   sU     &--X; . 
 
 	D{DDEEE&    datac                 t    | j                             |          }t                              d|            |S )z$Insert data into the knowledge base.zData inserted: )r   insert_textr   r"   )r   r%   responses      r   insert_datazDriaAPIWrapper.insert_data:   s8    #//550h00111r$   queryc                     | j                             || j                  }t                              d|            |S )zPerform a text-based search.r   zSearch results: )r   searchr   r   r"   )r   r*   resultss      r   r-   zDriaAPIWrapper.search@   s?    "))%tz)BB0w00111r$   vectorc                     | j                             || j                  }t                              d|            |S )zPerform a vector-based query.r,   zVector query results: )r   r*   r   r   r"   )r   r/   vector_query_resultss      r   query_with_vectorz DriaAPIWrapper.query_with_vectorF   sB    #/55fDJ5OOC-ACCDDD##r$   c                    t          |t                    r|                     |          S t          |t                    r.t	          d |D                       r|                     |          S t                              d           dS )a
  Method to handle both text-based searches and vector-based queries.

        Args:
            query: A string for text-based search or a list of floats for
            vector-based query.

        Returns:
            The search or query results from Dria.
        c              3   @   K   | ]}t          |t                    V  d S )N)
isinstancefloat).0items     r   	<genexpr>z%DriaAPIWrapper.run.<locals>.<genexpr>X   s,      ,W,WZe-D-D,W,W,W,W,W,Wr$   zrInvalid query type. Please provide a string for text search or a 
                list of floats for vector query.N)r5   strr-   listallr2   r   r   )r   r*   s     r   runzDriaAPIWrapper.runL   s     eS!! 		;;u%%%t$$ 	,W,WQV,W,W,W)W)W 	))%000LL4   4r$   )Nr
   )__name__
__module____qualname____doc__r:   r   intr   r#   r   r   r   r)   r-   r6   r2   r   r=    r$   r   r	   r	      sq       
 
 MO< <<)1#<FI< < < <.  	
  
   T#s(^ 4     C Dc3h$8    $U $T#s(^8L $ $ $ $sDK/0 Xd4S>>R5S      r$   r	   )loggingtypingr   r   r   r   r   	getLoggerr>   r   r	   rC   r$   r   <module>rG      s     3 3 3 3 3 3 3 3 3 3 3 3 3 3		8	$	$X X X X X X X X X Xr$   