Spaces:
Sleeping
Sleeping
import streamlit as st | |
from node import LibrarySystem | |
from helper import response_generator | |
from helper import send_message | |
library = LibrarySystem() | |
# Streamed response emulator | |
st.set_page_config( | |
page_title="π€π¬ Ana", | |
layout="wide" | |
) | |
st.warning('This is a prototype of a chatbot for Group 28 main algorithm. It is still under development even though the main logic has been completed and run inside terminal', icon="β οΈ") | |
st.caption("A Project done by Group 28") | |
# Initialize chat history | |
if "messages" not in st.session_state: | |
st.session_state.messages = [{"role": "assistant", "content": "Let's start chatting! π. You can start with hello or hi"}] | |
if 'app_state' not in st.session_state: | |
st.session_state['app_state'] = 'initial' | |
if 'book' not in st.session_state: | |
st.session_state['book'] = None | |
if 'user' not in st.session_state: | |
st.session_state['user'] = '' | |
with st.sidebar: | |
st.title('π€π¬ Ana') | |
st.markdown('π Ana is a library management and book recommendation app designed to enhance accessibility and convenience.') | |
st.markdown('Convenient Access β Users can interact with Ana anytime, anywhere, to access library services from their comfort zones.') | |
st.markdown('Smart Book Borrowing β Users can reserve books and pick them up at their convenience, eliminating scheduling conflicts.') | |
st.markdown('Personalized Recommendations β The system suggests books based on user preferences, enhancing the reading experience.') | |
# Display chat messages from history on app rerun | |
for message in st.session_state.messages: | |
with st.chat_message(message["role"]): | |
st.markdown(message["content"]) | |
# Accept user input | |
if prompt := st.chat_input("What is up?"): | |
#initialize library system object | |
# Add user message to chat history | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
# Display user message in chat message container | |
with st.chat_message("user"): | |
st.markdown(prompt) | |
# Display assistant response in chat message container | |
with st.chat_message("assistant"): | |
# with st.spinner("Thinking..."): | |
if prompt.lower() in ["hi", "hello", "hey", "/start"]: | |
data = library.startMessage() | |
elif st.session_state['app_state'] == 'welcome' : | |
data = library.login_or_register(prompt) | |
elif st.session_state['app_state'] == 'login_search': | |
data = library.loginSearch(prompt) | |
elif st.session_state['app_state'] == 'waiting_for_name' or st.session_state['app_state'] == 'waiting_for_id' : | |
data = library.handle_registration_input(prompt) | |
elif st.session_state['app_state'] == 'default': | |
data = library.main_menu(prompt) | |
elif st.session_state['app_state'] == 'search': | |
data = library.fetchbook(prompt) | |
elif st.session_state['app_state'] == 'borrow': | |
data = library.hasborrowed(st.session_state['book'], prompt) | |
elif st.session_state['app_state'] == 'borrowing': | |
library.borrow_book() | |
else: | |
send_message("Invalid input. Please try again.") | |
# Add assistant response to chat history |