haystack/ui/utils.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

42 lines
1.4 KiB
Python

import requests
import streamlit as st
import os
API_ENDPOINT = os.getenv("API_ENDPOINT", "http://localhost:8000")
MODEL_ID = "1"
DOC_REQUEST = "doc-qa"
def format_request(question,filters=None,top_k_reader=5,top_k_retriever=5):
if filters == None:
return {
"questions": [question],
"top_k_retriever": top_k_retriever,
"top_k_reader": top_k_reader
}
return {
"questions": [question],
"filters": {
"option1":[filters]
},
"top_k_retriever": top_k_retriever,
"top_k_reader": top_k_reader
}
@st.cache(show_spinner=False)
def retrieve_doc(question,filters=None,top_k_reader=5,top_k_retriever=5):
# Query Haystack API
url = API_ENDPOINT +'/models/' + MODEL_ID + "/" + DOC_REQUEST
req = format_request(question,filters,top_k_reader=top_k_reader,top_k_retriever=top_k_retriever)
response_raw = requests.post(url,json=req).json()
# Format response
result = []
answers = response_raw['results'][0]['answers']
for i in range(top_k_reader):
answer = answers[i]['answer']
if answer:
context = '...' + answers[i]['context'] + '...'
meta_name = answers[i]['meta']['name']
relevance = round(answers[i]['probability']*100,2)
result.append({'context':context,'answer':answer,'source':meta_name,'relevance':relevance})
return result, response_raw