### 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")