mirror of
				https://github.com/deepset-ai/haystack.git
				synced 2025-10-31 09:49:48 +00:00 
			
		
		
		
	 caba590576
			
		
	
	
		caba590576
		
			
		
	
	
	
	
		
			
			* fix answer format in ui * Add latest docstring and tutorial changes Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| 
 | |
| import logging
 | |
| import requests
 | |
| import streamlit as st
 | |
| 
 | |
| API_ENDPOINT = os.getenv("API_ENDPOINT", "http://localhost:8000")
 | |
| STATUS = "initialized"
 | |
| DOC_REQUEST = "query"
 | |
| DOC_FEEDBACK = "feedback"
 | |
| DOC_UPLOAD = "file-upload"
 | |
| 
 | |
| 
 | |
| def haystack_is_ready():
 | |
|     url = f"{API_ENDPOINT}/{STATUS}"
 | |
|     try:
 | |
|         if requests.get(url).json():
 | |
|             return True
 | |
|     except Exception as e:
 | |
|         logging.exception(e)
 | |
|     return False
 | |
| 
 | |
| 
 | |
| @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}"
 | |
|     params = {"filters": filters, "ESRetriever": {"top_k": top_k_retriever}, "Reader": {"top_k": top_k_reader}}
 | |
|     req = {"query": query, "params": params}
 | |
|     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_text = answer["answer"]
 | |
|         if answer_text:
 | |
|             result.append(
 | |
|                 {
 | |
|                     "context": "..." + answer["context"] + "...",
 | |
|                     "answer": answer_text,
 | |
|                     "source": answer["meta"]["name"],
 | |
|                     "relevance": round(answer["score"] * 100, 2),
 | |
|                     "document_id": answer["document_id"],
 | |
|                     "offset_start_in_doc": answer["offsets_in_document"][0]["start"],
 | |
|                 }
 | |
|             )
 | |
|     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}"
 | |
|     #TODO adjust after Label refactoring
 | |
|     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
 | |
| 
 | |
| 
 | |
| def upload_doc(file):
 | |
|     url = f"{API_ENDPOINT}/{DOC_UPLOAD}"
 | |
|     files = [("files", file)]
 | |
|     response_raw = requests.post(url, files=files).json()
 | |
|     return response_raw
 |