AI-Legal-Assistant / app_ui.py
tejash300's picture
Create app_ui.py
0042cc6 verified
import streamlit as st
import requests
import tempfile
# βœ… Hugging Face API Endpoints (Using Relative URLs)
BACKEND_URL = "https://tejash300-ai-legal-assistant.hf.space"
ANALYZE_API_URL = f"{BACKEND_URL}/analyze_legal_document"
CHATBOT_API_URL = f"{BACKEND_URL}/chatbot"
VIDEO_ANALYZE_API_URL = f"{BACKEND_URL}/analyze_video"
# βœ… Configure Streamlit
st.set_page_config(page_title="AI-Powered Legal Assistant", layout="wide")
# βœ… Sidebar Navigation
menu = st.sidebar.radio("πŸ“Œ Navigation", ["🏠 Home", "πŸ“Š Legal Document Analyzer", "πŸŽ₯ Video Analyzer", "πŸ€– Legal Chatbot"])
if menu == "🏠 Home":
st.title("πŸ“œ AI-Powered Legal & Video Assistant")
st.markdown("πŸ‘‹ Welcome to your AI-powered legal and video assistant! Choose an option from the sidebar.")
elif menu == "πŸ“Š Legal Document Analyzer":
st.title("πŸ“‘ Legal Document Analyzer")
uploaded_file = st.file_uploader("πŸ“‚ Upload a PDF document", type=["pdf"])
if uploaded_file:
st.success("βœ… File uploaded successfully! Analyzing...")
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file:
temp_file.write(uploaded_file.getbuffer())
temp_file_path = temp_file.name
files = {"file": open(temp_file_path, "rb")}
try:
response = requests.post(ANALYZE_API_URL, files=files, timeout=120)
response.raise_for_status()
result = response.json()
# πŸ“„ Document Summary
st.subheader("πŸ“‘ Document Summary")
st.write(result.get("summary", "No summary available."))
except requests.exceptions.RequestException as e:
st.error(f"❌ API Error: {e}")
elif menu == "πŸŽ₯ Video Analyzer":
st.title("🎬 Video Content Analyzer")
uploaded_video = st.file_uploader("πŸ“‚ Upload a Video File", type=["mp4", "avi", "mov"])
if uploaded_video:
st.success("βœ… Video uploaded successfully! Analyzing...")
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as temp_file:
temp_file.write(uploaded_video.getbuffer())
temp_file_path = temp_file.name
files = {"file": open(temp_file_path, "rb")}
try:
response = requests.post(VIDEO_ANALYZE_API_URL, files=files, timeout=180)
response.raise_for_status()
result = response.json()
if result.get("status") == "success":
# πŸ“„ Video Transcript
st.subheader("πŸ“œ Video Transcript")
st.write(result.get("transcript", "No transcript available."))
else:
st.warning("⚠️ No valid data returned from the video analysis API.")
except requests.exceptions.RequestException as e:
st.error(f"❌ API Error: {e}")
elif menu == "πŸ€– Legal Chatbot":
st.title("πŸ€– AI Legal Chatbot")
st.write("πŸ’‘ Ask any legal question and get AI-powered responses!")
user_query = st.text_input("πŸ’¬ Ask a legal question:")
if st.button("πŸ” Get Answer"):
if user_query.strip():
st.info("⏳ Processing your query...")
try:
response = requests.post(CHATBOT_API_URL, json={"query": user_query}, timeout=60)
response.raise_for_status()
chatbot_response = response.json().get("answer", "No response available.")
st.subheader("πŸ’‘ AI's Response")
st.success(chatbot_response)
except requests.exceptions.RequestException as e:
st.error(f"❌ API Error: {e}")
else:
st.warning("⚠️ Please enter a question before submitting.")