Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
from utils import load_data, get_gemini_embedding | |
def process_document(doc, question): | |
"""Process document and return response to question.""" | |
temp_path = os.path.join("data", doc.name) | |
try: | |
with open(temp_path, "wb") as f: | |
f.write(doc.getbuffer()) | |
documents = load_data("data") | |
query_engine = get_gemini_embedding(documents) | |
return query_engine.query(question) | |
finally: | |
if os.path.exists(temp_path): | |
os.remove(temp_path) | |
def main(): | |
st.set_page_config(page_title="Document Q&A Assistant") | |
st.title("Smart Document Question-Answering") | |
# Create data directory if not exists | |
os.makedirs("data", exist_ok=True) | |
doc = st.file_uploader( | |
"Upload your document (PDF, CSV, or TXT)", type=["pdf", "csv", "txt"] | |
) | |
question = st.text_input( | |
"What would you like to know about your document?", | |
placeholder="Enter your question here...", | |
) | |
if st.button("Get Answer"): | |
if not doc: | |
st.error("Please upload a document first.") | |
return | |
if not question: | |
st.error("Please enter a question.") | |
return | |
with st.spinner("Analyzing your document..."): | |
response = process_document(doc, question) | |
st.write(response.response) | |
if __name__ == "__main__": | |
main() | |