# FastAPI Multi-Variant API for Milk Spoilage Classification This API supports 10 model variants optimized for different data availability scenarios. ## Features - **10 Model Variants** with test accuracies ranging from 62.8% to 95.8% - **Automatic Feature Validation** - API validates you provide required features for selected variant - **RESTful API** with comprehensive OpenAPI documentation - **Custom GPT Ready** - Designed for seamless ChatGPT integration ## Quick Start ### Local Development ```bash # Install dependencies pip install -r requirements.txt # Run the server python app.py ``` The API will be available at `http://localhost:7860` ### Docker Deployment ```bash docker build -t milk-spoilage-api . docker run -p 7860:7860 milk-spoilage-api ``` ## API Endpoints ### GET /variants List all available model variants with metadata ### POST /predict Make a prediction using the specified model variant **Request Body:** ```json { "spc_d7": 2.1, "spc_d14": 4.7, "spc_d21": 6.4, "tgn_d7": 1.0, "tgn_d14": 3.7, "tgn_d21": 5.3, "model_variant": "baseline" } ``` **Response:** ```json { "prediction": "PPC", "probabilities": { "PPC": 0.97, "no spoilage": 0.02, "spore spoilage": 0.01 }, "confidence": 0.97, "variant_used": { "variant_id": "baseline", "name": "Baseline (All Features)", "description": "Uses all 6 microbiological measurements", "features": ["SPC_D7", "SPC_D14", "SPC_D21", "TGN_D7", "TGN_D14", "TGN_D21"], "test_accuracy": 0.9576 } } ``` ## Model Variants | Variant | Test Acc | Features Required | |---------|----------|-------------------| | baseline | 95.8% | All 6 features | | scenario_1_days14_21 | 94.2% | SPC_D14, SPC_D21, TGN_D14, TGN_D21 | | scenario_3_day21 | 93.7% | SPC_D21, TGN_D21 | | scenario_4_day14 | 87.4% | SPC_D14, TGN_D14 | | scenario_2_days7_14 | 87.3% | SPC_D7, SPC_D14, TGN_D7, TGN_D14 | | scenario_6_spc_all | 78.3% | SPC_D7, SPC_D14, SPC_D21 | | scenario_8_spc_7_14 | 73.3% | SPC_D7, SPC_D14 | | scenario_9_tgn_7_14 | 73.1% | TGN_D7, TGN_D14 | | scenario_7_tgn_all | 69.9% | TGN_D7, TGN_D14, TGN_D21 | | scenario_5_day7 | 62.8% | SPC_D7, TGN_D7 | ## Custom GPT Integration See `../../docs/CUSTOM_GPT_SETUP_MULTIVARIANT.md` for complete setup instructions. ## Example Usage ### Python ```python import requests url = "https://chenhaoq87-milkspoilageclassifier-api-variants.hf.space/predict" # Using baseline model with all features response = requests.post(url, json={ "spc_d7": 2.1, "spc_d14": 4.7, "spc_d21": 6.4, "tgn_d7": 1.0, "tgn_d14": 3.7, "tgn_d21": 5.3, "model_variant": "baseline" }) print(response.json()) # Using Day 21 only model (when you don't have earlier measurements) response = requests.post(url, json={ "spc_d21": 6.4, "tgn_d21": 5.3, "model_variant": "scenario_3_day21" }) print(response.json()) ``` ### cURL ```bash # List available variants curl https://chenhaoq87-milkspoilageclassifier-api-variants.hf.space/variants # Make prediction with baseline model curl -X POST https://chenhaoq87-milkspoilageclassifier-api-variants.hf.space/predict \ -H "Content-Type: application/json" \ -d '{ "spc_d7": 2.1, "spc_d14": 4.7, "spc_d21": 6.4, "tgn_d7": 1.0, "tgn_d14": 3.7, "tgn_d21": 5.3, "model_variant": "baseline" }' ``` ## License MIT