Spaces:
Build error
Build error
| import os | |
| from dotenv import load_dotenv | |
| from io import BytesIO | |
| from io import StringIO | |
| import sys | |
| import re | |
| from langchain.agents import create_csv_agent | |
| from src.modules.history import ChatHistory | |
| from src.modules.layout import Layout | |
| from src.modules.utils import Utilities | |
| from src.modules.sidebar import Sidebar | |
| import streamlit as st | |
| from langchain.embeddings.openai import OpenAIEmbeddings | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.chains import ConversationalRetrievalChain | |
| from langchain.vectorstores import FAISS | |
| from json2table import convert | |
| # To be able to update the changes made to modules in localhost, | |
| # you can press the "r" key on the localhost page to refresh and reflect the changes made to the module files. | |
| 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('src.modules.history') | |
| layout_module = reload_module('src.modules.layout') | |
| utils_module = reload_module('src.modules.utils') | |
| sidebar_module = reload_module('src.modules.sidebar') | |
| ChatHistory = history_module.ChatHistory | |
| Layout = layout_module.Layout | |
| Utilities = utils_module.Utilities | |
| Sidebar = sidebar_module.Sidebar | |
| def init(): | |
| load_dotenv() | |
| st.set_page_config(layout="wide", page_icon="💬", page_title="ChatBot-Legger") | |
| def main(): | |
| init() | |
| layout, sidebar, utils = Layout(), Sidebar(), Utilities() | |
| sidebar.show_logo('assets/Images/colleen-logo.png') | |
| layout.show_header_txt() | |
| 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_txt() | |
| uploaded_file = utils.handle_upload_ledger() | |
| if uploaded_file: | |
| history = ChatHistory() | |
| sidebar.show_options() | |
| uploaded_file_content = StringIO(uploaded_file.getvalue().decode("utf-8")) | |
| string_data = uploaded_file_content.read() | |
| # st.write(string_data) | |
| try: | |
| chatbot = utils.setup_chatbot_ledger( | |
| uploaded_file, st.session_state["model"], st.session_state["temperature"] | |
| ) | |
| # st.write(chatbot) | |
| st.session_state["chatbot"] = chatbot | |
| st.session_state['agent'] = chatbot | |
| if st.session_state["ready"]: | |
| response_container, prompt_container = st.container(), st.container() | |
| with prompt_container: | |
| is_ready, user_input = layout.prompt_form() | |
| history.initialize(uploaded_file) | |
| if st.session_state["reset_chat"]: | |
| history.reset(uploaded_file) | |
| if is_ready: | |
| history.append("user", user_input) | |
| output = st.session_state["chatbot"].csv_agent(user_input) | |
| # st.text(sys.stdout) | |
| # st.text(StringIO.getvalue()) | |
| old_stdout = sys.stdout | |
| sys.stdout = captured_output = StringIO() | |
| sys.stdout = old_stdout | |
| thoughts = captured_output.getvalue() | |
| # st.text(old_stdout) | |
| # st.text(captured_output) | |
| st.text('thoughts: '+thoughts) | |
| history.append("assistant", output) | |
| history.generate_messages(response_container) | |
| except Exception as e: | |
| st.error(f"Error: {str(e)}") | |
| sidebar.about() | |
| if __name__ == "__main__": | |
| main() | |