FE / app_old.py
Lokiiparihar's picture
Rename app.py to app_old.py
181b7b0 verified
# app.py
import json
import requests
import streamlit as st
API_URL = "https://lokiiparihar-superkart-api.hf.space/predict"
st.set_page_config(page_title="Superkart Sales Predictor", layout="centered")
st.title("Superkart Prediction App")
st.caption("Calls the HF Space API and shows the prediction response.")
with st.sidebar:
st.subheader("Model")
model = st.selectbox("Choose model", ["dt", "rf", "xgb", "lr"], index=0)
st.subheader("Enter product & store details")
col1, col2 = st.columns(2)
with col1:
product_weight = st.number_input("Product_Weight", min_value=0.0, value=12.5, step=0.1)
product_sugar = st.number_input("Product_Sugar_Content", min_value=0.0, value=0.0, step=0.1)
product_area = st.number_input("Product_Allocated_Area", min_value=0.0, value=0.08, step=0.01)
product_type = st.number_input("Product_Type (encoded)", min_value=0, value=0, step=1)
with col2:
product_mrp = st.number_input("Product_MRP", min_value=0.0, value=249.99, step=1.0)
store_size = st.number_input("Store_Size (encoded)", min_value=0, value=1, step=1)
store_city = st.number_input("Store_Location_City_Type (encoded)", min_value=0, value=0, step=1)
store_type = st.number_input("Store_Type (encoded)", min_value=0, value=1, step=1)
store_age = st.number_input("Store_Age", min_value=0, value=15, step=1)
payload = {
"Product_Weight": float(product_weight),
"Product_Sugar_Content": float(product_sugar),
"Product_Allocated_Area": float(product_area),
"Product_Type": int(product_type),
"Product_MRP": float(product_mrp),
"Store_Size": int(store_size),
"Store_Location_City_Type": int(store_city),
"Store_Type": int(store_type),
"Store_Age": int(store_age),
"model": model,
}
st.write("### Payload")
st.json(payload)
if st.button("Predict", type="primary"):
headers = {"Content-Type": "application/json"}
try:
with st.spinner("Calling API..."):
resp = requests.post(API_URL, json=payload, headers=headers, timeout=30)
st.write("### Response")
st.write("Status Code:", resp.status_code)
content_type = resp.headers.get("content-type", "")
if content_type.startswith("application/json"):
data = resp.json()
st.json(data)
# If your API returns something like {"prediction": ...}, show it nicely:
if isinstance(data, dict):
for key in ["prediction", "pred", "output", "result"]:
if key in data:
st.success(f"{key}: {data[key]}")
break
else:
st.code(resp.text)
except requests.exceptions.RequestException as e:
st.error(f"Request failed: {e}")
st.divider()
st.caption(f"API URL: {API_URL}")