import streamlit as st import json import time from config import Config from pinecode_quieries import PinecodeProposalQueries import logging logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING) logging.getLogger("haystack").setLevel(logging.INFO) logging.info("This is a test log ..") samples_salud = """ ¿Cuándo se implementará el Sistema de Salud? ¿Cómo se implementará el Sistema de Salud? ¿Qué es principio de interpretación y fundamento de la transición en relación al Sistema de Salud? ¿Qué se garantiza en todo momento con el nuevo Sistema de Salud? ¿Qué son los Centros de Atención Primaria Integrales y Resolutivos en Salud - CAPIRS? ¿Qué se garantiza durante el periodo de transición del nuevo Sistema de Salud? ¿Puede haber personas sin protección de su salud durante el periodo de transición? ¿Cuál es el derecho fundamental que se garantiza en todo momento durante la transición del nuevo Sistema de Salud? ¿En qué país se está implementando este Sistema de Salud? ¿Qué se debe realizar para garantizar la gestión de los recursos en el nivel nacional y desconcentrado? ¿Cómo se regirá el régimen de contratación de los contratos mencionados en el texto? ¿Qué son las cláusulas exorbitantes previstas en el estatuto General de Contratación de la administración pública? ¿Qué principios deben atender los contratos mencionados en el texto? ¿Cuál es el ámbito de aplicación de los contratos mencionados en el texto? ¿Quién tiene la responsabilidad de realizar la auditoría de las cuentas en relación a estos contratos? ¿Cuáles son las características que deben cumplir los contratos mencionados en el texto? ¿Qué se entiende por "coordinación" en el contexto de los contratos mencionados en el texto? ¿Qué objetivo se busca con los contratos mencionados en el texto? ¿Quién será el encargado de contratar los servicios de salud y otros requerimientos para el cumplimiento de su labor en el nivel regional? ¿Qué tipo de instituciones hospitalarias y ambulatorias se integran a la red de servicios del territorio? ¿Qué tarifas deben seguir las instituciones hospitalarias y ambulatorias para la prestación de servicios de salud? ¿Qué busca modular el régimen de tarifas y formas de pago para la prestación de servicios de salud? ¿Qué tipo de registro llevará el Fondo Regional de Salud? ¿Cuáles son algunas de las variables que se incluirán en el registro de cada servicio prestado y pagado? """ samples_hallazgos = """ ¿Cuándo se implementará el Sistema de Salud? ¿Cómo se implementará el Sistema de Salud? ¿Qué es principio de interpretación y fundamento de la transición en relación al Sistema de Salud? ¿Qué se garantiza en todo momento con el nuevo Sistema de Salud? ¿Qué son los Centros de Atención Primaria Integrales y Resolutivos en Salud - CAPIRS? ¿Qué se garantiza durante el periodo de transición del nuevo Sistema de Salud? ¿Puede haber personas sin protección de su salud durante el periodo de transición? ¿Cuál es el derecho fundamental que se garantiza en todo momento durante la transición del nuevo Sistema de Salud? ¿En qué país se está implementando este Sistema de Salud? ¿Qué se debe realizar para garantizar la gestión de los recursos en el nivel nacional y desconcentrado? ¿Cómo se regirá el régimen de contratación de los contratos mencionados en el texto? ¿Qué son las cláusulas exorbitantes previstas en el estatuto General de Contratación de la administración pública? ¿Qué principios deben atender los contratos mencionados en el texto? ¿Cuál es el ámbito de aplicación de los contratos mencionados en el texto? ¿Quién tiene la responsabilidad de realizar la auditoría de las cuentas en relación a estos contratos? ¿Cuáles son las características que deben cumplir los contratos mencionados en el texto? ¿Qué se entiende por "coordinación" en el contexto de los contratos mencionados en el texto? ¿Qué objetivo se busca con los contratos mencionados en el texto? ¿Quién será el encargado de contratar los servicios de salud y otros requerimientos para el cumplimiento de su labor en el nivel regional? ¿Qué tipo de instituciones hospitalarias y ambulatorias se integran a la red de servicios del territorio? ¿Qué tarifas deben seguir las instituciones hospitalarias y ambulatorias para la prestación de servicios de salud? ¿Qué busca modular el régimen de tarifas y formas de pago para la prestación de servicios de salud? ¿Qué tipo de registro llevará el Fondo Regional de Salud? ¿Cuáles son algunas de las variables que se incluirán en el registro de cada servicio prestado y pagado? """ extractive_query = PinecodeProposalQueries (es_host = Config.es_host, es_index = Config.proposals_index, es_user = Config.es_user, es_password = Config.es_password, reader_name_or_path = Config.reader_model_name_or_path, use_gpu = Config.use_gpu) def clear_submit(): st.session_state["submit"] = False def fake_search(question, retriever_top_k, reader_top_k): #p1_result = query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k, es_index = "informecomisionverdad") result = [] p = """ La masacre de Bojayá fue perpetrada por el Frente José María Córdoba, de las FARC-EP, al lanzar un cilindro bomba que cayó en una iglesia en la que los pobladores se refugiaban del enfrentamiento de este grupo con el Bloque Élmer Cárdenas de las AUC. Las víctimas fueron 81 personas, 47 de ellas eran niñas, niños y adolescentes """ for i in range(0, reader_top_k): result.append([[i+1],"81 personas", p[:250],"Las masacres","Comisión de la verdad - Informe de hallazgos y recomendaciones Junio 2022","5"]) return result def search(question, retriever_top_k, reader_top_k): query_result = extractive_query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k) result = [] for i in range(0, len(query_result)): item = query_result[i] result.append([[i+1], item.answer, item.context[:200], item.meta['title'], item.meta['source'], int(item.meta['page'])]) #result.append([[i+1], item.answer, item.context[:200], item.meta['title']]) return result def search_and_show_results(): # set start time stt = time.time() # retrieve top 5 documents results = search(query, retriever_top_k=5, reader_top_k=3) # set endtime ent = time.time() # measure resulting time elapsed_time = round(ent - stt, 2) # show which query was entered, and what was searching time st.write(f"**Resultados relacionados con:** \"{query}\" ({elapsed_time} sec.)") # then we use loop to show results for i, answer in enumerate(results): # answer starts with header st.subheader(f"{answer[1]}") # cropped answer doc = answer[2][:250] + "..." # and url to the full answer #url = f"https://www.comisiondelaverdad.co/sites/default/files/descargables/2022-06/Informe%20Final%20capi%CC%81tulo%20Hallazgos%20y%20recomendaciones.pdf#page={answer[5]+1}" url = f"https://petro.presidencia.gov.co/Documents/230213-Reforma-salud.pdf" # then we display it #st.markdown(f'{doc}\n
Fuente: {answer[4]}\n
Capítulo: {answer[3]}\n
Página: {answer[5]}\n[**Lee más aquí**]({url})\n', unsafe_allow_html=True) st.markdown(f"{doc}[**Lee más aquí**]({url})") st.caption(f"Fuente: {answer[4]} - Capítulo: {answer[3]} - Página: {answer[5]}") st.markdown("---") #results = search("que es el adres", retriever_top_k=5, reader_top_k=3) # if __name__ == "__main__": # streamlit part starts here with title st.set_page_config(layout="wide", page_title="Buscar") title = """

Ask2Democracy 🇨🇴

Muchas de las discusiones que ocurren en Colombia terminan siendo artículos o pdfs que salvo excpciones, nadie lee. Este sistema de búsquedas usa inteligencia artificial para apoyar el entendimiendo de textos relevantes que suelen estar dispersos y poco accesibles. Como las propuestas presidenciales del 22, los hallazgos de la comisión de la verdad, los textos de las reformas, etc. """ st.markdown(title, unsafe_allow_html=True) st.markdown("""

Creado por Jorge Henao 🇨🇴 Twitter LinkedIn
""", unsafe_allow_html=True) st.write(f"Cuanto más contexto le des a la pregunta mejor funciona el sistema.") # Sidebar selected_index = None query = st.text_area("Escribe tu pregunta", on_change=clear_submit) button = st.button("Buscar") if button or st.session_state.get("submit"): if not query: st.error("¡escribe una pregunta!") else: st.session_state["submit"] = True search_and_show_results() with st.sidebar: st.write("Ask2Democracy 🇨🇴") selected_index = st.selectbox("Seleccion la colección sobre el que deseas buscar", ["Propuesta Reforma de la salud 2023", "Hallazgos de la comisión de la verdad 2022"])