Raphaël Bournhonesque
update after API breaking change
62be7f8
Raw
History Blame Contribute Delete
1.57 kB
import copy
from typing import Optional
import pandas as pd
import requests
import streamlit as st
http_session = requests.Session()
LOCAL_DB = False
if LOCAL_DB:
ROBOTOFF_BASE_URL = "http://localhost:5500/api/v1"
else:
ROBOTOFF_BASE_URL = "https://robotoff.openfoodfacts.org/api/v1"
PREDICTION_URL = ROBOTOFF_BASE_URL + "/predict/category"
@st.cache_data
def get_predictions(barcode: str, threshold: Optional[float] = None):
data = {"barcode": barcode}
if threshold is not None:
data["threshold"] = threshold
r = requests.post(PREDICTION_URL, json=data)
r.raise_for_status()
return r.json()["neural"]
def display_predictions(
barcode: str,
threshold: Optional[float] = None,
):
debug = None
response = get_predictions(barcode, threshold)
response = copy.deepcopy(response)
if "debug" in response:
if debug is None:
debug = response["debug"]
response.pop("debug")
st.write(pd.DataFrame(response["predictions"]))
if debug is not None:
st.markdown("**Debug information**")
st.write(debug)
st.sidebar.title("Category Prediction Demo")
query_params = st.experimental_get_query_params()
default_barcode = query_params["barcode"][0] if "barcode" in query_params else ""
barcode = st.sidebar.text_input("Product barcode", default_barcode)
threshold = st.sidebar.number_input("Threshold", format="%f", value=0.5) or None
if barcode:
barcode = barcode.strip()
display_predictions(
barcode=barcode,
threshold=threshold,
)