a
    =fF                     @   s
  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m	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ d d	l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 d d	lZd dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' e(dddZ)d	S )    )OpenAIEmbeddings)OpenAI)LLMChain)
ChatOpenAI)ConversationBufferMemoryChatMessageHistoryConversationBufferWindowMemory)ChatPromptTemplateHumanMessagePromptTemplateSystemMessagePromptTemplatePromptTemplate)PostgresChatMessageHistory)ListN)create_qa_with_sources_chain)StuffDocumentsChain)ConversationalRetrievalChain)
PGVecto_rs)HumanMessageSystemMessage)Document)
Embeddings)get_openai_callback)modelo_chatmodelo_vector)preguntac           
      C   sn   d}d}t ddd}tj|||d}| }|j|dd}d	}|D ]}||jd
 7 }q>tj|| jd d}	|	S )NzJpostgresql+psycopg2://postgres:OzMFq5AZeu48PxL@74.208.117.78:5431/postgrespruebaztext-embedding-3-largez3sk-BJBMLzenOAiK9uGa5s5DT3BlbkFJdlwQPbVPKBFOkChjfD8r)modelopenai_api_key)	embeddingcollection_namedb_url   )k 
source)	contenido	documento)	r   r   from_collection_namesimilarity_searchpage_contentr   ZRespuestaPgVectorpopmetadata)
r   CONNECTION_STRINGCOLLECTION_NAME
embeddingsvectordbquerydocsr&   docmodelo r5   J/opt/spring_back/lhia/danec/python-danec/app/langchain_lhia/vector_chat.pypregunta_pgvector   s$    r7   )*langchain_openair   r   langchain.chainsr   r   langchain.memoryr   r   r   langchain_core.prompts.chatr	   r
   r   r   Z*langchain_community.chat_message_historiesr   typingr   urllib.parseurllibr   (langchain.chains.combine_documents.stuffr   r   +langchain_community.vectorstores.pgvecto_rsr   langchain_core.messagesr   r   jsonlangchain_core.documentsr   langchain_core.embeddingsr   langchain_community.callbacksr   
app.modelsr   r   strr7   r5   r5   r5   r6   <module>   s&   