# =============================== # 📦 Install dependencies (Only for Colab) # =============================== # !pip install streamlit faiss-cpu PyPDF2 sentence-transformers # =============================== # 📄 Imports # =============================== import os import numpy as np import PyPDF2 import streamlit as st from sentence_transformers import SentenceTransformer import faiss # ✅ Set Streamlit page configuration at the top st.set_page_config( page_title="📅 Exam Schedule Chatbot", page_icon="🤖", layout="wide" ) # =============================== # 🎨 Styling # =============================== st.markdown(""" """, unsafe_allow_html=True) # =============================== # 🧠 Load PDF & Extract Text # =============================== def extract_text_from_pdf(pdf_file): reader = PyPDF2.PdfReader(pdf_file) text = '' for page in reader.pages: content = page.extract_text() if content: text += content return text # =============================== # 🧩 Embed Text and Create FAISS Index # =============================== def embed_and_index(text, model): chunks = text.split("\n") docs = [chunk.strip() for chunk in chunks if chunk.strip()] vectors = model.encode(docs, convert_to_tensor=False) index = faiss.IndexFlatL2(len(vectors[0])) index.add(np.array(vectors)) return docs, index # =============================== # 🤖 Query with Context # =============================== def query_with_context(question, docs, index, model): question_vec = model.encode([question], convert_to_tensor=False) D, I = index.search(np.array(question_vec), k=3) context = "\n".join([docs[i] for i in I[0]]) return f"📌 **Relevant Information:**\n\n{context}" # =============================== # 💬 UI # =============================== st.markdown('