o
    Zh                     @  s   d dl mZ d dlmZmZmZm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 d dlmZ d d	lmZmZ erHd d
lmZ dddZeddddG dd deZdS )    )annotations)TYPE_CHECKINGAnyDictList)
deprecated)#AsyncCallbackManagerForRetrieverRunCallbackManagerForRetrieverRunDocument)BaseChatModel)HumanMessage)BaseRetriever)
ConfigDictField)BaseMessageresponser   returnList[Document]c              
   C  s`   d| j vrg n	dd | j d D }|t| jjd| j d | j d | j d | j d d	d
 |S )NZ	documentsc                 S  s   g | ]
}t |d  |dqS )ZsnippetZpage_contentmetadatar
   ).0doc r   j/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/retrievers/cohere_rag_retriever.py
<listcomp>   s    z_get_docs.<locals>.<listcomp>Zmodel_response	citationssearch_resultssearch_queriestoken_count)typer   r   r   r   r   )Zgeneration_infoappendr   messagecontent)r   docsr   r   r   	_get_docs   s$   
r%   z0.0.30z1.0z#langchain_cohere.CohereRagRetriever)ZsinceZremovalZalternative_importc                   @  sR   e Zd ZU dZedd dZded< 	 ded< 	 ed	d
ZdddZ	dddZ
dS )CohereRagRetrieverzCohere Chat API with RAG.c                   C  s
   ddigS )Nidz
web-searchr   r   r   r   r   <lambda>4   s   
 zCohereRagRetriever.<lambda>)default_factoryz
List[Dict]
connectorsr   llmT)Zarbitrary_types_allowedquerystrrun_managerr	   kwargsr   r   r   c                K  s@   t |dgg}| jj|f| j| d|jd d }t|S N)r#   )r*   	callbacksr   )r   r+   generater*   	get_childgenerationsr%   selfr,   r.   r/   messagesresr   r   r   _get_relevant_documentsD   s   z*CohereRagRetriever._get_relevant_documentsr   c                  sH   t |dgg}| jj|f| j| d|I d H jd d }t|S r0   )r   r+   Z	agenerater*   r3   r4   r%   r5   r   r   r   _aget_relevant_documentsP   s   
z+CohereRagRetriever._aget_relevant_documentsN)r,   r-   r.   r	   r/   r   r   r   )r,   r-   r.   r   r/   r   r   r   )__name__
__module____qualname____doc__r   r*   __annotations__r   Zmodel_configr9   r:   r   r   r   r   r&   ,   s   
 
r&   N)r   r   r   r   )
__future__r   typingr   r   r   r   Zlangchain_core._api.deprecationr   Zlangchain_core.callbacksr   r	   Zlangchain_core.documentsr   Z*langchain_core.language_models.chat_modelsr   Zlangchain_core.messagesr   Zlangchain_core.retrieversr   Zpydanticr   r   r   r%   r&   r   r   r   r   <module>   s$    
