𝗠𝗲𝗻𝗷𝗶𝗻𝗮𝗸𝗸𝗮𝗻 𝗟𝗮𝘁𝗲𝗻𝘀𝗶 𝗔𝗜 𝗱𝗲𝗻𝗴𝗮𝗻 𝗦𝗦𝗘
Saya membangun fitur autocomplete AI. Pengguna membencinya.
Setiap ketukan tombol memicu permintaan AI. Pengguna menunggu 2 hingga 3 detik untuk respons JSON lengkap. UI terasa rusak. Saya sudah mencoba debouncing dan caching. Tidak ada yang berhasil. Masalah utamanya tetap sama: pengguna tidak melihat apa pun sampai seluruh jawaban tiba.
Saya mengatasi hal ini menggunakan Server-Sent Events (SSE) untuk mengalirkan (stream) respons bagian demi bagian.
Alur lama terlihat seperti ini:
- Pengguna mengetik
- 300ms debounce
- Permintaan HTTP POST
- AI memproses (1-2 detik)
- Server mengembalikan respons lengkap
- Client merender
Pengguna melihat layar kosong selama beberapa detik. Bahkan dengan loading spinner, rasanya tetap lambat.
Saya sempat mempertimbangkan polling atau WebSockets. Polling menambah terlalu banyak overhead. WebSockets terlalu berat untuk aliran satu arah.
Saya memilih SSE karena:
- Bekerja satu arah dari server ke client
- Menggunakan teks sederhana dan potongan (chunks) JSON
- Terhubung kembali secara otomatis jika koneksi terputus
- Tidak memerlukan library tambahan di server Anda
Hasilnya mengubah segalanya:
- Waktu respons visual pertama: dari 2,1 detik menjadi 0,3 detik
- Engagement pengguna: naik 40%
- Keluhan pengguna: nol
Streaming adalah tentang persepsi. UI yang progresif terasa lebih cepat daripada UI yang statis. Pengguna lebih suka melihat kata-kata muncul satu per satu daripada menunggu satu blok teks.
Jika respons AI Anda sangat pendek, gunakan saja permintaan standar. Jika Anda butuh komunikasi dua arah, gunakan WebSockets. Namun untuk sebagian besar kebutuhan streaming AI, SSE adalah pilihan terbaik.
Bagaimana Anda menangani latensi AI di aplikasi Anda? Apakah Anda menggunakan streaming atau menunggu respons lengkap?