File size: 2,803 Bytes
755ce34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 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}")