Вопрос с собеседования · AI и LLM

Как получить потоковый ответ модели и показать его пользователю?

JuniorLLM в продакшене
Ещё спрашивают так:
  • Что такое Server-Sent Events?
  • Как включить stream в API модели?
Коротко

В запросе включают потоковый режим (stream), и API отдаёт ответ частями по протоколу Server-Sent Events: каждое событие — строка «data: {…}» с очередным фрагментом текста (delta). Клиент добавляет фрагменты к уже показанному тексту, а последнее событие сообщает причину остановки и расход токенов. Пользователь видит начало ответа через доли секунды вместо ожидания всего текста.

  • SDK провайдеров дают итератор по фрагментам — вручную разбирать SSE обычно не нужно
  • Ошибка может прийти посреди потока — интерфейс должен показать её, а не зависнуть
  • Markdown рендерят по мере поступления, учитывая незакрытые блоки

А ещё В браузере SSE принимают через fetch с чтением потока или EventSource

Подробно

Python (схематично):

stream = client.chat.completions.create(
    model=MODEL, messages=messages, stream=True)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Формат SSE:

data: {"delta": "При"}
data: {"delta": "вет"}
data: [DONE]

В интерфейсе: индикатор «печатает», кнопка «остановить», обработка обрыва, сохранение полного ответа после завершения.

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

  • Потоковый режим и SSE.
  • Склейка фрагментов на клиенте.
  • Финальное событие с причиной остановки и токенами.
  • Обработка ошибок посреди потока.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Потоковый режим отдаёт весь ответ одним событием после генерации
  • ✗Потоковый ответ стоит в два раза дороже обычного
  • ✓Фрагменты по SSE дописывают к тексту, финал несёт причину остановки
  • ✗Для стриминга клиент открывает новое HTTP-соединение на каждый токен ответа

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования