Spaces:
Runtime error
Runtime error
Jorge Henao
commited on
Commit
β’
416f2ae
1
Parent(s):
e0cffe2
gradio app updated
Browse files
app.py
CHANGED
@@ -1,5 +1,73 @@
|
|
1 |
import gradio as gr
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
def update(query):
|
4 |
return f"{query}", f"{query}", f"{query}", f"{query}"
|
5 |
|
|
|
1 |
import gradio as gr
|
2 |
|
3 |
+
from haystack.nodes import BM25Retriever, FARMReader
|
4 |
+
from haystack.document_stores import ElasticsearchDocumentStore
|
5 |
+
from haystack.pipelines import ExtractiveQAPipeline
|
6 |
+
from abc import ABC, abstractmethod
|
7 |
+
import certifi
|
8 |
+
import gradio as gr
|
9 |
+
|
10 |
+
ca_certs=certifi.where()
|
11 |
+
|
12 |
+
|
13 |
+
class Config():
|
14 |
+
es_host = "ask2democracy.es.us-central1.gcp.cloud.es.io"
|
15 |
+
es_user = "elastic"
|
16 |
+
es_password = "siKAHmmk2flwEaKNqQVZwp49"
|
17 |
+
proposals_index = "petrolfo"
|
18 |
+
#reader_model_name_or_path = "deepset/roberta-base-squad2"
|
19 |
+
reader_model_name_or_path = "deepset/xlm-roberta-large-squad2"
|
20 |
+
use_gpu = True
|
21 |
+
|
22 |
+
class DocumentQueries(ABC):
|
23 |
+
|
24 |
+
@abstractmethod
|
25 |
+
def search_by_query(self, query : str, retriever_top_k: int, reader_top_k: int, es_index: str):
|
26 |
+
pass
|
27 |
+
|
28 |
+
class ExtractiveProposalQueries(DocumentQueries):
|
29 |
+
|
30 |
+
def __init__(self, es_host: str, es_index: str, es_user, es_password, reader_name_or_path: str, use_gpu = False) -> None:
|
31 |
+
reader = FARMReader(model_name_or_path = reader_name_or_path, use_gpu = use_gpu, num_processes=1)
|
32 |
+
self._initialize_pipeline(es_host, es_index, es_user, es_password, reader = reader)
|
33 |
+
|
34 |
+
|
35 |
+
def _initialize_pipeline(self, es_host, es_index, es_user, es_password, reader = None):
|
36 |
+
if reader is not None:
|
37 |
+
self.reader = reader
|
38 |
+
self.es_host = es_host
|
39 |
+
self.es_user = es_user
|
40 |
+
self.es_password = es_password
|
41 |
+
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)
|
42 |
+
self.retriever = BM25Retriever(document_store = self.document_store)
|
43 |
+
self.pipe = ExtractiveQAPipeline(self.reader, self.retriever)
|
44 |
+
|
45 |
+
def search_by_query(self, query : str, retriever_top_k: int, reader_top_k: int, es_index: str = None) :
|
46 |
+
if es_index is not None:
|
47 |
+
self._initialize_pipeline(self.es_host, es_index, self.es_user, self.es_password)
|
48 |
+
params = {"Retriever": {"top_k": retriever_top_k}, "Reader": {"top_k": reader_top_k}}
|
49 |
+
prediction = self.pipe.run( query = query, params = params)
|
50 |
+
return prediction["answers"]
|
51 |
+
|
52 |
+
def update(query):
|
53 |
+
return f"{query}", f"{query}", f"{query}", f"{query}"
|
54 |
+
|
55 |
+
def search(question):
|
56 |
+
p1_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 3, es_index = "petro")
|
57 |
+
p2_result = query.search_by_query(query = question, retriever_top_k = 5, reader_top_k = 3, es_index = "rodolfo")
|
58 |
+
|
59 |
+
return [p1_result[0].answer,
|
60 |
+
p1_result[0].context,
|
61 |
+
p2_result[0].answer,
|
62 |
+
p2_result[0].context]
|
63 |
+
|
64 |
+
demo = gr.Blocks()
|
65 |
+
|
66 |
+
query = ExtractiveProposalQueries(es_host = Config.es_host, es_index = Config.proposals_index,
|
67 |
+
es_user = Config.es_user, es_password = Config.es_password,
|
68 |
+
reader_name_or_path = Config.reader_model_name_or_path,
|
69 |
+
use_gpu = Config.use_gpu)
|
70 |
+
|
71 |
def update(query):
|
72 |
return f"{query}", f"{query}", f"{query}", f"{query}"
|
73 |
|