Skip to content

Стриминг

Все модели поддерживают stream=True (Server-Sent Events).

Python (OpenAI SDK)

python
from openai import OpenAI

client = OpenAI(base_url="https://api.example.com/v1", api_key="sk-llmgw-...")

stream = client.chat.completions.create(
    model="x-ai/grok-4",
    messages=[{"role": "user", "content": "Расскажи короткий анекдот"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

TypeScript

ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.example.com/v1",
  apiKey: process.env.LLMBOX_KEY!,
});

const stream = await client.chat.completions.create({
  model: "openai/gpt-5",
  stream: true,
  messages: [{ role: "user", content: "Hello, stream!" }],
});

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

cURL

bash
curl -N https://api.example.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-4.6",
    "stream": true,
    "messages": [{"role": "user", "content": "stream please"}]
  }'

Учёт стоимости при стриминге

Стоимость списывается после завершения генерации (когда LiteLLM получит финальный chunk и подсчитает usage). Webhook LiteLLM списывает баланс сразу; UI обновляется по SSE (/me/balance/events). Reconcile — fallback ~30 сек.

Обработка прерываний

Если клиент закрывает соединение раньше времени, LiteLLM прекращает запрос к upstream и фиксирует частичный usage. Списание произойдёт за фактически сгенерированные токены.

© llmgw