Spaces:
Sleeping
Aeterna AI - Backend Architecture & ML Engine Documentation (v4.0.0)
Dokumen ini menjelaskan detail teknis arsitektur sistem backend, model machine learning (Gradient Boosting & Amazon Chronos), rekayasa fitur (feature engineering), serta panduan kontainerisasi dan deployment untuk Aeterna AI (Waste Intelligence Platform).
ποΈ 1. Desain Arsitektur Backend
Backend Aeterna AI dibangun menggunakan FastAPI (Python), sebuah kerangka kerja web asinkron dengan performa tinggi yang setara dengan Node.js dan Go.
+-----------------------------------------------------------------+
| FASTAPI BACKEND |
| |
| [ /api/v1/predict ] [ /api/v1/autopilot ] [ /api/v1/news ]
| | | | |
| v v | |
| +---------------+ +------------------+ | |
| | Chronos T5 | | GBR Model | | |
| | Transformer | | (GridSearchCV) | | |
| +---------------+ +------------------+ | |
| | | | |
| +------------+------------+ | |
| | | |
| v v |
| +-----------------------+ +-------------+ |
| | Feature Engineering | | News DB | |
| | - Weather (OpenMeteo) | | (JSON) | |
| | - Event Multipliers | +-------------+ |
| | - Spatial Calibration | |
| +-----------------------+ |
+-----------------------------------------------------------------+
Komponen Utama:
- Asynchronous Handling: Memanfaatkan FastAPI dengan
run_in_threadpooluntuk menjalankan inferensi deep learning (Chronos Transformer) tanpa memblokir thread event loop utama. - CORS Security Middleware: Dikonfigurasi secara wildcard (
*) untuk mengizinkan aplikasi client-side (seperti dashboard Vercel) melakukan kueri asinkron lintas asal (cross-origin). - Automatic Swagger Docs: Endpoint mendefinisikan tipe data masukan menggunakan model Pydantic yang secara otomatis membuat spesifikasi OpenAPI dan dokumentasi interaktif di
/docs.
π§ 2. Mesin Machine Learning (ML Engine)
Aeterna AI mengadopsi arsitektur model hibrida:
A. Gradient Boosting Regressor (GBR) - Model Prediksi Harian
Model regresi teroptimasi yang memprediksi volume timbulan sampah harian tingkat kecamatan berdasarkan fitur-fitur spasial dan kontekstual.
- Hyperparameter Terbaik (GridSearchCV):
n_estimators(Jumlah pohon keputusan): 100learning_rate(Laju pembelajaran): 0.03max_depth(Kedalaman pohon maksimal): 3subsample(Rasio sampel acak per pohon): 0.9
- Metrik Evaluasi Model:
- Mean Absolute Error (MAE):
132.29 Ton(Rata-rata kesalahan tebakan sekitar 132 ton). - Root Mean Squared Error (RMSE):
165.46 Ton(Tebakan stabil tanpa kesalahan ekstrem). - R-Squared ($R^2$ Score):
81.51%(81.5% pola data berhasil dijelaskan oleh fitur). - Mean Absolute Percentage Error (MAPE):
1.59%(Tingkat persentase kesalahan di bawah 2%, masuk kategori Highly Accurate Forecasting).
- Mean Absolute Error (MAE):
B. Amazon Chronos-T5 (Tiny) - Model Deret Waktu (Time-Series)
Model Transformer terlatih dari Amazon yang digunakan untuk memprediksi tren masa depan 7 s.d. 30 hari ke depan pada kueri simulasi. Chronos membaca barisan data historis dan melakukan peramalan probabilistik (diambil kuantil median 0.5).
π¦οΈ 3. Rekayasa Fitur Dinamis (Feature Engineering)
AI mengalibrasi prediksi mentah berdasarkan faktor riil eksternal:
A. Multiplier Curah Hujan (Rainfall Multiplier)
Sampah terbuka di Tempat Penampungan Sementara (TPS) menyerap air hujan, yang meningkatkan berat massa jenis sampah basah.
- Sistem memanggil Open-Meteo API secara dinamis menggunakan titik koordinat presisi dari kecamatan target.
- Multiplier Formula: $$\text{Volume}{\text{calibrated}} = \text{Volume}{\text{pred}} \times \left(1.0 + \frac{\text{Precipitation (mm)}}{1000} \right)$$ Curah hujan lebat (misal 50 mm) akan menambah berat jenis timbulan sekitar 5%.
B. Multiplier Skala Keramaian & Event (Event Multiplier)
Jadwal acara besar Jakarta (event_jakarta_2026.txt) dipindai secara berkala berdasarkan tanggal kueri.
- Jika ada event aktif, sistem mendeteksi nama acara dan skala keramaian (1 s.d. 5).
- Skala Multiplier:
- Skala 1 s.d. 2 (Keramaian lokal): +10% s.d. +15% volume sampah.
- Skala 3 s.d. 4 (Keramaian regional, misal BTN Marathon): +20% s.d. +25% volume sampah.
- Skala 5 (Keramaian masif, misal Idul Fitri): +30% s.d. +35% volume sampah.
β° 4. Timezone-Aware Engine (WIB / Asia/Jakarta)
Agar hasil prediksi antara server lokal pengembang dan server Hugging Face (yang biasanya berlokasi di Amerika Serikat) sinkron 100%, backend Aeterna AI dilengkapi dengan pengunci zona waktu WIB (UTC+7):
from datetime import datetime, timezone, timedelta
def get_jakarta_now() -> datetime:
# Memaksa system time menggunakan Waktu Indonesia Barat (WIB)
return datetime.now(timezone(timedelta(hours=7)))
Semua query default, pencocokan kalender event, serta umpan berita menggunakan get_jakarta_now() untuk mencegah pergeseran penanggalan akibat perbedaan lokasi server fisik.
π³ 5. Panduan Kontainerisasi & Deployment (Hugging Face Spaces)
Aplikasi dideploy ke Hugging Face Spaces menggunakan Docker.
Berkas Dockerfile:
FROM python:3.11-slim
# System setup
WORKDIR /code
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy application files
COPY . .
# Expose port (Hugging Face standard port)
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
Langkah Deployment ke Hugging Face:
- Buat Space baru di Hugging Face, pilih SDK Docker (Blank template).
- Tambahkan remote git Hugging Face ke repositori lokal Anda:
git remote add huggingface https://huggingface.co/spaces/USERNAME/SPACE_NAME - Dorong perubahan langsung ke Space:
git push huggingface main - Hugging Face akan mendeteksi
Dockerfile, membangun image, dan menyalakan API pada port7860secara otomatis.
π° 6. Dokumentasi API Berita Dinamis (Dynamic News API)
Endpoint ini menyediakan umpan berita terbaru mengenai tata kelola sampah di DKI Jakarta yang dihasilkan secara dinamis melalui integrasi LLM (Conduit API) dan terproteksi oleh sistem penyimpanan cadangan (caching) lokal.
A. Spesifikasi Endpoint
- Path:
/api/v1/news - Method:
GET - Response Model:
List[NewsItem] - Deskripsi: Mengambil minimal 10 artikel berita persampahan terhangat yang dirilis paling lama 1 minggu dari tanggal kueri.
B. Mekanisme Keandalan (Reliability Mechanism)
Untuk menjamin tingkat kegagalan layanan 0% (zero downtime), sistem diimplementasikan menggunakan arsitektur bercabang (fallback structure):
[ GET /api/v1/news ]
|
v
+-------------------------+
| Panggil Conduit LLM |
| (GPT-4o-Mini API) |
+-------------------------+
|
+------------+------------+
| |
(Status 200) (Timeout/Error/402)
| |
v v
+-----------------------+ +-----------------------+
| - Ambil Data Baru | | - Baca Backup Cache |
| - Tulis ke JSON Cache | | (latest_waste_news) |
| - Kembalikan Response | | - Kembalikan Response |
+-----------------------+ +-----------------------+
- AI Crawl Mode: Backend akan memanggil API LLM (Conduit) secara asinkron dengan batas waktu (timeout) 8.0 detik. AI diarahkan untuk membuat artikel berita riil/valid dengan rentang tanggal maksimum 7 hari ke belakang dari tanggal hari ini.
- JSON Database Backup: Jika API eksternal mengalami kendala jaringan, melebihi kuota (Error 402/Free Plan Limit), atau mati, sistem secara otomatis mengalihkan permintaan untuk membaca data statis valid yang tersimpan di berkas
latest_waste_news.jsontanpa mengganggu kelancaran dashboard frontend.
C. Skema Respons (JSON Schema)
Setiap objek berita dalam array memiliki struktur data sebagai berikut:
| Nama Field | Tipe Data | Deskripsi |
|---|---|---|
title |
string |
Judul berita persampahan DKI Jakarta |
source |
string |
Nama penerbit berita resmi (misal: Kompas.com, Antara News) |
url |
string |
Tautan/URL artikel asli berita |
date_fetched |
string |
Tanggal penulisan/pengambilan berita (Format: YYYY-MM-DD) |
summary |
string |
Ringkasan isi berita dan tindak lanjut penanganan sampah |
Contoh JSON Output:
[
{
"title": "DLH DKI Jakarta Wajibkan Pemilahan Sampah Rumah Tangga Mulai 1 Agustus 2026",
"source": "Kompas.com",
"url": "https://megapolitan.kompas.com/read/2026/07/12/dlh-dki-wajibkan-pemilahan-sampah-rumah-tangga",
"date_fetched": "2026-07-12",
"summary": "Dinas Lingkungan Hidup DKI Jakarta resmi mensosialisasikan Instruksi Gubernur No. 5 Tahun 2026 tentang kewajiban pilah sampah dari rumah guna mengurangi pasokan sampah ke TPST Bantargebang per 1 Agustus 2026."
}
]