rairo commited on
Commit
0404f33
·
verified ·
1 Parent(s): 48d20f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -43
app.py CHANGED
@@ -1,45 +1,54 @@
 
1
  import streamlit as st
2
- from pandasai.llm.openai import OpenAI
3
- import pandas as pd
4
- from pandasai import SmartDataframe, Agent
5
- import io
6
  import os
7
-
8
- st.title("Brave Retail Insights")
9
-
10
- openai_api_key = os.environ['openai_api_key']
11
-
12
-
13
- llm = OpenAI(api_token=openai_api_key)
14
-
15
- #uploader_file = st.file_uploader("Upload a CSV file", type=["csv"])
16
-
17
-
18
- data = pd.read_csv("")
19
- st.write(data.head(3))
20
-
21
- df = SmartDataframe(data, config={"llm": llm})
22
- agent = Agent(data, config={"llm": llm, "open_charts": "False"})
23
-
24
- prompt = st.text_area("Enter your prompt:")
25
- system_prompt = "Decide whether this needs a graph. If it does determine what type of graph (i.e. line/scatter/bar/pie etc). then generate the graph according to the requirements. we may not always need you to generate a graph. if a graph is not required just generate a written output. If you are generating a graph also include a brief description."
26
- full_prompt = "Main query: " + prompt + " Instructions: " + system_prompt
27
-
28
- if st.button("Generate"):
29
- if prompt:
30
- with st.spinner("Generating response..."):
31
- try:
32
- graph = df.chat(full_prompt)
33
- if "temp_chart" in str(graph):
34
- st.image(graph)
35
-
36
- response = agent.chat(prompt + " Instructions: we don't generate graphs even if it is asked for")
37
- if "temp_chart" not in str(response):
38
- st.write(response)
39
-
40
- with st.expander("See Explanation:"):
41
- st.write(agent.explain())
42
- except Exception as e:
43
- st.error(f"An error occurred: {e}")
44
- else:
45
- st.warning("Please enter a prompt!")
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pandasai.llm import GoogleGemini
2
  import streamlit as st
 
 
 
 
3
  import os
4
+ import pandas as pd
5
+ from pandasai import SmartDataframe
6
+ from pandasai.responses.response_parser import ResponseParser
7
+
8
+ class StreamLitResponse(ResponseParser):
9
+ def __init__(self,context) -> None:
10
+ super().__init__(context)
11
+ def format_dataframe(self,result):
12
+ st.dataframe(result['value'])
13
+ return
14
+ def format_plot(self,result):
15
+ st.image(result['value'])
16
+ return
17
+ def format_other(self, result):
18
+ st.write(result['value'])
19
+ return
20
+
21
+ gemini_api_key = os.environ['Gemini']
22
+
23
+ def generateResponse(dataFrame,prompt):
24
+ llm = GoogleGemini(api_key=gemini_api_key)
25
+ pandas_agent = SmartDataframe(dataFrame,config={"llm":llm, "response_parser":StreamLitResponse})
26
+ answer = pandas_agent.chat(prompt)
27
+ return answer
28
+
29
+ st.write("# Brave Retail Insights")
30
+ st.write("##### Engage in insightful conversations with your data through powerful visualizations")
31
+ with st.sidebar:
32
+ st.title("Brave Retail Insights")
33
+
34
+ # Added a divider
35
+ st.divider()
36
+ # Add content to the sidebar/drawer
37
+ with st.expander("Data Visualization"):
38
+ st.write("<div>Developed by - <span style=\"color: cyan; font-size: 24px; font-weight: 600;\">Rairo</span></div>",unsafe_allow_html=True)
39
+
40
+
41
+ uploaded_file = "alaba.csv"
42
+ if uploaded_file is not None:
43
+ # Read the CSV file
44
+ df = pd.read_csv(uploaded_file)
45
+
46
+ # Display the data
47
+ with st.expander("Preview"):
48
+ st.write(df.head())
49
+
50
+ # Plot the data
51
+ user_input = st.text_input("Type your message here",placeholder="Ask me about your data")
52
+ if user_input:
53
+ answer = generateResponse(dataFrame=df,prompt=user_input)
54
+ st.write(answer)