a
    bg                     @  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rd d
lmZ dd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)BaseMessager   List[Document])responsereturnc              
   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   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/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                   @  sb   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ddddZ	dddd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       zCohereRagRetriever.<lambda>)default_factoryz
List[Dict]
connectorsr   llmT)Zarbitrary_types_allowedstrr	   r   r   )queryrun_managerkwargsr   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/   r0   messagesresr   r   r   _get_relevant_documentsD   s    z*CohereRagRetriever._get_relevant_documentsr   c                  sF   t |dgg}| jj|f| j| d|I d H jd d }t|S r1   )r   r,   Z	agenerater+   r4   r5   r%   r6   r   r   r   _aget_relevant_documentsP   s    
z+CohereRagRetriever._aget_relevant_documentsN)__name__
__module____qualname____doc__r   r+   __annotations__r   Zmodel_configr:   r;   r   r   r   r   r&   ,   s   
	r&   N)
__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"   