a
    bg                     @  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  sB   zddl m} W n ty*   tdY n0 |||}| ||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   p/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/retrievers/kay.pycreate   s    

zKayAiRetriever.creater   zList[Document])queryrun_managerr   c                C  sP   | j j|| jd}g }|D ]0}|dd }|d u r4q|t|i |d q|S )N)r   Znum_contextZchunk_embed_text)page_contentmetadata)r	   r   r   popappendr   )selfr   r   Zctxs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
   