Spaces:
Runtime error
Runtime error
import gradio as gr | |
from haystack.nodes import BM25Retriever, FARMReader | |
from haystack.document_stores import ElasticsearchDocumentStore | |
from haystack.pipelines import ExtractiveQAPipeline | |
from abc import ABC, abstractmethod | |
import certifi | |
import gradio as gr | |
ca_certs=certifi.where() | |
class Config(): | |
es_host = "ask2democracy.es.us-central1.gcp.cloud.es.io" | |
es_user = "elastic" | |
es_password = "siKAHmmk2flwEaKNqQVZwp49" | |
proposals_index = "petrolfo" | |
#reader_model_name_or_path = "deepset/roberta-base-squad2" | |
reader_model_name_or_path = "deepset/xlm-roberta-large-squad2" | |
use_gpu = True | |
class DocumentQueries(ABC): | |
def search_by_query(self, query : str, retriever_top_k: int, reader_top_k: int, es_index: str): | |
pass | |
class ExtractiveProposalQueries(DocumentQueries): | |
def __init__(self, es_host: str, es_index: str, es_user, es_password, reader_name_or_path: str, use_gpu = False) -> None: | |
reader = FARMReader(model_name_or_path = reader_name_or_path, use_gpu = use_gpu, num_processes=1) | |
self._initialize_pipeline(es_host, es_index, es_user, es_password, reader = reader) | |
def _initialize_pipeline(self, es_host, es_index, es_user, es_password, reader = None): | |
if reader is not None: | |
self.reader = reader | |
self.es_host = es_host | |
self.es_user = es_user | |
self.es_password = es_password | |
self.document_store = ElasticsearchDocumentStore(host = es_host, username=es_user, password=es_password, index = es_index, port = 443, scheme='https', verify_certs=True, ca_certs=ca_certs) | |
self.retriever = BM25Retriever(document_store = self.document_store) | |
self.pipe = ExtractiveQAPipeline(self.reader, self.retriever) | |
def search_by_query(self, query : str, retriever_top_k: int, reader_top_k: int, es_index: str = None) : | |
if es_index is not None: | |
self._initialize_pipeline(self.es_host, es_index, self.es_user, self.es_password) | |
params = {"Retriever": {"top_k": retriever_top_k}, "Reader": {"top_k": reader_top_k}} | |
prediction = self.pipe.run( query = query, params = params) | |
return prediction["answers"] | |
def update(query): | |
return f"{query}", f"{query}", f"{query}", f"{query}" | |
def search(question): | |
p1_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 1, es_index = "petro") | |
p2_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 1, es_index = "rodolfo") | |
return [p1_result[0].answer, | |
p1_result[0].context, | |
p2_result[0].answer, | |
p2_result[0].context] | |
demo = gr.Blocks() | |
query = ExtractiveProposalQueries(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 update(query): | |
return f"{query}", f"{query}", f"{query}", f"{query}" | |
def search(question): | |
p1_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 3, es_index = "petro") | |
p2_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 3, es_index = "rodolfo") | |
return [p1_result[0].answer, | |
p1_result[0].context, | |
p2_result[0].answer, | |
p2_result[0].context] | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown( | |
""" | |
# Ask2Democracy🇨🇴 | |
El debate ha sido un ausente en la segunda vuelta por la presidencia de Colombia del 2022. | |
para ayudar con el conocimiento de las propuestas de los candidatos construí este espacio, | |
puede hacerle preguntas a la propuestas de los candidatos. | |
Un pequeño aporte a un fin de semana determinante en la democracia Colombiana [Abajo algunos ejemplos]👇 | |
<p> | |
<br>Este espacio hace parte de un proyecto open source que busca ayudar con el conocimiento de la historia Colombiana. <a href= "https://github.com/jorge-henao/ask_to_democracy">repo en github con FastAPI</a></br> | |
</p> | |
<p> | |
Por: Jorge Henao 🇨🇴 <a href="https://twitter.com/jhenaotw" target='_blank'>Twitter</a> <a href="https://www.linkedin.com/in/henaojorge" target='_blank'/>LinkedIn</a> | |
</p> | |
""") | |
inp = gr.Textbox(placeholder="¿Que va a hacer con la deuda del ICETEX?") | |
search_button = gr.Button("Buscar") | |
with gr.Row(): | |
#response = gr.Label(value="Gustavo Petro") | |
#context = gr.Label(value="Rodolfo Hernández") | |
gr.Markdown("<h1>Gustavo Petro (•_•) ( •_•) </h1>") | |
gr.Markdown("<h1> Rodolfo Hernandez</h1>") | |
# resp_1 = gr.Markdown("<b>Respuesta</b>") | |
# context_1 = gr.Markdown("<b>Contexto</b>") | |
with gr.Row(): | |
gr.Markdown("<img src='https://ichef.bbci.co.uk/news/640/cpsprodpb/394A/production/_124966641_blank2gridscollage.png' alt='Girl in a jacket'>") | |
with gr.Row(): | |
with gr.Column(): | |
resp_1 = gr.Textbox(lines=1, label="respuesta de Petro") | |
context_1 = gr.Textbox(lines=5, label="contexto") | |
with gr.Column(): | |
resp_2 = gr.Textbox(lines=1, label="respuesta de Rodolfo Hernandez") | |
context_2 = gr.Textbox(lines=5, label="contexto") | |
search_button.click(search, inputs = inp, outputs=[resp_1, context_1, resp_2, context_2]) | |
gr.Markdown(""" | |
# Aquí algunos asuntos de interés nacional: | |
<ul> | |
<li>¿Por qué quiere llegar a la presidencia?</li> | |
<li>¿Que va a hacer con la deuda del ICETEX?</li> | |
<li>¿Como impulsará la creación de startus o emprendimientos creados por jóvenes?</li> | |
<li>¿Propuestas de para garantizar la protección de lideres sociales y ambientales?</li> | |
<li>¿Cómo promoverá el mercado laboral de los jóvenes?</li> | |
<li>¿Cuales medidas tomará para mejorar la remuneración de los jóvenes ?</li> | |
<li>¿Cuales aciones propone para aumentar la capacidad del sistema de salud en materia de prevención y atención de enfermedades?</li> | |
<li>¿apoyará el proceso de paz con el ELN?</li> | |
<li>¿regulará las plataformas móviles de transporte?</li> | |
<li>¿consideraría el cultivo de la hoja de coca para uso farmacéutico y otros usos lícitos?</li> | |
<li>¿está de acuerdo con la legalización de la marhihuana?</li> | |
<li>¿apoyaría las Pymes para entrar el mercado de la marihuana legal?</li> | |
<li>¿implementaría el uso del Canabis para tratar enfermedades no crónicas ni terminales?</li> | |
<li>¿Por qué implementará el uso del Canabis?</li> | |
<li>¿Que política implementará para aprovechar plantas como la hoja de coca en usos alternativos como abonos?</li> | |
<li>¿está de acuerdo con la reforma del SMAD?</li> | |
<li>¿está de acuerdo con la regulación de la prostitución?</li> | |
<li>¿eliminará el servicio militar obligatorio?</li> | |
<li>¿Diversidad de género en los altos cargos del gobierno de ?</li> | |
<li>sobre diversidad de género en los altos cargos del gobierno </li> | |
<li>¿ eliminará la figura del porte especial de armas?</li> | |
<li>¿Que mecanismo implementará para garantizar la paridad de género en la política nacional y territorial?</li> | |
<li>cuotas de participación igualitaria en cargos públicos para personas de todas las identidades de género</li> | |
<li>¿Que va hacer para eliminar las barreras de acceso, tenencia y formalización de la tierra para las mujeres?</li> | |
<li>¿Cómo incentivará la denuncia por parte de hombres victgimas de violencia de genero?</li> | |
<li>¿tendrá en cuenta la identificación de genero no binario para efectos de registros públios?</li> | |
<li>¿aceptaría el matrimonio o union marital de hecho entre familias poliamorosas?</li> | |
<li>¿eliminará el 4 por mil?</li> | |
<li>¿aprueva acuerdo de ESCASÚ?</li> | |
<li>¿va a acabar con las EPS?</li> | |
<li>¿Que propone respecto a la medicina preventiva?</li> | |
<li>spobre consumo mínimo vital de agua </li> | |
<li>¿Replanteará las relaciones con Estados Unidos?</li> | |
<li>¿Renegociará los TLCS?</li> | |
<li>¿Seguirá importando alimentos o fomentará la producción nacional?</li> | |
<li>¿Qué políticas sociales implementará para ayudar a las familias vulnerables?</li> | |
<li>¿Cómo financiaría las pensiones?</li> | |
<li>¿De dónde va a sacar la plata para financiar las pensiones?</li> | |
<li>¿Que propone para la transición energética?</li> | |
<li>¿Cómo fortalecerá las capacidades para producir localmente medicamentos e insumos esenciales para la salud de los colombianos?</li> | |
<li>¿Cómo hará para preservar la vida de los y las líderes sociales afrodescendientes?</li> | |
<li>¿Cómo hará una transición energética justa?</li> | |
<li>¿Cómo revitalizará el proceso de paz?</li> | |
<li>¿Cómo transformará la actual tragedia educativa en Colombia en una oportunidad para tener el sistema educativo que el país necesita?</li> | |
<li>¿Cómo va a garantizar el enfoque de género en sus políticas públicas?</li> | |
<li>¿Ejecutará una reforma agraria?</li> | |
<li>¿Habrá reforma tributaria en el gobierno?</li> | |
<li>¿Qué acciones concretas tomará para reducir el hacinamiento en las cárceles?</li> | |
<li>¿Qué recursos nacionales destinará a la movilidad en Bogotá?</li> | |
<li>¿Qué va a hacer contra la corrupción?</li> | |
<li>¿ recomponerá las relaciones diplomáticas con el Gobierno venezolano?</li> | |
<li>¿Qué propone sobre las pensiones?</li> | |
</ul>""") | |
demo.launch(debug = True) |