Membangun Circuit Breaker & Adaptive Retry Pintar untuk LLM dan API di n8n
· 4 menit baca
Membangun Circuit Breaker & Adaptive Retry Pintar untuk LLM dan API di n8n
Ringkasan: Artikel ini membahas cara merancang dan mengimplementasikan pola circuit breaker dan adaptive retry yang pintar untuk integrasi LLM (Large Language Models) dan API eksternal di n8n. Fokus pada stabilitas, pengendalian biaya, dan pengalaman pengguna dengan contoh workflow, pola penyimpanan state, dan penggunaan AI untuk pengambilan keputusan dinamis.
Mengapa Circuit Breaker & Adaptive Retry Penting di n8n?
Ketika workflow n8n berinteraksi dengan LLM atau API pihak ketiga, kegagalan jaringan, rate-limit, atau perilaku model yang tidak konsisten dapat menyebabkan antrean menumpuk, biaya tak terduga, dan keterlambatan. Circuit breaker membantu menghentikan panggilan berulang ke layanan yang gagal sementara, sedangkan adaptive retry menyesuaikan strategi percobaan ulang berdasarkan kondisi nyata — bukan hanya interval statis.
Prinsip Desain
- Deteksi kegagalan yang bermakna: Tidak semua error harus memicu pembukaan circuit. Gunakan kategori error (5xx, timeout, rate-limit).
- State persistensi: Simpan state circuit di Redis, DB ringan, atau Google Sheet untuk persistensi antar-eksekusi.
- Backoff adaptif: Kombinasikan exponential backoff dengan sinyal runtime (latency, error rate, cost).
- Fallback & degradasi layanan: Gunakan model cadangan (cheaper model) atau fallback statis saat circuit terbuka.
- Observability: Logging, metrik, dan alert untuk melihat kapan circuit terbuka/tertutup.
Arsitektur Singkat
Pola implementasi yang direkomendasikan:
- n8n Workflow memanggil node Function/HTTP Request untuk menilai state circuit (panggil Redis/DB).
- Jika circuit closed, lakukan panggilan ke LLM/API. Jika terjadi error, update counter di state store.
- Jika threshold tercapai, set circuit menjadi open dengan TTL (time-to-recover).
- Selama open, gunakan fallback (model murah, cache, atau jawaban default).
- Implementasikan half-open state untuk menguji layanan setelah TTL lewat, dengan sedikit traffic uji.
Contoh Implementasi di n8n (Langkah-demi-Langkah)
Berikut contoh pattern sederhana yang bisa dibuat di n8n menggunakan node-node standar (HTTP Request, Function, Switch, Wait) dan Redis sebagai state store.
1) Periksa State Circuit (Function + HTTP Request)
Gunakan node HTTP Request untuk memanggil Redis (misalnya melalui API atau fungsi kecil). Function node menilai hasil dan menghasilkan output:
// Pseudocode di Function node
const state = items[0].json; // dari HTTP Request ke Redis
if(state.status === 'open' && Date.now() < state.openUntil) {
return [{ json: { action: 'fallback', reason: 'circuit_open' } }];
}
return [{ json: { action: 'call', reason: 'closed' } }];
2) Panggil LLM/API (HTTP Request) dan Tangani Error
Jika action === 'call', lanjut ke HTTP Request node ke LLM. Tangani response dan error dengan Switch node:
- Success: Update state (reset counters) dan teruskan hasil.
- Rate limit / 5xx / timeout: Increment fail counter di Redis dan hitung apakah threshold tercapai.
3) Update State & Buka Circuit
Jika counter >= threshold (misal 5 kegagalan dalam 10 menit), set key di Redis: {status: 'open', openUntil: now + 5min, failures: ...}.
4) Fallback & Degradasi
Jika circuit terbuka, opsi fallback:
- Gunakan model yang lebih murah (ex: smaller LLM) — bisa diatur lewat node HTTP Request berbeda.
- Kembalikan cache (ambil jawaban dari cache) jika tersedia.
- Berikan respons default yang aman dan informatif.
Menambahkan Adaptive Retry dengan AI
Alih-alih menentukan backoff statis (misal 1s, 2s, 4s), kita bisa menggunakan AI untuk memprediksi waktu tunggu optimal berdasarkan sinyal real-time seperti latensi, error types, dan biaya model.
Langkah singkat:
- Kumpulkan metrik historis: latency, error kode, cost per call, volume traffic.
- Bangun model prediktif ringan (bisa hosted LLM prompt-based atau model kecil) yang mengoutput backoff optimal dan apakah harus beralih model.
- Integrasikan ke workflow n8n: sebelum retry, panggil AI model/LLM untuk menentukan backoff dan apakah retry diperbolehkan.
Contoh prompt sederhana untuk AI (gunakan OpenAI atau model internal):
System: Kamu adalah asisten pemutus keputusan retry.
User: Saya melihat 4 kegagalan 500 dalam 7 menit, latency rata-rata 1.8s, biaya per call $0.05. Berapa detik backoff yang optimal dan apakah perlu switch ke model X?
AI bisa merespon: {backoff_seconds: 30, switch_model: true, reason: "High error rate + cost"} dan workflow akan menyesuaikan.
Praktik Terbaik & Tips Implementasi
- Threshold adaptif: Jangan gunakan satu angka statis. Hitung berdasarkan baseline historis per model atau endpoint.
- Gunakan half-open testing: Setelah period open, kirim satu request uji untuk memutuskan close atau extend open.
- Catat per-model metrics: Jika menggunakan beberapa model (gpt-4, gpt-3.5), catat performa per model untuk keputusan fallback.
- Simulasi failure: Tes dengan chaos testing untuk memastikan circuit bekerja pada beban nyata.
- Biaya-aware: Sertakan cost-per-call pada log dan gunakan itu untuk memutuskan switch ke model lebih murah.
- Alerting: Kirim notifikasi ke Slack/Email saat circuit membuka untuk tindakan manual bila perlu.
Contoh Workflow Ringkas (Visual)
- Trigger (Webook/API request)
- Function: check circuit state (Redis)
- Switch: action=call -> HTTP Request LLM; action=fallback -> HTTP Request fallback/cached response
- HTTP Request LLM -> Switch on response code -> Success: Reset counter; Error: Increment counter -> If over threshold -> Set circuit open
- If retry needed: Function panggil AI predictor -> tunggu sesuai backoff -> retry
Contoh JSON Ketentuan State di Redis
{
"status": "open", // open | half-open | closed
"failures": 6,
"lastFailureAt": 1690000000000,
"openUntil": 1690000300000
}
Kesimpulan
Membangun circuit breaker dan adaptive retry pintar di n8n meningkatkan ketahanan workflow, mengurangi biaya tak terduga, dan meningkatkan pengalaman pengguna. Dengan menyimpan state secara persisten (Redis/DB), menggunakan fallback model, dan memanfaatkan AI untuk menentukan strategi retry dinamis, tim dapat menjaga aliran otomatisasi tetap stabil meski bergantung pada layanan eksternal yang tidak selalu dapat diandalkan.
Coba sekarang: Buat workflow sederhana di n8n yang memanggil Redis untuk check state, lakukan panggilan LLM, dan implementasikan fallback. Tambahkan satu node yang memanggil model AI untuk memutuskan backoff — dan amati perbedaan stabilitasnya.
Penulis: JIPRAKS Classroom — Tutorial Automation, AI & n8n terlengkap di Indonesia.