DrishtiSharma commited on
Commit
0344841
Β·
verified Β·
1 Parent(s): 7bfd9c2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -8
app.py CHANGED
@@ -149,17 +149,73 @@ if st.session_state.df is not None:
149
  verbose=True,
150
  )
151
 
152
- query = st.text_area("Enter Query:", placeholder="e.g., 'What is the average salary for senior employees?'")
153
- if st.button("Submit Query"):
154
- with st.spinner("Processing query..."):
155
- inputs = {"query": query}
156
- result = crew.kickoff(inputs=inputs)
157
- st.markdown("### Analysis Report:")
158
- st.markdown(result)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
  temp_dir.cleanup()
161
  else:
162
- st.info("Please load a dataset to proceed.")
163
 
164
  with st.sidebar:
165
  # st.markdown("---")
 
149
  verbose=True,
150
  )
151
 
152
+ # SQL-RAG Analysis
153
+ if st.session_state.df is not None:
154
+ temp_dir = tempfile.TemporaryDirectory()
155
+ db_path = os.path.join(temp_dir.name, "data.db")
156
+ connection = sqlite3.connect(db_path)
157
+ st.session_state.df.to_sql("salaries", connection, if_exists="replace", index=False)
158
+ db = SQLDatabase.from_uri(f"sqlite:///{db_path}")
159
+
160
+ @tool("execute_sql")
161
+ def execute_sql(sql_query: str) -> str:
162
+ return QuerySQLDataBaseTool(db=db).invoke(sql_query)
163
+
164
+ sql_dev = Agent("SQL Developer", "Optimize SQL queries for data extraction.", llm, tools=[execute_sql])
165
+ data_analyst = Agent("Data Analyst", "Analyze data and generate insights.", llm)
166
+ report_writer = Agent("Report Writer", "Summarize analysis into reports.", llm)
167
+
168
+ extract_data = Task("Extract data for: {query}.", "Query results.", sql_dev)
169
+ analyze_data = Task("Analyze extracted data for: {query}.", "Insights.", data_analyst, context=[extract_data])
170
+ write_report = Task("Generate a report for: {query}.", "Summary report.", report_writer, context=[analyze_data])
171
+
172
+ crew = Crew([sql_dev, data_analyst, report_writer], [extract_data, analyze_data, write_report], Process.sequential)
173
+
174
+ # Tabs for UI
175
+ tab1, tab2 = st.tabs(["πŸ” Query Specific Insights + Viz", "πŸ“Š Full Data Insights"])
176
+
177
+ # Tab 1: Query-Specific Analysis + viz
178
+ with tab1:
179
+ query = st.text_area("Enter Query:", placeholder="e.g., 'What is the average salary for senior employees?'")
180
+ if st.button("Submit Query"):
181
+ with st.spinner("Processing query..."):
182
+ result = crew.kickoff(inputs={"query": query})
183
+ st.subheader("πŸ“ Analysis Report")
184
+ st.markdown(result)
185
+
186
+ # Query-Specific Visualization
187
+ if "salary" in query.lower():
188
+ fig = px.box(st.session_state.df, x="job_title", y="salary_in_usd", title="Salary by Job Title")
189
+ st.plotly_chart(fig)
190
+
191
+ # Tab 2: Full Insights
192
+ with tab2:
193
+ st.subheader("πŸ“Š Comprehensive Data Visualizations")
194
+
195
+ # Salary by Job Title
196
+ fig1 = px.box(st.session_state.df, x="job_title", y="salary_in_usd", title="Salary Distribution by Job Title")
197
+ st.plotly_chart(fig1)
198
+
199
+ # Average Salary by Experience Level
200
+ fig2 = px.bar(st.session_state.df.groupby("experience_level")["salary_in_usd"].mean().reset_index(),
201
+ x="experience_level", y="salary_in_usd", title="Average Salary by Experience Level")
202
+ st.plotly_chart(fig2)
203
+
204
+ # Average Salary by Company Size
205
+ fig3 = px.bar(st.session_state.df.groupby("company_size")["salary_in_usd"].mean().reset_index(),
206
+ x="company_size", y="salary_in_usd", title="Average Salary by Company Size")
207
+ st.plotly_chart(fig3)
208
+
209
+ # Download CSV Report
210
+ if st.button("πŸ“₯ Download CSV Summary"):
211
+ summary = st.session_state.df.groupby("job_title")["salary_in_usd"].mean().reset_index()
212
+ summary.to_csv("summary.csv", index=False)
213
+ with open("summary.csv", "rb") as file:
214
+ st.download_button("Download CSV", file, "summary.csv", "text/csv")
215
 
216
  temp_dir.cleanup()
217
  else:
218
+ st.info("Upload a dataset to continue.")
219
 
220
  with st.sidebar:
221
  # st.markdown("---")