Rauhan's picture
Update app.py
f6ab159 verified
raw
history blame contribute delete
No virus
2.22 kB
### importing required libraries
from pandasai.responses.streamlit_response import StreamlitResponse
from langchain_groq import ChatGroq
from pandasai import SmartDataframe
import streamlit as st
import pandas as pd
import shutil
import os
### using Mixtral 8 x 7b model with Groq's LPU Inference Engine
llm = ChatGroq(model_name = "mixtral-8x7b-32768", temperature = 0.1)
### building the streamlit interface
st.title("Smart Analyzer: Natural Language, Powerful Results")
dataFile = st.file_uploader(label = "Upload a csv/xlsx file for analysis", type = ["csv", "xlsx"])
if dataFile != None:
extension = dataFile.name.split(".")[-1]
if extension.lower() == "csv":
dataframe = pd.read_csv(dataFile)
elif extension.lower() == "xlsx":
dataframe = pd.read_excel(dataFile)
else:
st.warning("Invalid File Chosen")
st.write(dataframe.head(3))
smartDataFrame = SmartDataframe(dataframe, config = {
"llm": llm,
"custom_whitelisted_dependencies": ["IPython", "os", "matplotlib", "seaborn", "pandas"],
"response_parser": StreamlitResponse,
"verbose": True
}
)
prompt = st.text_area("Enter your query, question, or desired operation")
if st.button("Generate Answer"):
path = os.path.join("exports", "charts")
if os.path.isdir(path):
pass
else:
os.makedirs(path)
chartsDirectory = path
if os.path.isdir(chartsDirectory):
if len(os.listdir(chartsDirectory)) != 0:
shutil.rmtree(chartsDirectory)
else: pass
os.rmdir(chartsDirectory)
else: pass
if prompt:
with st.spinner("Analyzing data, generating a response..."):
response = smartDataFrame.chat(prompt)
if len(os.listdir(chartsDirectory)) != 0:
imgName = os.listdir(chartsDirectory)[0]
imgPath = os.path.join(chartsDirectory, imgName)
st.image(imgPath)
shutil.rmtree(chartsDirectory)
else:
st.write(response)
else:
st.warning("Please enter a prompt")