
    f	                         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 d dl	m
Z
 d dlmZ d dlmZ d d	lZ e
        d
ededefdZd
ededefdZdefdZy	)    )
ChatOpenAI)PromptTemplate)Milvus)OpenAIEmbeddings)modelo_vector)load_dotenv)milvus_busqueda)procesar_coleccionesNquestion
collectionamountc                 @   d}g }t        | ||      }|D ];  \  }}|dkD  s||j                  dz   z  }|j                  |j                  d          = t	        |      dkD  r't        |       t        j                  ||d         }|S t        j                  dd      }|S )N g?

documentr   	contenido	documento	ADICIONAL)vectors_namepage_contentappendmetadatalenprintr   RespuestaPgVector)	r   r   r   r   titulosdocsr   puntajemodelos	            =/opt/lhia/ganansol/python/app/langchain_lhia/milvus_vector.pyquestion_milvusrr"      s    IG	hz&	1D" ;	73;y--f44INN9--j9:; 7|A~g009wWXzZ M 002TM    c                    |g}|D ]^  }t        |      j                  | |      }g }|D ]  \  }}|j                  |        |s?t        |      t	        |      z  }	|	dkD  s\|c S  t        |      j                  | |      S )N)kg?)r	   similarity_search_with_scorer   sumr   )
r   r   r   colecciones	coleccioncoleccion_docspuntajesr   r   promedios
             r!   r   r      s    ,K  &	(3PPQY]cPd"0 	%IwOOG$	%8}s8}4H$%%& :&CCHPVCWWr#   preguntac                    dg}d}g }t        ||       }g }|D ]  }|j                  |        t        |d d      }t        |       |D ];  \  }}	|	dkD  s||j                  dz   z  }|j                  |j                  d          = t        |      d	kD  rt        j                  ||d	   
      }
nt        j                  dd
      }
t        |
       |
S )Nmanuales_y_codigosr   c                     | d   S )N    )xs    r!   <lambda>z"pregunta_milvusr.<locals>.<lambda>4   s
    ! r#   T)keyreverseg?r   r   r   r   r   )
r
   extendsortedr   r   r   r   r   r   r   )r-   r(   r   r   datar   sublistdocs_ordenadosr   r   r    s              r!   pregunta_milvusrr<   *   s    K IGX6DD GDndCN	., ;	7S=//&88INN9--j9:; 7|a0071:
 002U	&MMr#   )langchain_openair   langchain_core.prompts.chatr    langchain_community.vectorstoresr   r   
app.modelsr   dotenvr   connection.connectionr	   r
   osstrintr"   r   r<   r2   r#   r!   <module>rF      si    ' 6 3 - $  1 6 	 c S  X3 X3 Xc Xs r#   