Spaces:
Sleeping
Sleeping
import os | |
import streamlit as st | |
from io import StringIO | |
import re | |
import sys | |
from modules.history import ChatHistory | |
from modules.layout import Layout | |
from modules.utils import Utilities | |
from modules.sidebar import Sidebar | |
#To be able to update the changes made to modules in localhost (press r) | |
def reload_module(module_name): | |
import importlib | |
import sys | |
if module_name in sys.modules: | |
importlib.reload(sys.modules[module_name]) | |
return sys.modules[module_name] | |
history_module = reload_module('modules.history') | |
layout_module = reload_module('modules.layout') | |
utils_module = reload_module('modules.utils') | |
sidebar_module = reload_module('modules.sidebar') | |
ChatHistory = history_module.ChatHistory | |
Layout = layout_module.Layout | |
Utilities = utils_module.Utilities | |
Sidebar = sidebar_module.Sidebar | |
st.set_page_config(layout="wide", page_icon="💬", page_title="Robby | Chat-Bot 🤖") | |
# Instantiate the main components | |
layout, sidebar, utils = Layout(), Sidebar(), Utilities() | |
layout.show_header("PDF, TXT, CSV") | |
user_api_key = utils.load_api_key() | |
if not user_api_key: | |
layout.show_api_key_missing() | |
else: | |
os.environ["OPENAI_API_KEY"] = user_api_key | |
uploaded_file = utils.handle_upload(["pdf", "txt", "csv"]) | |
if uploaded_file: | |
# Configure the sidebar | |
sidebar.show_options() | |
sidebar.about() | |
# Initialize chat history | |
history = ChatHistory() | |
try: | |
chatbot = utils.setup_chatbot( | |
uploaded_file, st.session_state["model"], st.session_state["temperature"] | |
) | |
st.session_state["chatbot"] = chatbot | |
if st.session_state["ready"]: | |
# Create containers for chat responses and user prompts | |
response_container, prompt_container = st.container(), st.container() | |
with prompt_container: | |
# Display the prompt form | |
is_ready, user_input = layout.prompt_form() | |
# Initialize the chat history | |
history.initialize(uploaded_file) | |
# Reset the chat history if button clicked | |
if st.session_state["reset_chat"]: | |
history.reset(uploaded_file) | |
if is_ready: | |
# Update the chat history and display the chat messages | |
history.append("user", user_input) | |
old_stdout = sys.stdout | |
sys.stdout = captured_output = StringIO() | |
output = st.session_state["chatbot"].conversational_chat(user_input) | |
sys.stdout = old_stdout | |
history.append("assistant", output) | |
# Clean up the agent's thoughts to remove unwanted characters | |
thoughts = captured_output.getvalue() | |
cleaned_thoughts = re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', thoughts) | |
cleaned_thoughts = re.sub(r'\[1m>', '', cleaned_thoughts) | |
# Display the agent's thoughts | |
with st.expander("Display the agent's thoughts"): | |
st.write(cleaned_thoughts) | |
history.generate_messages(response_container) | |
except Exception as e: | |
st.error(f"Error: {str(e)}") | |