Kirana_AI / scripts /run_app.sh
Zappandy's picture
Deploy to HF Space
dae60e5
Raw
History Blame Contribute Delete
2.07 kB
#!/usr/bin/env bash
set -euo pipefail
source scripts/_env.sh
BACKEND="${RECEIPT_BACKEND:-hf_inference}"
while [[ $# -gt 0 ]]; do
case "$1" in
--backend)
BACKEND="$2"
shift 2
;;
--deterministic)
BACKEND="deterministic"
shift
;;
--llamacpp)
BACKEND="llamacpp"
shift
;;
--modal-llm)
BACKEND="modal_llm"
shift
;;
--hf-inference)
BACKEND="hf_inference"
shift
;;
-h|--help)
cat <<'EOF'
Usage: scripts/run_app.sh [--backend hf_inference|modal_llm|llamacpp|deterministic]
Runs the Gradio app through uv.
--backend hf_inference Use HF Inference API for the fine-tuned model (default, HF Space path)
--backend modal_llm Use Modal-hosted fine-tuned receipt parser endpoint
--backend llamacpp Use local llama.cpp receipt parser path
--backend deterministic Use rule-based parser for local no-model testing
EOF
exit 0
;;
*)
echo "Unknown argument: $1" >&2
exit 2
;;
esac
done
case "$BACKEND" in
hf_inference|llamacpp|modal_llm|deterministic) ;;
*)
echo "Invalid backend: $BACKEND. Expected hf_inference, modal_llm, llamacpp, or deterministic." >&2
exit 2
;;
esac
export RECEIPT_BACKEND="$BACKEND"
if [[ "$BACKEND" == "hf_inference" && -z "${HF_RECEIPT_MODEL_REPO:-}" ]]; then
echo "HF_RECEIPT_MODEL_REPO is not set."
echo "Receipt text parsing requires the public HF model repo or a configured HF token/private repo."
fi
if [[ "$BACKEND" == "modal_llm" && -z "${MODAL_RECEIPT_LLM_ENDPOINT:-${MODAL_RECEIPT_PARSER_ENDPOINT:-}}" ]]; then
echo "MODAL_RECEIPT_LLM_ENDPOINT is not set."
echo "Receipt text parsing will fall back to deterministic parsing until the Modal fine-tuned endpoint is configured."
fi
if [[ -z "${MODAL_RECEIPT_ENDPOINT:-}" ]]; then
echo "MODAL_RECEIPT_ENDPOINT is not set."
echo "The app will still run; image extraction will show a clean endpoint-not-set trace."
fi
echo "Starting Gradio with RECEIPT_BACKEND=$RECEIPT_BACKEND"
uv run python app.py