
    !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mZm	Z	 d dl
mZmZmZ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$ de%de%fdZ&y)    )OpenAIEmbeddings)OpenAI)LLMChain)
ChatOpenAI)ConversationBufferMemoryChatMessageHistoryConversationBufferWindowMemory)ChatPromptTemplateHumanMessagePromptTemplateSystemMessagePromptTemplatePromptTemplate)PostgresChatMessageHistoryN)create_qa_with_sources_chain)StuffDocumentsChain)ConversationalRetrievalChain)
PGVecto_rs)HumanMessageSystemMessage)Document)
Embeddings)get_openai_callback)modelo_chatpreguntasesionc                    t        dddd      }d}d}t        dd	      }t        j                  |||
      }d}t        j
                  j                  d      }t        d| d|d      }	t        j                  |      }t        ||      }
t        |	dd      }t        |      }t        dddg      }t        |d|      }t        |
|j                         ||      }|j!                  d| i      }t#        j$                  |      }|d   }|d   }|	j'                  |        |	j)                  |       t+        j,                  ||      }|S ) Ng      ?zgpt-3.5-turbo-0125tokeni,  )temperaturemodelopenai_api_key
max_tokenszJpostgresql+psycopg2://postgres:OzMFq5AZeu48PxL@74.208.117.78:5431/postgrespruebaztext-embedding-3-large)r   r   )	embeddingcollection_namedb_urlu4  Dada la siguiente conversación y una pregunta de seguimiento, reformule la pregunta de seguimiento para que sea una pregunta independiente, en su idioma original.
Asegúrate de evitar el uso de pronombres poco claros. 
conversacion: {chat_history}
Pregunta de seguimiento: {question}
Pregunta independiente:zQ@QMKUrTsFFazpostgresql://tws2admin:zL@198.251.78.201:5432/tws2_db_prod_courier?options=-c%20search_path%3Dlhia-jahistorial_chat)connection_string
session_id
table_name)llmpromptchat_history   )chat_memory
memory_keykzh
    Actu como un asistente de la cooperativa jardin azuayo
    Content: {page_content}
Source: {source}page_contentsource)templateinput_variablescontext)	llm_chaindocument_variable_namedocument_prompt)question_generator	retrievermemorycombine_docs_chainquestionanswersources)	respuesta	documento)r   r   r   from_collection_nameurllibparse
quote_plusr   r   from_templater   r	   r   r   r   as_retrieverrunjsonloadsadd_user_messageadd_ai_messager   RespuestaPython)r   r   r)   CONNECTION_STRINGCOLLECTION_NAME
embeddingsvectordbcondense_question_promptencoded_passwordhistorycondense_question_chainr:   qa_chain
doc_promptfinal_qa_chainretrieval_qaresponseresponseDictr=   r>   modelos                        C/Users/juancaisapanta/Desktop/lhia_ja_v2/app/langchain_lhia/chat.pyr   r      s   
,@PWdg
hCdO!
"J
 ..#H  ||..~>(/0@/A  BN  O!G  .;;<TU&# ,N^_`F+C0H1 $X.	J )$N 0.##%%	L X 67H::h'L(#F9%GX&6"''&7KFM    )'langchain_openair   r   langchain.chainsr   r   langchain.memoryr   r   r	   langchain_core.prompts.chatr
   r   r   r   *langchain_community.chat_message_historiesr   urllib.parserB   r   (langchain.chains.combine_documents.stuffr   r   +langchain_community.vectorstores.pgvecto_rsr   langchain_core.messagesr   r   rH   langchain_core.documentsr   langchain_core.embeddingsr   langchain_community.callbacksr   
app.modelsr   strr    r]   r\   <module>rm      s_    - # % ' h h   9 H 9 B ?  - 0 = "Fc F Fr]   