DrishtiSharma's picture
Create app.py
b405caf verified
raw
history blame
2.03 kB
import streamlit as st
import pandas as pd
import os
from pandasai import SmartDataframe
from pandasai.llm import OpenAI
from dotenv import load_dotenv
import tempfile
import matplotlib.pyplot as plt
# Load environment variables
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
# Ensure OpenAI API key is provided
if not openai_api_key:
st.error("OpenAI API key is not set. Please add it to a .env file.")
st.stop()
# Initialize the LLM
llm = OpenAI(api_token=openai_api_key)
st.title("Chat with Your CSV File Using PandasAI")
uploaded_file = st.file_uploader("Upload a CSV file", type="csv")
if uploaded_file:
# Read the CSV file
df = pd.read_csv(uploaded_file)
st.write("### Data Preview")
st.dataframe(df.head(10))
# Create SmartDataFrame
chat_df = SmartDataframe(df, config={"llm": llm})
st.write("### Chat with Your Data")
user_query = st.text_input("Enter your question about the data:")
if user_query:
try:
response = chat_df.chat(user_query)
st.success(f"Response: {response}")
except Exception as e:
st.error(f"Error: {e}")
st.write("### Generate and View Graphs")
plot_query = st.text_input("Enter a query to generate a graph (e.g., 'Can you plot me a bar graph of total weekly sales for each store?'):")
if plot_query:
try:
with tempfile.TemporaryDirectory() as temp_dir:
# PandasAI can handle plotting
chat_df.chat(plot_query)
# Save and display the plot
temp_plot_path = os.path.join(temp_dir, "plot.png")
plt.savefig(temp_plot_path)
st.image(temp_plot_path, caption="Generated Plot", use_column_width=True)
except Exception as e:
st.error(f"Error: {e}")
st.write("### Instructions")
st.markdown(
"1. Upload a CSV file to get started.\n"
"2. Enter a question to interact with the data.\n"
"3. Enter a query to generate and view graphs.\n"
)