Получить доступ

Как реализовать потоковую выдачу ответа LLM пользователю?

MiddleLLM в продакшене
Ещё спрашивают так:
  • Зачем стримить ответ модели?
  • Что такое SSE?
Коротко

Модель генерирует ответ токен за токеном, и его можно показывать по мере генерации: воспринимаемая задержка падает с десятков секунд до времени первого токена. Провайдеры отдают поток через Server-Sent Events; бэкенд проксирует его клиенту (SSE или WebSocket), не буферизуя.

  • Буферизация на прокси (nginx) ломает стриминг — её отключают
  • Отмена: клиент ушёл — запрос к модели нужно прервать, иначе платите за ненужные токены
  • Структурированный ответ (JSON) при стриминге парсят инкрементально или стримят только текстовые поля

А ещё Модерацию выхода приходится делать частями или с задержкой — компромисс со скоростью

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Цепочка: клиент ↔ ваш бэкенд ↔ API модели. Каждое звено должно передавать данные потоком:

  • API модели — параметр stream, события с дельтами текста;
  • бэкенд — асинхронный обработчик, который пересылает дельты сразу (SSE: text/event-stream, flush после каждого события);
  • прокси и балансировщики — отключить буферизацию ответа, увеличить таймауты простоя;
  • клиент — EventSource или fetch с чтением потока.

Тонкости:

  • отмена — при закрытии соединения клиентом отменять запрос к модели;
  • ошибки посреди потока — статус 200 уже отправлен, ошибку передают отдельным событием;
  • инструменты — при tool calling поток содержит части вызова функции, их собирают до конца перед выполнением;
  • подсчёт токенов и стоимости — провайдеры присылают итог в последнем событии.

Что хотят услышать

  • Зачем стриминг и как он устроен по всей цепочке.
  • Буферизация прокси и отмена.
  • Ошибки и структурированный вывод при стриминге.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем