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
# Install dependencies
pip install -r requirements.txt
# Run the server
python app.py
The API will be available at http://localhost:7860
Docker Deployment
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:
{
"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:
{
"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
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
# 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