chatbot_v2.1 / app.py
NightPassenger's picture
Upload 8 files
60e4d0e verified
import os
import time
import streamlit as st
from qa_loader import load_qa_and_create_vectorstore
from rag_chain import generate_response
from dotenv import load_dotenv
# πŸ”Ή Load environment variables
load_dotenv()
# πŸ”Ή Streamlit Page Configuration
st.set_page_config(page_title="Vistula University AI Assistant", layout="centered")
# πŸ”Ή Title and Description
st.title("πŸ“š Vistula University AI Assistant")
st.write("πŸš€ Ask me anything about Vistula University!")
# πŸ”Ή Retrieve Data (Cached for Performance)
@st.cache_resource
def get_retriever():
return load_qa_and_create_vectorstore()
retriever = get_retriever()
if isinstance(retriever, tuple):
retriever = retriever[0]
# πŸ”Ή Start or Load Chat History
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
# πŸ”Ή Display Chat History
st.write("### πŸ—‚οΈ Chat History")
for entry in st.session_state.chat_history:
with st.chat_message("user"):
st.write(entry["question"])
with st.chat_message("assistant"):
st.write(entry["answer"])
# πŸ”Ή User Input
query = st.chat_input("Ask your question about Vistula University!")
# πŸ”Ή Process When User Submits a Question
if query:
with st.spinner("πŸ€– Thinking..."):
response = generate_response(retriever, query)
# πŸ”Ή Add to Chat History
st.session_state.chat_history.append({
"question": query,
"answer": response
})
# πŸ”Ή Display User Question and AI Response
with st.chat_message("user"):
st.write(query)
with st.chat_message("assistant"):
placeholder = st.empty()
current_text = ""
# Typing Effect
for word in response.split():
current_text += word + " "
placeholder.write(current_text)
time.sleep(0.05)