Dompter la latence de l'IA avec les SSE

J'ai développé une fonctionnalité d'autocomplétion par IA. Les utilisateurs ont détesté.

Chaque frappe de touche déclenchait une requête d'IA. Les utilisateurs attendaient 2 à 3 secondes pour obtenir une réponse JSON complète. L'interface utilisateur semblait défaillante. J'ai essayé le debouncing et la mise en cache. Rien n'a fonctionné. Le problème de fond restait le même : les utilisateurs ne voyaient rien avant que la réponse entière ne soit arrivée.

J'ai résolu ce problème en utilisant les Server-Sent Events (SSE) pour diffuser les réponses morceau par morceau.

L'ancien flux ressemblait à ceci :

  • L'utilisateur tape
  • Debounce de 300 ms
  • Requête HTTP POST
  • L'IA traite (1-2 secondes)
  • Le serveur renvoie la réponse complète
  • Le client affiche

Les utilisateurs voyaient un écran vide pendant plusieurs secondes. Même avec un indicateur de chargement (spinner), la sensation de lenteur persistait.

J'ai envisagé le polling ou les WebSockets. Le polling ajoute trop de surcharge. Les WebSockets sont trop lourds pour un flux unidirectionnel.

J'ai choisi les SSE parce que :

  • Ils fonctionnent de manière unidirectionnelle, du serveur vers le client
  • Ils utilisent du texte simple et des fragments JSON
  • Ils se reconnectent automatiquement en cas de perte de connexion
  • Ils ne nécessitent aucune bibliothèque supplémentaire sur votre serveur

Les résultats ont tout changé :

  • Temps jusqu'à la première réponse visuelle : de 2,1 s à 0,3 s
  • Engagement des utilisateurs : +40 %
  • Plaintes des utilisateurs : zéro

Le streaming est une question de perception. Une interface utilisateur progressive semble plus rapide qu'une interface statique. Les utilisateurs préfèrent voir les mots apparaître un par un plutôt que d'attendre un bloc de texte complet.

Si vos réponses d'IA sont très courtes, tenez-vous-en aux requêtes standards. Si vous avez besoin d'une communication bidirectionnelle, utilisez les WebSockets. Mais pour la plupart des besoins de streaming d'IA, les SSE sont le meilleur choix.

Comment gérez-vous la latence de l'IA dans vos applications ? Utilisez-vous le streaming ou attendez-vous les réponses complètes ?

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