Jorge Henao commited on
Commit
416f2ae
β€’
1 Parent(s): e0cffe2

gradio app updated

Browse files
Files changed (1) hide show
  1. app.py +68 -0
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