U
    h                     @  sT   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 de
ZdS )	    )annotations)AnyList)CallbackManagerForRetrieverRun)Document)BaseRetrieverc                   @  sN   e Zd ZU dZded< ded< eddddd d	d
dZddddddZdS )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_contexts   strz	List[str])
dataset_id
data_typesr   returnc                 C  sD   zddl m} W n tk
r,   tdY nX |||}| ||dS )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   )Zkay.rag.retrieversr   ImportError)clsr   r   r   r   r	    r   F/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/retrievers/kay.pycreate   s    

zKayAiRetriever.creater   zList[Document])queryrun_managerr   c                C  sN   | j j|| jd}g }|D ].}|dd }|d kr4q|t||d q|S )N)r   Znum_contextZchunk_embed_text)page_contentmetadata)r	   r   r   popappendr   )selfr   r   ZctxsZdocsctxr   r   r   r   _get_relevant_documents2   s    z&KayAiRetriever._get_relevant_documentsN)r   )__name__
__module____qualname____doc____annotations__classmethodr   r   r   r   r   r   r   
   s   
 r   N)
__future__r   typingr   r   Zlangchain_core.callbacksr   Zlangchain_core.documentsr   Zlangchain_core.retrieversr   r   r   r   r   r   <module>   s
   