aamirhameed commited on
Commit
4e0fa6b
Β·
verified Β·
1 Parent(s): 5d56f39

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -62
app.py CHANGED
@@ -1,74 +1,41 @@
1
- import streamlit as st
2
  import os
3
- import tempfile
4
- from pathlib import Path
5
- from knowledge_engine import KnowledgeManager # Your class
6
-
7
- # Determine if running on HF Spaces or locally
8
- IS_HF_SPACES = os.getenv("SPACE_ID") is not None
9
-
10
- # Set knowledge base directory depending on environment
11
- if IS_HF_SPACES:
12
- KNOWLEDGE_DIR = Path(tempfile.gettempdir()) / "knowledge_base"
13
- else:
14
- KNOWLEDGE_DIR = Path("knowledge_base")
15
-
16
- KNOWLEDGE_DIR.mkdir(parents=True, exist_ok=True)
17
 
18
  st.set_page_config(
19
- page_title="Simple Knowledge Assistant",
20
- page_icon="🧠",
21
  layout="centered",
22
- initial_sidebar_state="collapsed",
 
23
  )
24
 
25
- def check_hf_token():
26
- """Check if HuggingFace API token is set in environment variables."""
27
- return os.getenv("HUGGINGFACEHUB_API_TOKEN") or os.getenv("HF_TOKEN")
28
 
29
- def initialize_knowledge_manager():
30
- """Initialize KnowledgeManager and handle errors."""
31
- if "knowledge_manager" not in st.session_state:
32
- token = check_hf_token()
33
- if not token:
34
- st.error("❌ HuggingFace API token not found.\n\n"
35
- "Set HUGGINGFACEHUB_API_TOKEN or HF_TOKEN environment variable.")
36
- st.stop()
 
37
 
38
- with st.spinner("πŸ”„ Initializing Knowledge Manager..."):
39
- try:
40
- km = KnowledgeManager()
41
- if not hasattr(km, "embeddings") or not km.embeddings:
42
- st.error("❌ Embeddings failed to initialize.")
43
- st.stop()
44
- st.session_state.knowledge_manager = km
45
- st.success("βœ… Knowledge Manager initialized successfully!")
46
- except Exception as e:
47
- st.error(f"❌ Error initializing Knowledge Manager:\n{e}")
48
- st.stop()
49
 
50
- # Initialize KnowledgeManager once
51
- initialize_knowledge_manager()
52
 
53
- km = st.session_state.get("knowledge_manager")
 
 
54
 
55
- # If KnowledgeManager is initialized, show status and simple query input
56
- if km:
57
- st.info("πŸ€– Model & knowledge loaded and ready.")
58
-
59
- # Show knowledge summary if available
60
- if hasattr(km, "get_knowledge_summary"):
61
- summary = km.get_knowledge_summary()
62
- st.markdown(f"**Knowledge Summary:** {summary}")
63
 
64
- # Simple input to ask a question and get an answer (assuming km has an 'ask' method)
65
- question = st.text_input("Ask something from the knowledge base:")
66
- if question:
67
- with st.spinner("🧠 Thinking..."):
68
- try:
69
- answer = km.ask(question) # Replace with your actual query method
70
- st.markdown(f"**Answer:** {answer}")
71
- except Exception as e:
72
- st.error(f"❌ Failed to get answer: {e}")
73
- else:
74
- st.warning("Knowledge Manager is not initialized yet.")
 
 
1
  import os
2
+ import streamlit as st
3
+ from knowledge_manager import KnowledgeManager
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  st.set_page_config(
6
+ page_title="Sirraya xBrain - LangChain QA Assistant",
 
7
  layout="centered",
8
+ page_icon="🧠",
9
+ initial_sidebar_state="expanded",
10
  )
11
 
12
+ st.title("🧠 Sirraya xBrain β€” Intelligent QA Assistant")
 
 
13
 
14
+ if "km" not in st.session_state:
15
+ with st.spinner("Initializing knowledge base and LLM..."):
16
+ try:
17
+ st.session_state.km = KnowledgeManager()
18
+ st.success("βœ… Knowledge engine initialized successfully!")
19
+ st.info(st.session_state.km.get_knowledge_summary())
20
+ except Exception as e:
21
+ st.error(f"❌ Failed to initialize system: {e}")
22
+ st.session_state.km = None
23
 
24
+ if st.session_state.km is None:
25
+ st.warning("Knowledge base not loaded or failed to initialize.")
26
+ st.stop()
 
 
 
 
 
 
 
 
27
 
28
+ question = st.text_input("Ask a question about the knowledge base:", "")
 
29
 
30
+ if question:
31
+ with st.spinner("Generating answer..."):
32
+ answer, sources = st.session_state.km.query(question)
33
 
34
+ st.markdown("### Answer:")
35
+ st.write(answer)
 
 
 
 
 
 
36
 
37
+ if sources:
38
+ with st.expander("πŸ“š Source documents"):
39
+ for i, src in enumerate(sources, 1):
40
+ st.write(f"Source {i}:")
41
+ st.write(src)