
    7|h                    Z    d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
  G d de
      Zy)	    )annotations)AnyList)CallbackManagerForRetrieverRun)Document)BaseRetrieverc                  ^    e Zd ZU dZded<   ded<   e	 d		 	 	 	 	 	 	 d
d       Z	 	 	 	 	 	 ddZy)KayAiRetrieverz
    Retriever for Kay.ai datasets.

    To work properly, expects you to have KAY_API_KEY env variable set.
    You can get one for free at https://kay.ai/.
    r   clientintnum_contextsc                f    	 ddl m}  |||      } | ||      S # t        $ r t        d      w xY w)a  
        Create a KayRetriever given a Kay dataset id and a list of datasources.

        Args:
            dataset_id: A dataset id category in Kay, like "company"
            data_types: A list of datasources present within a dataset. For
                "company" the corresponding datasources could be
                ["10-K", "10-Q", "8-K", "PressRelease"].
            num_contexts: The number of documents to retrieve on each query.
                Defaults to 6.
        r   )KayRetrieverzNCould not import kay python package. Please install it with `pip install kay`.)r   r   )kay.rag.retrieversr   ImportError)cls
dataset_id
data_typesr   r   r   s         a/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/retrievers/kay.pycreatezKayAiRetriever.create   sH    $	7 j*5&|<<  	% 	s    0c                   | j                   j                  || j                        }g }|D ]5  }|j                  dd       }||j	                  t        |i |             7 |S )N)querynum_contextchunk_embed_text)page_contentmetadata)r   r   r   popappendr   )selfr   run_managerctxsdocsctxr   s          r   _get_relevant_documentsz&KayAiRetriever._get_relevant_documents2   sq     {{  u$:K:K L 	OC77#5t<L#KKlWWMN		O
     N)   )r   strr   z	List[str]r   r   returnr
   )r   r'   r    r   r(   zList[Document])__name__
__module____qualname____doc____annotations__classmethodr   r$    r%   r   r
   r
   
   sn     K
 	== = 	=
 
= =8

*H
	
r%   r
   N)
__future__r   typingr   r   langchain_core.callbacksr   langchain_core.documentsr   langchain_core.retrieversr   r
   r/   r%   r   <module>r5      s     "  C - 32] 2r%   