Spaces:
Sleeping
Sleeping
File size: 2,371 Bytes
1d9f240 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import streamlit as st
import requests
# Set the FastAPI backend URL
FASTAPI_URL = "http://localhost:8000"
st.title("Smart Research Assistant")
# Document Upload Section
uploaded_file = st.file_uploader("Upload a PDF or TXT document", type=["pdf", "txt"])
if uploaded_file:
files = {"file": uploaded_file}
response = requests.post(f"{FASTAPI_URL}/upload-doc", files=files)
if response.status_code == 200:
result = response.json()
st.success(result["message"])
file_id = result["file_id"]
# Here you would also call a summary endpoint if implemented
# For demo, assume summary is returned in the upload response
# st.write("Summary: ", result.get("summary", "Summary not available"))
else:
st.error(f"Error: {response.json().get('detail', 'Unknown error')}")
# List Documents (optional)
if st.button("List Documents"):
response = requests.get(f"{FASTAPI_URL}/list-docs")
if response.status_code == 200:
documents = response.json()
st.write("Available Documents:")
for doc in documents:
st.write(f"- {doc['filename']} (ID: {doc['file_id']})")
else:
st.error("Failed to list documents")
# Interaction Modes
mode = st.radio("Choose Mode", ["Ask Anything", "Challenge Me"])
if mode == "Ask Anything":
question = st.text_input("Ask a question about the document")
if question and st.button("Submit"):
payload = {
"question": question,
"session_id": "user123", # Replace with actual session management
"model": "default" # Replace with your model selection
}
response = requests.post(f"{FASTAPI_URL}/chat", json=payload)
if response.status_code == 200:
result = response.json()
st.write("Answer:", result["answer"])
# If your backend returns a source snippet, display it:
# st.write("Source:", result.get("source", ""))
else:
st.error("Failed to get answer")
# elif mode == "Challenge Me":
# if st.button("Generate Challenge Questions"):
# # Assume your backend has a `/generate-questions` endpoint
# # response = requests.post(f"{FASTAPI_URL}/generate-questions", json={"file_id": file_id})
# # if response.status_code == 200:
# # questions
|