api
Catatan teknis seputar web development, DevOps, dan integrasi AI.
17 artikel
- 17.22backend
Bukan Sekadar SQL: Saat API Fan-out Bikin Monitor Mati
Perbaikan N+1 di commitcheck: satu kali paginasi gantikan 250 request, timeout SSL hilang dan eksekusi turun ke 27,5 detik.
TL;DR: Awalnya dikira jaringan lemot, ternyata script nge-loop paginasi tiap kandidat jadi 250 request numpuk dan bikin timeout. Solusinya males tapi ngaruh, paginasi cukup sekali di awal terus dibikin kamus biar tinggal cek aja. Habis di-patch requestnya anjlok drastis dan waktu eksekusi turun dari dua menitan jadi cuma 27 detik.
#pagination#performance#api - 02.34backend
Semantic Search di VPS 1GB Tanpa Vector DB
Cosine pure-Python, vektor di postmeta MariaDB, embedding di mesin lokal. Fitur semantik tanpa service baru di server 1GB.
TL;DR: VPS 1GB tak kuat menjalankan vector database plus model embedding, jadi bebannya dipecah. Embedding dihitung di mesin lokal via Ollama, vektor disimpan sebagai JSON di postmeta MariaDB, dan cosine similarity pakai pure Python tanpa numpy untuk deteksi duplikat. Skema ini efisien untuk puluhan artikel, tapi mulai jebol saat katalog ribuan atau QPS tinggi.
#python#fastapi#embedding - 00.33tooling
Skrip Riset Tahan Gagal: Rotasi API Key Dua Provider
Rotasi API key dua lapis, fallback provider, dan DoH buat DNS ISP yang dibelokkan: pelajaran bikin skrip riset yang nggak gampang mati.
TL;DR: Firecrawl tanpa API key balikin 403 permanen, jadi penulis bikin web-direct.py, skrip 125 baris stdlib dengan rotasi dua lapis: putar key dalam satu provider, lalu pindah ke Tavily. Subcommand health ngecek semua key sekaligus biar kuota habis ketahuan sebelum dipakai. Untuk domain yang dibelokkan ISP, verifikasi lewat Cloudflare DoH dulu, lalu paksa curl ke IP benar dengan --resolve.
#automation#tooling#rest-api - 18.33ai
Jawaban AI Terpotong, Ternyata Cuma Soal Budget Token
Jawaban about-mode terpotong di tengah kalimat. Ternyata bukan model yang error, tapi konstanta batas token output 512 yang saya salin dari template lama.
TL;DR: Jawaban about-mode terpotong di tengah kalimat karena konstanta _ASK_MAX_ANSWER_TOKENS = 512 disalin dari template lama tanpa pernah diukur. Budget itu mepet untuk format multi-bagian yang menggabungkan ringkasan, section PENJELASAN, dan CTA dalam satu generasi. Perbaikannya satu baris, naikkan jadi 900, plus pelajaran: ukur bentuk jawaban target dulu sebelum menetapkan batas token.
#llm#python#fastapi - 21.06ai
Ini Bukan Cuma Prompt Injection
Audit internal 11 temuan di pipeline chat AI, dari cache key sampai sanitasi input.
#prompt-injection#redis#fastapi - 19.48ai
Konteks percakapan di chat AI, tanpa session di server
Chat AI yang nyambung tanpa session server: frontend pegang riwayat di localStorage, backend susun ulang prompt dengan char-budget.
#fastapi#llm#stateless - 18.30ai
AI yang tahu lagi kerjain apa: grounding ke commit terbaru
Chat AI blog yang jawab 'lagi kerjain apa' dari commit history lokal — port sempit, cache version namespace, dan mining istilah dari commit message.
#fastapi#redis#cache-invalidation - 14.56backend
Jawaban Tetap Hidup Saat LLM Mati
LLM router mati saat streaming jawaban. Yang muncul: event meta fallback lalu pengunjung tetap dapat jawaban dari cache atau knowledge.
#fastapi#redis#llm - 14.34backend
Saat Pencarian AI Perlu Tahu Isi Situsnya Sendiri
Ketik hai ke pencarian AI dulu dapat error no_results. Biang keladinya batas panjang kata FULLTEXT, bukan prompt yang salah.
#fastapi#mariadb#llm