Spaces:
Sleeping
Sleeping
| # ============================================================================ | |
| # Script 3: Run API Server | |
| # ============================================================================ | |
| # ------------------------------------------------------------------------- | |
| # π’ PENYESUAIAN HUGGING FACE: Penarikan Model & File Pendukung | |
| # ------------------------------------------------------------------------- | |
| library(plumber) | |
| if (!dir.exists("models")) { | |
| dir.create("models") | |
| } | |
| # Fungsi pembantu agar tidak menulis kode download berulang-ulang | |
| download_from_hf <- function(file_name) { | |
| hf_url <- paste0("https://huggingface.co/aephidayatuloh/mpg_highway_model/resolve/main/", file_name) | |
| local_path <- paste0("models/", file_name) | |
| if (!file.exists(local_path)) { | |
| message(paste("--- Menarik", file_name, "dari Hugging Face... ---")) | |
| tryCatch({ | |
| download.file(hf_url, local_path, mode = "wb") | |
| }, error = function(e) { | |
| message(paste("β οΈ Gagal mengunduh", file_name, ":", e$message)) | |
| }) | |
| } | |
| } | |
| # Tarik semua file yang dibutuhkan API dan Dashboard Anda | |
| download_from_hf("mpg_highway_model.rds") | |
| download_from_hf("train_statistics.rds") | |
| download_from_hf("train_data.rds") | |
| # Jika Anda punya file metadata, buka tanda pagar di bawah ini: | |
| # download_from_hf("model_metadata.rds") | |
| source("02_api_plumber.R") | |
| # Deteksi Port Dinamis (Kritis untuk Hugging Face Spaces!) | |
| # Jika variabel PORT kosong (saat dijalankan di laptop lokal), otomatis pakai 8000. | |
| port <- as.numeric(Sys.getenv("PORT", 8000)) | |
| # Run server | |
| cat("π Starting API server...\n") | |
| cat(paste0("π API documentation available at /__docs__/\n")) | |
| cat("π Prediction endpoint: /predict_custom\n") | |
| cat("π Health check: /ping\n") | |
| cat("π Metadata info: /metadata\n") | |
| api %>% | |
| pr_run( | |
| host = "0.0.0.0", | |
| port = port, | |
| docs = TRUE | |
| ) | |