Spaces:
Sleeping
Sleeping
| 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" | |
| 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, | |
| ) | |