a
    fF	                     @   sZ   d dl mZ d dlmZ d dlmZ d dl mZ d dlZd dlZ	e
dddZd	d
 ZdS )    )
ChatOpenAI)PromptTemplate)Milvus)OpenAIEmbeddingsN)collection_namec                 C   s"   t ddd}t|| dddddS )	Nztext-embedding-3-largez3sk-BJBMLzenOAiK9uGa5s5DT3BlbkFJdlwQPbVPKBFOkChjfD8r)modelZopenai_api_keyZagrotaz74.208.60.79Z19530)Zdb_namehostport)r   Zconnection_args)r   r   )r   
embeddings r   TC:\Users\Smart\OneDrive\Documentos\GitHub\back-agrota-serv-ia\app\filtro_vectores.pymilvus_busqueda	   s    r   c                    s   g }fddt j X  fdd| D }t j|D ]&}| }|r<|| tt| q<W d    n1 sx0    Y  |S )Nc                    sH   t | j dd}t|  |D ]$}|d }|dkrt| |  S qd S )N   )k   g?)r   Zsimilarity_search_with_scoreprint)	coleccionZcoleccion_docsdocpuntaje)preguntar   r   procesar_coleccion   s    
z0procesar_colecciones.<locals>.procesar_coleccionc                    s   i | ]}  ||qS r   )submit).0r   )executorr   r   r   
<dictcomp>)   s   z(procesar_colecciones.<locals>.<dictcomp>)
concurrentfuturesThreadPoolExecutoras_completedresultappendr   len)coleccionesr   Zlista_coleccionesZfuturosZfuturoZ	resultador   )r   r   r   r   procesar_colecciones   s    
,r#   )Zlangchain_openair   Zlangchain_core.prompts.chatr   Z langchain_community.vectorstoresr   r   
statisticsconcurrent.futuresr   strr   r#   r   r   r   r   <module>   s   