|
import streamlit as st |
|
from streamlit_option_menu import option_menu |
|
from memory import memory_storage |
|
from agent_chain import get_agent_chain |
|
from default_text import default_text4 |
|
from generate_plot import generate_plot, retry_generate_plot |
|
from markup import app_intro, how_use_intro |
|
from modules import replace_default_dataset, save_uploaded_dataset |
|
import pandas as pd |
|
import os |
|
|
|
if 'error' not in st.session_state: |
|
st.session_state['error'] = [] |
|
|
|
def tab1(): |
|
|
|
col1, col2 = st.columns([1, 2]) |
|
with col1: |
|
st.image("image.jpg", use_column_width=True) |
|
with col2: |
|
st.markdown(app_intro(), unsafe_allow_html=True) |
|
st.markdown(how_use_intro(),unsafe_allow_html=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
def tab2(): |
|
|
|
dataset_option = st.radio("Select Dataset Option", ("Default", "Upload")) |
|
|
|
if dataset_option == "Default": |
|
if st.button("Use Default Dataset"): |
|
replace_default_dataset() |
|
else: |
|
uploaded_file = st.file_uploader("Upload a CSV file", type=["csv"]) |
|
if uploaded_file: |
|
save_uploaded_dataset(uploaded_file) |
|
|
|
st.header("🗣️ Chat") |
|
|
|
for i, msg in enumerate(memory_storage.messages): |
|
name = "user" if i % 2 == 0 else "assistant" |
|
st.chat_message(name).markdown(msg.content) |
|
|
|
if user_input := st.chat_input("User Input"): |
|
|
|
with st.chat_message("user"): |
|
st.markdown(user_input) |
|
|
|
with st.spinner("Generating Response..."): |
|
|
|
with st.chat_message("assistant"): |
|
zeroshot_agent_chain = get_agent_chain() |
|
response = zeroshot_agent_chain({"input": user_input}) |
|
|
|
answer = response['output'] |
|
st.markdown(answer) |
|
|
|
|
|
if st.sidebar.button("Clear Chat History"): |
|
memory_storage.clear() |
|
|
|
|
|
def tab4(): |
|
|
|
try: |
|
df = pd.read_csv("dataset.csv") |
|
|
|
st.header("Dataset Content") |
|
st.dataframe(df) |
|
|
|
except FileNotFoundError: |
|
st.error("File 'dataset.csv' not found in the current directory.") |
|
|
|
except pd.errors.EmptyDataError: |
|
st.error("File 'dataset.csv' is empty.") |
|
|
|
except pd.errors.ParserError: |
|
st.error("File 'dataset.csv' could not be parsed as a CSV file.") |
|
|
|
def main(): |
|
st.set_page_config(page_title="NaturalViz", page_icon=":memo:", layout="wide") |
|
|
|
|
|
|
|
|
|
tabs = ["Intro","Chat", "View Dataset"] |
|
|
|
with st.sidebar: |
|
|
|
current_tab = option_menu("Select a Tab", tabs, menu_icon="cast") |
|
|
|
tab_functions = { |
|
"Intro": tab1, |
|
"Chat": tab2, |
|
"View Dataset": tab4, |
|
} |
|
|
|
if current_tab in tab_functions: |
|
tab_functions[current_tab]() |
|
|
|
if __name__ == "__main__": |
|
main() |