Приборкання затримки ШІ за допомогою SSE

Я створив функцію автодоповнення на базі ШІ. Користувачі її ненавиділи.

Кожне натискання клавіші надсилало запит до моделі ШІ. Користувачі чекали 2–3 секунди на повну відповідь. Інтерфейс здавався зламаним.

Я пробував дебаунсинг. Я пробував кешування. Я пробував індикатори завантаження. Нічого не допомагало. Основна проблема залишалася: користувачі мали чекати на всю відповідь, перш ніж побачити будь-які дані.

Я вирішив це за допомогою Server-Sent Events (SSE), щоб стрімити відповіді частинами.

Початковий повільний процес:

  • Користувач вводить символи
  • 300 мс дебаунсинг
  • HTTP POST запит
  • Сервер викликає AI API (1–2 секунди)
  • Сервер повертає повну відповідь
  • Клієнт рендерить

Користувач нічого не бачив протягом 2 секунд.

Я розглядав поллінг, але він створює занадто велике навантаження. WebSockets працюють, але вони занадто важкі для одностороннього потоку.

Я обрав SSE. Це стандарт, за якого сервер надсилає текстові події через одне тривале з'єднання.

Чому SSE підходить для ШІ:

  • Він односторонній (від сервера до клієнта)
  • Він використовує текстові JSON-фрагменти
  • Він автоматично обробляє повторні підключення
  • Вам не потрібні додаткові бібліотеки

Результати були миттєвими. Перше слово з'являлося менш ніж за 300 мс. Користувачі бачили, як підказки формуються літера за літерою.

Мої метрики покращилися:

  • Час до першої візуальної відповіді: з 2,1 с до 0,3 с
  • Залученість користувачів: зросла на 40%
  • Скарги користувачів: нуль

Стрімінг — це про сприйняття. Повільний, але прогресивний інтерфейс кращий за швидкий, але статичний. Користувачі воліють бачити, як відповідь з'являється слово за словом, ніж чекати на весь блок тексту.

Якщо ваша функція ШІ працює повільно, спочатку спробуйте стрімінг.

Джерело: https://dev.to/__c1b9e06dc90a7e0a676b/taming-ai-latency-streaming-responses-with-server-sent-events-42d5

Додаткова спільнота для навчання: https://t.me/GyaanSetuAi