Spaces:
Runtime error
Runtime error
Update app.py
Browse files
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", "
|
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,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
|
119 |
answer = answer.to_dict()
|
120 |
-
if answer
|
121 |
results.append(
|
122 |
{
|
123 |
"context": "..." + answer["context"] + "...",
|
124 |
-
"answer": answer
|
|
|
125 |
"relevance": round(answer["score"] * 100, 2),
|
126 |
-
"document": [doc for doc in
|
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 |
-
|
|
|
|
|
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(
|