
    dh                     `    S SK r S SKJrJrJrJrJr  \ R                  " \5      r	 " S S5      r
g)    N)AnyDictListOptionalUnionc            
           \ rS rSrSr SS\S\\   S\4S jjrS\S	\S
\S\S\4
S jr	S\
\\\4      S\4S jrS\S\
\\\4      4S jrS\
\   S\
\\\4      4S jrS\\\
\   4   S\\
\\\4         4S jrSrg)DriaAPIWrapper   a  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                 (    SSK JnJn  Xl        XPl        X l        X0l	        U" U R                  S9U l
        U R                  (       a&  U R                  R                  U R                  5        g g ! [         a    [        R                  S5         g f = f)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         `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/dria_index.py__init__DriaAPIWrapper.__init__   s    
	) &
5))$*:*:;   	LL 	s   A/ /BBnamedescriptioncategory	embeddingreturnc                 v    U R                   R                  XX2S9n[        R                  SU 35        XPl        U$ )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_base$DriaAPIWrapper.create_knowledge_base+   sF     &&--X . 
 	6{mDE&    datac                 l    U R                   R                  U5      n[        R                  SU 35        U$ )z$Insert data into the knowledge base.zData inserted: )r   insert_textr   r#   )r   r'   responses      r   insert_dataDriaAPIWrapper.insert_data:   s0    ##//5ohZ01r&   queryc                 |    U R                   R                  XR                  S9n[        R	                  SU 35        U$ )zPerform a text-based search.r   zSearch results: )r   searchr   r   r#   )r   r-   resultss      r   r0   DriaAPIWrapper.search@   s8    ""))%zz)B&wi01r&   vectorc                 |    U R                   R                  XR                  S9n[        R	                  SU 35        U$ )zPerform a vector-based query.r/   zVector query results: )r   r-   r   r   r#   )r   r3   vector_query_resultss      r   query_with_vector DriaAPIWrapper.query_with_vectorF   s<    #//55fJJ5O,-A,BCD##r&   c                     [        U[        5      (       a  U R                  U5      $ [        U[        5      (       a(  [	        S U 5       5      (       a  U R                  U5      $ [        R                  S5        g)zMethod 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   @   #    U H  n[        U[        5      v   M     g 7f)N)
isinstancefloat).0items     r   	<genexpr>%DriaAPIWrapper.run.<locals>.<genexpr>X   s     ,WQVZe-D-DQVs   zrInvalid query type. Please provide a string for text search or a 
                list of floats for vector query.N)r:   strr0   listallr6   r   r   )r   r-   s     r   runDriaAPIWrapper.runL   se     eS!!;;u%%t$$,WQV,W)W)W))%00LL4 r&   )r   r   r   r   r   )N
   )__name__
__module____qualname____firstlineno____doc__r@   r   intr   r$   r   r   r   r+   r0   r;   r6   r   rC   __static_attributes__ r&   r   r	   r	      s    
 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   	getLoggerrF   r   r	   rM   r&   r   <module>rQ      s*     3 3			8	$X Xr&   