iloncka commited on
Commit
40769e7
1 Parent(s): 496ef82

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -12
app.py CHANGED
@@ -19,8 +19,8 @@ DOCS_PATH = os.path.join(DATA_DIR, 'all_docs_36838.pkl')
19
  LOTTIE_PATH = './img/108423-search-for-documents.json'
20
  PROG_TITLE = "QA project Demo"
21
  # Adjust to a question that you would like users to see in the search bar when they load the UI:
22
- DEFAULT_QUESTION_AT_STARTUP = os.getenv("DEFAULT_QUESTION_AT_STARTUP", "What's the capital of France?")
23
- DEFAULT_ANSWER_AT_STARTUP = os.getenv("DEFAULT_ANSWER_AT_STARTUP", "Paris")
24
 
25
  def place_header_center(text, lottie_data):
26
  img, title= st.columns([1,3])
@@ -94,7 +94,7 @@ def set_state_if_absent(key, value):
94
  set_state_if_absent("question", DEFAULT_QUESTION_AT_STARTUP)
95
  set_state_if_absent("answer", DEFAULT_ANSWER_AT_STARTUP)
96
  set_state_if_absent("results", None)
97
-
98
 
99
  def reset_results(*args):
100
  st.session_state.results = None
@@ -114,18 +114,20 @@ question = st.text_input("", value=st.session_state.question, max_chars=100, on_
114
 
115
  def ask_question(question):
116
  prediction = pipeline.run(query=question, params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 5}})
 
117
  results = []
118
- for answer in prediction["answers"]:
119
  answer = answer.to_dict()
120
- if answer["answer"]:
121
  results.append(
122
  {
123
  "context": "..." + answer["context"] + "...",
124
- "answer": answer["answer"],
 
125
  "relevance": round(answer["score"] * 100, 2),
126
- "document": [doc for doc in prediction["documents"] if doc["id"] == answer["document_id"]][0],
127
- # "_raw": answer,
128
  "offset_start_in_doc": answer["offsets_in_document"][0]["start"],
 
129
  }
130
  )
131
  else:
@@ -133,10 +135,12 @@ def ask_question(question):
133
  {
134
  "context": None,
135
  "answer": None,
 
136
  "relevance": round(answer["score"] * 100, 2),
 
137
  }
138
  )
139
- return results
140
 
141
 
142
  if question:
@@ -144,7 +148,7 @@ if question:
144
  try:
145
  msg = 'Asked ' + question
146
  logging.info(msg)
147
- st.session_state.results = ask_question(question)
148
  except Exception as e:
149
  logging.exception(e)
150
 
@@ -172,8 +176,10 @@ if st.session_state.results:
172
 
173
  if reg_id:
174
  source += f"({result['document']['meta']['reg_id']})"
175
-
176
- st.markdown(f"**Relevance:** {result['relevance']} - **Source:** {source}")
 
 
177
 
178
  else:
179
  st.info(
 
19
  LOTTIE_PATH = './img/108423-search-for-documents.json'
20
  PROG_TITLE = "QA project Demo"
21
  # Adjust to a question that you would like users to see in the search bar when they load the UI:
22
+ DEFAULT_QUESTION_AT_STARTUP = os.getenv("DEFAULT_QUESTION_AT_STARTUP", "Что делает Домашняя бухгалтерия?")
23
+ DEFAULT_ANSWER_AT_STARTUP = os.getenv("DEFAULT_ANSWER_AT_STARTUP", "Домашняя бухгалтерия позволяет вести счета в разных валютах")
24
 
25
  def place_header_center(text, lottie_data):
26
  img, title= st.columns([1,3])
 
94
  set_state_if_absent("question", DEFAULT_QUESTION_AT_STARTUP)
95
  set_state_if_absent("answer", DEFAULT_ANSWER_AT_STARTUP)
96
  set_state_if_absent("results", None)
97
+ set_state_if_absent("predictions", None)
98
 
99
  def reset_results(*args):
100
  st.session_state.results = None
 
114
 
115
  def ask_question(question):
116
  prediction = pipeline.run(query=question, params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 5}})
117
+ answers = prediction["answers"]
118
  results = []
119
+ for answer in answers:
120
  answer = answer.to_dict()
121
+ if answer.get("answer", None):
122
  results.append(
123
  {
124
  "context": "..." + answer["context"] + "...",
125
+ "answer": answer.get("answer", None),
126
+ "source": answer["meta"]["name"],
127
  "relevance": round(answer["score"] * 100, 2),
128
+ "document": [doc for doc in response["documents"] if doc["id"] == answer["document_id"]][0],
 
129
  "offset_start_in_doc": answer["offsets_in_document"][0]["start"],
130
+ "_raw": answer,
131
  }
132
  )
133
  else:
 
135
  {
136
  "context": None,
137
  "answer": None,
138
+ "document": None,
139
  "relevance": round(answer["score"] * 100, 2),
140
+ "_raw": answer,
141
  }
142
  )
143
+ return results, prediction
144
 
145
 
146
  if question:
 
148
  try:
149
  msg = 'Asked ' + question
150
  logging.info(msg)
151
+ st.session_state.results, st.session_state.predictions = ask_question(question)
152
  except Exception as e:
153
  logging.exception(e)
154
 
 
176
 
177
  if reg_id:
178
  source += f"({result['document']['meta']['reg_id']})"
179
+ if source:
180
+ st.markdown(f"**Relevance:** {result['relevance']} - **Source:** {source}")
181
+ else:
182
+ st.markdown(f"**Relevance:** {result['relevance']}")
183
 
184
  else:
185
  st.info(