{"repo": "ashleshakadam/utd-jsom-chatbot", "files": {"app.py": {"24261162656c40a012f9dac41db0d2e460a55abb": {"t": 1785674364.311221, "n": 4180, "h": "900b821ca3bebb2f", "c": "import os\nimport streamlit as st\nimport requests\nfrom datetime import datetime\nfrom dotenv import load_dotenv\n\nfrom langchain_community.document_loaders import JSONLoader\nfrom langchain.text_splitter import CharacterTextSplitter\nfrom langchain_community.embeddings import HuggingFaceEmbeddings\nfrom langchain_community.vectorstores import FAISS\nfrom langchain.chains import RetrievalQA\n\n# ==== Load environment variables ====\nload_dotenv()\nOPENROUTER_API_KEY = os.getenv(\"OPENROUTER_API_KEY\")\n\n# ==== Load and preprocess website content ====\nloader = JSONLoader(file_path=\"data/full_site.json\", jq_schema=\".[]\", text_content=True)\ndocuments = loader.load()\n\ntext_splitter = CharacterTextSplitter(chunk_size=800, chunk_overlap=100)\ndocs = text_splitter.split_documents(documents)\n\n# ==== Build embeddings and retriever ====\nembeddings = HuggingFaceEmbeddings(model_name=\"all-MiniLM-L6-v2\")\nvectorstore = FAISS.from_documents(docs, embeddings)\nretriever = vectorstore.as_retriever(search_kwargs={\"k\": 3})\n\n# ==== OpenRouter query ====\ndef query_openrouter(prompt, api_key):\n url = \"https://openrouter.ai/api/v1/chat/completions\"\n headers = {\n \"Authorization\": f\"Bearer {api_key}\",\n \"Content-Type\": \"application/json\",\n \"HTTP-Referer\": \"https://utd-jsom-chatbot.streamlit.app\"\n }\n payload = {\n \"model\": \"mistralai/mistral-7b-instruct\",\n \"messages\": [{\"role\": \"user\", \"content\": prompt}],\n }\n response = requests.post(url, headers=headers, json=payload)\n response.raise_for_status()\n return response.json()[\"choices\"][0][\"message\"][\"content\"]\n\n# ==== Streamlit Page Setup ====\nst.set_page_config(page_title=\"🤖 JSOM Chatbot\", layout=\"wide\")\n\n# ==== Custom CSS for UI polish ====\nst.markdown(\"\"\"\n \n\"\"\", unsafe_allow_html=True)\n\n# ==== Title & Subtitle ====\nst.markdown('