a
    bg                     @   sX   d dl mZmZmZ d dl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 )	    )AnyListOptional)CallbackManagerForRetrieverRun)Document)BaseRetriever)model_validatorc                   @   s^   e Zd ZU dZeed< dZee ed< e	dde
eeddd	Zeeee d
ddZdS )MetalRetrieverz`Metal API` retriever.clientNparamsbefore)mode)valuesreturnc                 C   sL   ddl m} d|v r8|d }t||s8tdt| |di |d< |S )z0Validate that the client is of the correct type.r   )Metalr
   zMGot unexpected client, should be of type metal_sdk.metal.Metal. Instead, got r   )Zmetal_sdk.metalr   
isinstance
ValueErrortypeget)clsr   r   r
    r   r/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/retrievers/metal.pyvalidate_client   s    
zMetalRetriever.validate_client)queryrun_managerr   c                C   sX   | j jd|ifi | j}g }|d D ],}dd | D }|t|d |d q&|S )Ntextdatac                 S   s   i | ]\}}|d kr||qS )r   r   ).0kvr   r   r   
<dictcomp>)       z:MetalRetriever._get_relevant_documents.<locals>.<dictcomp>)Zpage_contentmetadata)r
   searchr   itemsappendr   )selfr   r   resultsZfinal_resultsrr"   r   r   r   _get_relevant_documents#   s    z&MetalRetriever._get_relevant_documents)__name__
__module____qualname____doc__r   __annotations__r   r   dictr   classmethodr   strr   r   r   r)   r   r   r   r   r	   	   s   
r	   N)typingr   r   r   Zlangchain_core.callbacksr   Zlangchain_core.documentsr   Zlangchain_core.retrieversr   Zpydanticr   r	   r   r   r   r   <module>   s
   