Satyam0077 commited on
Commit
69facc4
Β·
verified Β·
1 Parent(s): c879320

Update streamlit_app.py

Browse files
Files changed (1) hide show
  1. streamlit_app.py +59 -36
streamlit_app.py CHANGED
@@ -1,70 +1,93 @@
1
- import sys, os
 
2
  import streamlit as st
3
 
4
- # ---- Ensure root dir is always in path ----
5
- ROOT_DIR = os.path.abspath(os.path.dirname(__file__))
6
  if ROOT_DIR not in sys.path:
7
- sys.path.append(ROOT_DIR)
8
 
9
- # Local imports (flat repo)
10
- from main import run_pipeline
11
- from rag_node import load_pdf, rag_answer
12
- from weather_node import fetch_weather
13
- from decision_node import decide_and_execute
14
 
15
- st.set_page_config(page_title="πŸ€– AI Agent: Weather + PDF Q&A", page_icon="πŸ€–", layout="wide")
 
 
 
 
 
16
 
17
  st.title("πŸ€– AI Agent: Weather + PDF Q&A")
18
 
19
- # Sidebar: Mode selection
20
- mode = st.sidebar.radio("Choose a mode:", ["🌦️ Weather", "πŸ“„ PDF Q&A", "πŸ€– Combined (Auto Detect)"])
 
 
 
21
 
22
- # 🌦️ Weather Mode
23
  if mode == "🌦️ Weather":
24
  st.header("🌦️ Weather Queries")
25
- city = st.text_input("Enter a city name:")
 
 
26
  if st.button("Get Weather"):
27
- if city:
28
- result = fetch_weather(city)
 
29
  st.success(result)
30
  else:
31
  st.warning("Please enter a city name.")
32
 
33
- # πŸ“„ PDF Mode
34
  elif mode == "πŸ“„ PDF Q&A":
35
  st.header("πŸ“„ Ask Questions from PDF")
36
 
37
  if "pdf_loaded" not in st.session_state:
38
  st.session_state.pdf_loaded = False
39
 
40
- uploaded_pdf = st.file_uploader("Upload a PDF", type=["pdf"])
 
 
 
 
41
  if uploaded_pdf:
42
  os.makedirs("data", exist_ok=True)
43
- with open("data/sample.pdf", "wb") as f:
 
 
44
  f.write(uploaded_pdf.read())
45
- load_pdf("data/sample.pdf")
 
 
 
46
  st.session_state.pdf_loaded = True
47
- st.success("βœ… PDF loaded into Qdrant!")
 
 
48
 
49
- query = st.text_input("Ask something from the PDF:")
50
  if st.button("Search PDF"):
51
- if st.session_state.pdf_loaded:
52
- if query:
53
- answer = rag_answer(query)
54
- st.info(f"πŸ“„ Answer: {answer}")
55
- else:
56
- st.warning("Please enter a query.")
57
  else:
58
- st.warning("Upload and load a PDF first!")
 
 
59
 
60
- # πŸ€– Combined Mode (Decision Node + Pipeline)
61
  elif mode == "πŸ€– Combined (Auto Detect)":
62
  st.header("πŸ€– Combined Mode (Weather + PDF)")
63
- query = st.text_input("Ask me anything:")
 
 
64
  if st.button("Ask Agent"):
65
- if query:
66
- with st.spinner("Processing..."):
67
- answer = run_pipeline(query) # βœ… goes through pipeline (LangGraph + LangSmith)
68
- st.success(answer)
69
- else:
70
  st.warning("Please enter a query.")
 
 
 
 
 
1
+ import sys
2
+ import os
3
  import streamlit as st
4
 
5
+ # ---- Ensure project root is always in PYTHONPATH ----
6
+ ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
7
  if ROOT_DIR not in sys.path:
8
+ sys.path.insert(0, ROOT_DIR)
9
 
10
+ # ---- Local imports ----
11
+ from app.main import run_pipeline
12
+ from app.rag_node import load_pdf, rag_answer
13
+ from app.weather_node import fetch_weather
 
14
 
15
+ # ---- Page config ----
16
+ st.set_page_config(
17
+ page_title="πŸ€– AI Agent: Weather + PDF Q&A",
18
+ page_icon="πŸ€–",
19
+ layout="wide"
20
+ )
21
 
22
  st.title("πŸ€– AI Agent: Weather + PDF Q&A")
23
 
24
+ # ---- Sidebar ----
25
+ mode = st.sidebar.radio(
26
+ "Choose a mode:",
27
+ ["🌦️ Weather", "πŸ“„ PDF Q&A", "πŸ€– Combined (Auto Detect)"]
28
+ )
29
 
30
+ # ===================== WEATHER MODE =====================
31
  if mode == "🌦️ Weather":
32
  st.header("🌦️ Weather Queries")
33
+
34
+ city = st.text_input("Enter a city name")
35
+
36
  if st.button("Get Weather"):
37
+ if city.strip():
38
+ with st.spinner("Fetching weather..."):
39
+ result = fetch_weather(city.strip())
40
  st.success(result)
41
  else:
42
  st.warning("Please enter a city name.")
43
 
44
+ # ===================== PDF MODE =====================
45
  elif mode == "πŸ“„ PDF Q&A":
46
  st.header("πŸ“„ Ask Questions from PDF")
47
 
48
  if "pdf_loaded" not in st.session_state:
49
  st.session_state.pdf_loaded = False
50
 
51
+ uploaded_pdf = st.file_uploader(
52
+ "Upload a PDF",
53
+ type=["pdf"]
54
+ )
55
+
56
  if uploaded_pdf:
57
  os.makedirs("data", exist_ok=True)
58
+ pdf_path = "data/sample.pdf"
59
+
60
+ with open(pdf_path, "wb") as f:
61
  f.write(uploaded_pdf.read())
62
+
63
+ with st.spinner("Indexing PDF into vector database..."):
64
+ load_pdf(pdf_path)
65
+
66
  st.session_state.pdf_loaded = True
67
+ st.success("βœ… PDF loaded and indexed successfully!")
68
+
69
+ query = st.text_input("Ask something from the PDF")
70
 
 
71
  if st.button("Search PDF"):
72
+ if not st.session_state.pdf_loaded:
73
+ st.warning("Please upload and load a PDF first.")
74
+ elif not query.strip():
75
+ st.warning("Please enter a query.")
 
 
76
  else:
77
+ with st.spinner("Searching document..."):
78
+ answer = rag_answer(query.strip())
79
+ st.info(answer)
80
 
81
+ # ===================== COMBINED MODE =====================
82
  elif mode == "πŸ€– Combined (Auto Detect)":
83
  st.header("πŸ€– Combined Mode (Weather + PDF)")
84
+
85
+ query = st.text_input("Ask me anything")
86
+
87
  if st.button("Ask Agent"):
88
+ if not query.strip():
 
 
 
 
89
  st.warning("Please enter a query.")
90
+ else:
91
+ with st.spinner("Agent is thinking..."):
92
+ answer = run_pipeline(query.strip())
93
+ st.success(answer)