𝗧𝗮𝗺𝗶𝗻𝗴 𝗔𝗜 𝗟𝗮𝘁𝗲𝗻𝗰𝘆 𝘄𝗶𝘁𝗵 𝗦𝗦𝗘

Bir AI otomatik tamamlama özelliği geliştirdim. Kullanıcılar bundan nefret etti.

Her tuş vuruşu bir AI modeline istek gönderiyordu. Kullanıcılar tam bir yanıt için 2 ila 3 saniye bekliyordu. Kullanıcı arayüzü (UI) bozukmuş gibi hissettiriyordu.

Debouncing denedim. Caching denedim. Yükleme simgeleri (loading spinners) denedim. Hiçbiri işe yaramadı. Temel sorun devam ediyordu. Kullanıcılar herhangi bir veri görmeden önce tüm yanıtın tamamlanmasını beklemek zorundaydı.

Bunu, yanıtları parça parça (chunk by chunk) akıtmak (stream) için Server-Sent Events (SSE) kullanarak çözdüm.

Orijinal yavaş akış:

  • Kullanıcı karakterleri yazar
  • 300ms debounce
  • HTTP POST isteği
  • Sunucu AI API'sini çağırır (1-2 saniye)
  • Sunucu tam yanıtı döndürür
  • İstemci (Client) işler

Kullanıcı 2 saniye boyunca hiçbir şey görmedi.

Polling yapmayı düşündüm ancak bu çok fazla ek yük (overhead) getiriyor. WebSockets çalışır ancak tek yönlü bir akış için çok ağırdır.

SSE'yi seçtim. Bu, sunucunun tek bir uzun bağlantı üzerinden metin olayları (text events) gönderdiği bir standarttır.

SSE neden AI için işe yarar:

  • Tek yönlüdür (sunucudan istemciye)
  • Metin tabanlı JSON parçaları kullanır
  • Yeniden bağlantıları otomatik olarak yönetir
  • Ek kütüphanelere ihtiyacınız yoktur

Sonuçlar anında oldu. İlk kelime 300 ms'nin altında göründü. Kullanıcılar önerilerin harf harf oluştuğunu gördü.

Metriklerim iyileşti:

  • İlk görsel yanıt süresi: 2,1s'den 0,3s'ye
  • Kullanıcı etkileşimi: %40 artış
  • Kullanıcı şikayetleri: sıfır

Akış (streaming), algı ile ilgilidir. Yavaş ama ilerlemeli bir arayüz, hızlı ama statik bir arayüzden daha iyidir. Kullanıcılar, tam bir metin bloğunu beklemek yerine bir yanıtın kelime kelime belirdiğini görmeyi tercih ederler.

Eğer AI özelliğiniz hantal hissettiriyorsa, önce akış (streaming) yöntemini deneyin.

Kaynak: https://dev.to/__c1b9e06dc90a7e0a676b/taming-ai-latency-streaming-responses-with-server-sent-events-42d5

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi