ЦАРЬ ROUTER

Streaming

Для потоковой генерации добавьте "stream": true. Токены будут приходить по мере генерации в формате Server-Sent Events (SSE).

Python (OpenAI SDK)

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tsarrouter.ru/v1",
    api_key="sk-tsar-ваш-ключ",
)
 
stream = client.chat.completions.create(
    model="yandex/yandexgpt",
    messages=[{"role": "user", "content": "Напиши стихотворение"}],
    stream=True,
)
 
for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

curl

curl -N https://api.tsarrouter.ru/v1/chat/completions \
  -H "Authorization: Bearer sk-tsar-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "yandex/yandexgpt",
    "messages": [{"role": "user", "content": "Напиши стихотворение"}],
    "stream": true
  }'

JavaScript

const response = await fetch("https://api.tsarrouter.ru/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-tsar-ваш-ключ",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "yandex/yandexgpt",
    messages: [{role: "user", content: "Напиши стихотворение"}],
    stream: true,
  }),
});
 
const reader = response.body.getReader();
const decoder = new TextDecoder();
 
while (true) {
  const {done, value} = await reader.read();
  if (done) break;
 
  const chunk = decoder.decode(value);
  const lines = chunk.split('\n').filter(line => line.trim().startsWith('data:'));
 
  for (const line of lines) {
    const data = line.replace('data: ', '');
    if (data === '[DONE]') break;
    const parsed = JSON.parse(data);
    const content = parsed.choices[0]?.delta?.content;
    if (content) process.stdout.write(content);
  }
}

Особенности streaming

  • Заголовки X-TsarRouter-Provider и X-TsarRouter-Model доступны сразу в первом ответе
  • Usage (токены) и стоимость считаются и списываются как в обычном режиме
  • При ошибке провайдера в streaming — автоматический failover на другого провайдера до отправки первого чанка клиенту