import streamlit as st import pandas as pd from pandasai import PandasAI from pandasai.llm.openai import OpenAI import matplotlib.pyplot as plt # from pandasai import SmartDataframe from pandasai import SmartDataframe import os st.title("CarDekho.com Gen AI Chatbot Q&A PoC") if "openai_key" not in st.session_state: with st.form("API key"): key = st.text_input("OpenAI Key", value="", type="password") if st.form_submit_button("Submit"): st.session_state.openai_key = key st.session_state.prompt_history = [] st.session_state.df = None st.success('Saved API key for this session.') if "openai_key" in st.session_state: if st.session_state.df is None: uploaded_file = st.file_uploader( "Choose a CSV file. This should be in long format (one datapoint per row).", type="csv", ) if uploaded_file is not None: df = pd.read_csv(uploaded_file) llm = OpenAI(api_token=st.session_state.openai_key) df = SmartDataframe(df, config={"llm": llm}) st.session_state.df = df with st.form("Question"): question = st.text_input("Question", value="", type="default") submitted = st.form_submit_button("Submit") if submitted: with st.spinner(): llm = OpenAI(api_token=st.session_state.openai_key) pandas_ai = PandasAI(llm,enable_cache=False) x = pandas_ai.run(st.session_state.df, prompt=question) if os.path.isfile('temp_chart.png'): im = plt.imread('temp_chart.png') st.image(im) os.remove('temp_chart.png') if x is not None: st.write(x) st.session_state.prompt_history.append(question) if st.session_state.df is not None: st.subheader("Current dataframe:") st.write(st.session_state.df) st.subheader("Prompt history:") st.write(st.session_state.prompt_history) if st.button("Clear"): st.session_state.prompt_history = [] st.session_state.df = None