import pandas as pd from ydata_profiling import ProfileReport import streamlit as st from streamlit_pandas_profiling import st_profile_report from langchain.llms.openai import OpenAI #from langchain.agents import create_csv_agent from langchain_experimental.agents import create_csv_agent from langchain.agents.agent_types import AgentType import time import os def main(): st.sidebar.title("App Options") option = st.sidebar.selectbox("Choose an option", ["Data Profiling", "Personal Assistant"]) if option == "Data Profiling": uploaded_file = st.file_uploader("Upload CSV file", type=["csv"]) if uploaded_file is None: st.warning("Please upload a CSV file.") st.stop() # Stop execution if no file uploaded else: data_profiling(uploaded_file) elif option == "Personal Assistant": personal_assistant() def data_profiling(uploaded_file): st.title("Data Profiling App") # Load the data df = pd.read_csv(uploaded_file) # Display the dataframe st.dataframe(df) # Generate and display the data profile report pr = ProfileReport(df, title="Report") st_profile_report(pr) def personal_assistant(): st.sidebar.title("OpenAI Settings") openai_api_key = st.sidebar.text_input("Enter your OpenAI API Key", type="password") os.environ['OPENAI_API_KEY'] = openai_api_key st.title("Personal Assistant") st.text("A BR CREATION") st.image("chatbot.jpg", caption="Chatbot", width=178) uploaded_file = st.file_uploader("Upload CSV file", type=["csv"]) if uploaded_file is None: st.warning("Please upload a CSV file.") st.stop() # Stop execution if no file uploaded llm = OpenAI(temperature=0) agent = create_csv_agent( llm, uploaded_file, verbose=False, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) query = st.text_input("What would you like to know?") if st.button("Ask"): if query.strip() == "": st.warning("Please enter a query.") else: start = time.time() answer = agent.run(query) end = time.time() st.write(answer) st.write(f"Answer (took {round(end - start, 2)} s.)") if __name__ == "__main__": main()