Продвинутое

Стриминг ответов

Как получать ответ по мере генерации через SSE: примеры на curl и Node.js, разбор событий и настройка таймаутов.

Обновлено 20 июл. 2026 г.5 мин
#стриминг#streaming#sse#поток#node#curl

Стриминг отдаёт ответ по мере генерации через Server-Sent Events (SSE) — пользователь видит текст сразу, без ожидания полного ответа. Формат событий совпадает с оригинальным API вендора.

#Как включить

Добавьте в тело запроса "stream": true. Ответ придёт потоком SSE-событий вместо одного JSON.

#curl

стриминг через curl
curl -N https://api.tkbk.io/openai/v1/chat/completions \
  -H "Authorization: Bearer cr_your_key" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-5-mini",
    "stream": true,
    "messages": [{"role": "user", "content": "Считай вслух от 1 до 5"}]
  }'

Флаг -N (--no-buffer) отключает буферизацию curl, чтобы токены появлялись сразу.

#Node.js

OpenAI SDK, потоковый ответ
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.tkbk.io/openai/v1",
  apiKey: process.env.OPENAI_API_KEY,
});

const stream = await client.chat.completions.create({
  model: "gpt-5-mini",
  stream: true,
  messages: [{ role: "user", content: "Расскажи про токены в двух предложениях" }],
});

for await (const part of stream) {
  process.stdout.write(part.choices[0]?.delta?.content || "");
}

#Разбор SSE-событий

  • Каждое событие — строка data: {…} с очередным фрагментом (delta).
  • У Claude приходят типизированные события (content_block_delta и др.), у OpenAI — чанки с choices[].delta.
  • Признак конца потока: строка data: [DONE] (OpenAI) или событие message_stop (Claude).
  • Склеивайте фрагменты delta в полный текст на своей стороне.

#Таймауты

Держите соединение живым
Для стриминга ставьте таймаут по бездействию, а не по общей длительности: длинный ответ — это нормально долгий поток. Обрывайте соединение только если фрагменты перестали приходить.
Не помогло?

Напишите в Telegram — поможем с настройкой и подберём тариф. Или вернитесь ко всем разделам документации.