К содержимому
Возможности API

Стриминг ответов моделей через AI Gateway (SSE, stream: true)

Как получать ответ модели по мере генерации: параметр stream:true, Server-Sent Events, примеры на Python и JavaScript, подводные камни с таймаутами и буферизацией.

Стриминг отдаёт ответ модели частями, по мере генерации, а не одним блоком после завершения. Для интерфейсов чата это ключевой приём: пользователь видит первые слова через доли секунды, а не ждёт весь ответ целиком. В AI Gateway стриминг включается стандартным параметром stream: true и работает через Server-Sent Events — точно так же, как в оригинальном API OpenAI.

Как это работает

С stream: true сервер держит соединение открытым и присылает поток событий data:, каждое из которых несёт очередной фрагмент ответа в поле delta. Клиент склеивает фрагменты по мере поступления; поток закрывается служебным data: [DONE]. SDK OpenAI разбирает эти события за вас — достаточно итерироваться по объекту потока.

stream.pypython
from openai import OpenAI​client = OpenAI(base_url="https://ai-gatewey.ru/v1",api_key="sk-aigate-ваш_ключ",)​stream = client.chat.completions.create(model="deepseek/deepseek-v4-flash",messages=[{"role": "user", "content": "Расскажи о токенах"}],stream=True,)for chunk in stream:delta = chunk.choices[0].delta.contentif delta:print(delta, end="", flush=True)
stream.mjsjavascript
import OpenAI from "openai";​const client = new OpenAI({baseURL: "https://ai-gatewey.ru/v1",apiKey: "sk-aigate-ваш_ключ",});​const stream = await client.chat.completions.create({model: "deepseek/deepseek-v4-flash",messages: [{ role: "user", content: "Расскажи о токенах" }],stream: true,});for await (const chunk of stream) {const delta = chunk.choices[0]?.delta?.content;if (delta) process.stdout.write(delta);}

Сценарии

  • Чат-интерфейсы — вывод ответа «печатной машинкой» снижает воспринимаемую задержку и удерживает внимание пользователя.
  • Длинные генерации — статьи, отчёты, код: пользователь начинает читать первый абзац, пока модель дописывает остальное.
  • Ранняя остановка — можно прервать поток, как только получен нужный фрагмент, и не платить за лишние токены.
  • Голосовые ассистенты — фрагменты текста сразу уходят в синтез речи, без ожидания полного ответа.
обратите внимание
При стриминге поле usage с числом токенов приходит в самом конце потока (или требует stream_options: {include_usage: true}) — не рассчитывайте увидеть расход в первом же чанке.

Подводные камни

  • Таймауты прокси и балансировщиков. nginx, CDN и облачные шлюзы часто рвут «тихие» соединения. Увеличьте proxy_read_timeout и отключите буферизацию ответа для стриминг-маршрута.
  • Буферизация на стороне сервера. Если ваш backend копит ответ в буфер и отдаёт целиком, эффект стриминга теряется — отдавайте чанки сразу (flush после каждого фрагмента).
  • Обрыв соединения. Сеть может оборваться посреди потока: оберните чтение в обработку ошибок и предусмотрите повтор запроса.
  • Сборка ответа. Итоговый текст — это конкатенация всех delta.content; не забудьте, что tool_calls при стриминге тоже приходят по частям и требуют склейки по индексу.

Частые вопросы

Все ли модели каталога поддерживают стриминг?

Стриминг поддерживает большинство чат-моделей — точный список для этой возможности собирается живьём ниже по каталогу. Смотрите бейдж «стриминг» на карточке модели в каталоге.

Отличается ли цена при стриминге?

Нет. Оплачиваются те же входные и выходные токены — способ доставки ответа на стоимость не влияет.

Как посчитать токены, если ответ пришёл потоком?

Передайте stream_options: {include_usage: true} — тогда в финальном событии потока придёт блок usage с числом токенов. Фактический расход всегда виден в кабинете в реальном времени.

AI Gateway

Подключите стриминг за пять минут

Модели с этой возможностью

живой срез каталога · 12

Все модели с фильтром по возможностям →