Spaces:
Sleeping
Sleeping
| 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 |