Spaces:
Sleeping
Sleeping
File size: 4,337 Bytes
309eec4 2c362d2 309eec4 10c7dea 3acbc9c 309eec4 10c7dea 3acbc9c 10c7dea 3acbc9c 10c7dea 2c362d2 b3a1f0c 318e286 b3a1f0c 2c362d2 67e3963 3acbc9c 2c362d2 3acbc9c 67e3963 72a73ff 3acbc9c 523228c d826a13 309eec4 2c362d2 309eec4 2c362d2 3acbc9c 10c7dea 3acbc9c 2c362d2 3acbc9c 10c7dea 3acbc9c 2c362d2 10c7dea 3acbc9c 10c7dea 3acbc9c 67e3963 3acbc9c 523228c 3acbc9c 523228c b3a1f0c 523228c 3acbc9c 523228c d826a13 523228c 3acbc9c 523228c 3acbc9c 523228c 3acbc9c d826a13 3acbc9c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
import os
import tempfile
import pandas as pd
import streamlit as st
import google.generativeai as genai
import plotly.graph_objects as go
from tools.csv_parser import parse_csv_tool
from tools.plot_generator import plot_sales_tool
from tools.forecaster import forecast_tool
from tools.visuals import (
histogram_tool,
scatter_matrix_tool,
corr_heatmap_tool,
)
# ββ Gemini 1.5βPro configuration βββββββββββββββββββββββββββββ
genai.configure(api_key=os.getenv("GEMINI_APIKEY"))
gemini = genai.GenerativeModel(
"gemini-1.5-pro-latest",
generation_config={
"temperature": 0.7,
"top_p": 0.9,
"response_mime_type": "text/plain",
},
)
# ββ Streamlit page setup βββββββββββββββββββββββββββββββββββββ
st.set_page_config(page_title="BizIntel AI Ultra β GeminiΒ 1.5Β Pro", layout="wide")
st.title("π BizIntelΒ AIΒ UltraΒ β Advanced Analytics")
TEMP_DIR = tempfile.gettempdir()
# ββ CSV upload βββββββββββββββββββββββββββββββββββββββββββββββ
csv_file = st.file_uploader("Upload CSV (β€β―200β―MB)", type=["csv"])
if csv_file is None:
st.info("β¬οΈΒ Upload a CSV to begin.")
st.stop()
csv_path = os.path.join(TEMP_DIR, csv_file.name)
with open(csv_path, "wb") as f:
f.write(csv_file.read())
st.success("CSV saved β
")
# Preview + date column selection
df_preview = pd.read_csv(csv_path, nrows=5)
st.dataframe(df_preview)
date_col = st.selectbox("Select date/time column for forecasting", df_preview.columns)
# ββ Local tools: summary, sales trend, forecast ββββββββββββββ
with st.spinner("Parsing CSVβ¦"):
summary_text = parse_csv_tool(csv_path)
with st.spinner("Generating sales trend chartβ¦"):
sales_fig = plot_sales_tool(csv_path, date_col=date_col)
st.plotly_chart(sales_fig, use_container_width=True)
with st.spinner("Forecasting future metricsβ¦"):
forecast_text = forecast_tool(csv_path, date_col=date_col)
if os.path.exists("forecast_plot.png"):
forecast_img = "forecast_plot.png"
else:
forecast_img = None
# ββ Gemini strategy insights βββββββββββββββββββββββββββββββββ
prompt = (
f"You are **BizIntel Strategist AI**.\n\n"
f"### CSV Summary\n```\n{summary_text}\n```\n\n"
f"### Forecast Output\n```\n{forecast_text}\n```\n\n"
"Return Markdown with:\n"
"1. **Five key insights** (bullet list)\n"
"2. **Three actionable strategies** (with expected impact)\n"
"3. **Risk factors or anomalies**\n"
"4. **Suggested additional visuals**\n"
)
st.subheader("π Strategy Recommendations (GeminiΒ 1.5Β Pro)")
with st.spinner("GeminiΒ 1.5Β Pro is generating insightsβ¦"):
strategy_md = gemini.generate_content(prompt).text
st.markdown(strategy_md)
# Display forecast image if exists
if forecast_img:
st.image(forecast_img, caption="Sales Forecast", use_column_width=True)
# ββ Optional exploratory visuals βββββββββββββββββββββββββββββ
st.markdown("---")
st.subheader("π Optional Exploratory Visuals")
num_cols = df_preview.select_dtypes("number").columns
# Histogram
if st.checkbox("Show histogram"):
hist_col = st.selectbox("Histogram variable", num_cols, key="hist")
fig_hist = histogram_tool(csv_path, hist_col)
st.plotly_chart(fig_hist, use_container_width=True)
# Scatterβmatrix
if st.checkbox("Show scatterβmatrix"):
multi_cols = st.multiselect("Choose up to 5 columns", num_cols, default=num_cols[:3])
if multi_cols:
fig_scatter = scatter_matrix_tool(csv_path, multi_cols)
st.plotly_chart(fig_scatter, use_container_width=True)
# Correlation heatβmap
if st.checkbox("Show correlation heatβmap"):
fig_corr = corr_heatmap_tool(csv_path)
st.plotly_chart(fig_corr, use_container_width=True)
# ββ CSV summary text at bottom βββββββββββββββββββββββββββββββ
st.markdown("---")
st.subheader("π CSV Summary (full Stats)")
st.text(summary_text)
|