haystack/ui/utils.py
Markus Paff cf8a622e35
Streamlit UI Evaluation mode (#920)
* first running version of eval mode

* restructuring, new naming of elements and testing

* add new files to Docker, how to start with Haystack reference, remove not needed dependencies

* Add latest docstring and tutorial changes

* merged changes

* fixing bugs after breaking changes from last release

* newser version of states in streamlit, more docs for eval mode, eval file as env virable

* eval file as env variable

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2021-04-22 17:30:17 +02:00

44 lines
1.7 KiB
Python

import os
import requests
import streamlit as st
API_ENDPOINT = os.getenv("API_ENDPOINT", "http://localhost:8000")
DOC_REQUEST = "query"
DOC_FEEDBACK = "feedback"
@st.cache(show_spinner=False)
def retrieve_doc(query,filters=None,top_k_reader=5,top_k_retriever=5):
# Query Haystack API
url = f"{API_ENDPOINT}/{DOC_REQUEST}"
req = {"query": query, "filters": filters, "top_k_retriever": top_k_retriever, "top_k_reader": top_k_reader}
response_raw = requests.post(url,json=req).json()
# Format response
result = []
answers = response_raw["answers"]
for i in range(len(answers)):
answer = answers[i]['answer']
if answer:
context = '...' + answers[i]['context'] + '...'
meta_name = answers[i]['meta']['name']
relevance = round(answers[i]['probability']*100,2)
document_id = answers[i]['document_id']
offset_start_in_doc = answers[i]['offset_start_in_doc']
result.append({'context':context,'answer':answer,'source':meta_name,'relevance':relevance, 'document_id':document_id,'offset_start_in_doc':offset_start_in_doc})
return result, response_raw
def feedback_doc(question,is_correct_answer,document_id,model_id,is_correct_document,answer,offset_start_in_doc):
# Feedback Haystack API
url = f"{API_ENDPOINT}/{DOC_FEEDBACK}"
req = {
"question": question,
"is_correct_answer": is_correct_answer,
"document_id": document_id,
"model_id": model_id,
"is_correct_document": is_correct_document,
"answer": answer,
"offset_start_in_doc": offset_start_in_doc
}
response_raw = requests.post(url,json=req).json()
return response_raw