o
    Zh                     @  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                   @  s>   e Zd ZU dZded< ded< e	ddddZ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   
dataset_idstr
data_types	List[str]returnc                 C  s>   zddl m} W n ty   tdw |||}| ||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   Y/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/retrievers/kay.pycreate   s   
zKayAiRetriever.createqueryrun_managerr   List[Document]c                C  sP   | j j|| jd}g }|D ]}|dd }|d u rq|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   )r   r   r   r   r   r
   r   r   )r   r   r   r   r   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    