haystack/ui/webapp.py
Tanmay Laud 7cd9e09491
Add basic demo UI via streamlit (#671)
* Added starter code for frontend demo

* worked on comments

* Added Docker config for frontend

* update docker file. restructure folder structure. minimal renamings and defaults

* add screenshot to readme

Co-authored-by: Malte Pietsch <malte.pietsch@deepset.ai>
2020-12-27 13:36:09 +01:00

28 lines
1.4 KiB
Python

import streamlit as st
from utils import retrieve_doc
from annotated_text import annotated_text
def annotate_answer(answer,context):
start_idx = context.find(answer)
end_idx = start_idx+len(answer)
annotated_text(context[:start_idx],(answer,"ANSWER","#8ef"),context[end_idx:])
st.write("# Haystack Demo")
st.sidebar.header("Options")
top_k_reader = st.sidebar.slider("Number of answers",min_value=1,max_value=10,value=5,step=1)
top_k_retriever = st.sidebar.slider("Number of documents from retriever",min_value=1,max_value=10,value=3,step=1)
question = st.text_input("Please provide your query:",value="Who is the father of Arya Starck?")
run_query = st.button("Run")
debug = st.sidebar.checkbox("Show debug info")
if run_query:
with st.spinner("Performing neural search on documents... 🧠 \n "
"Do you want to optimize speed or accuracy? \n"
"Check out the docs: https://haystack.deepset.ai/docs/latest/optimizationmd "):
results,raw_json = retrieve_doc(question,top_k_reader=top_k_reader,top_k_retriever=top_k_retriever)
st.write("## Retrieved answers:")
for result in results:
annotate_answer(result['answer'],result['context'])
'**Relevance:** ', result['relevance'] , '**source:** ' , result['source']
if debug:
st.subheader('REST API JSON response')
st.write(raw_json)