BazaarLinkBazaarLink
Войти
ДокументацияAPI СсылкаSDK СсылкаАгентное использованиеAI Навыки
Содержание

Streaming

Streaming

Комплект stream: true , чтобы получить поток событий, отправленных сервером (SSE). Каждое событие содержит фрагмент ответа.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.bazaarlink.ai/v1",
    api_key="sk-bl-YOUR_API_KEY",
)

stream = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[{"role": "user", "content": "Count to 10 slowly."}],
    stream=True,
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

SSE Формат

data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{"content":"Hello"},"index":0}]}

data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{"content":" world"},"index":0}]}

data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{},"finish_reason":"stop","index":0}],"usage":{"prompt_tokens":10,"completion_tokens":4,"total_tokens":14}}

data: [DONE]
Использование в потоковом режиме
При потоковой передаче данные об использовании возвращаются в последнем фрагменте перед сообщением [DONE] вместе с массивом выбора с пустой дельтой и параметром Finish_reason: «stop».

Keep-alive и финальный фрагмент

Поток может содержать строки-комментарии SSE и неизвестные или ping-события keep-alive. Игнорируйте их и разбирайте data-кадры; последний кадр может содержать usage перед data: [DONE].

: keepalive          <- SSE comment line — ignore, do NOT JSON.parse

data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{"content":"Hi"},"index":0}]}

data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{},"finish_reason":"stop","index":0}],"usage":{...}}

data: [DONE]

Отмена трансляции

Потоковые запросы можно отменить, закрыв клиентское соединение — например. вызов AbortController.abort() или закрытие объекта потока. BazaarLink прекращает ретрансляцию дальнейших фрагментов и отменяет исходящий запрос провайдера, как только будет получено уведомление об отмене.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.bazaarlink.ai/v1",
  apiKey: "sk-bl-YOUR_API_KEY",
});

const controller = new AbortController();

const stream = await client.chat.completions.create(
  {
    model: "anthropic/claude-sonnet-4.6",
    messages: [{ role: "user", content: "Write a long story." }],
    stream: true,
  },
  { signal: controller.signal }
);

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

// e.g. on a "Stop" button click:
controller.abort();
За прерванную трансляцию плата не взимается.
Если поток заканчивается до прибытия окончательного фрагмента использования (включая отмену на стороне клиента), для этого запроса нет достоверной информации о подсчете токенов, поэтому BazaarLink возвращает полную резервацию. Вам не выставляется счет за контент, уже доставленный вашему клиенту до отмены.
Не гарантируется мгновенная остановка провайдера
Закрытие соединения останавливает BazaarLink от немедленной ретрансляции и оплаты дальнейших токенов, но прекратит ли вышестоящий провайдер генерацию на своих собственных серверах в момент разрыва соединения, зависит от этого провайдера — некоторые могут продолжать выполнять вычисления некоторое время после отключения.

Ошибки среднего потока

Нет поля выбора в кадрах ошибок
Если сбой происходит после начала потоковой передачи (например, разрыв восходящего соединения), вы получаете кадр данных SSE в форме {error:{message,type,code}} вместо обычного {choices:[...]} — без изменения статуса HTTP, поскольку заголовки уже были отправлены. Прежде чем читать options[0].delta, проверьте наличие ключа ошибки и выставляйте счет только за уже переданные токены (применяется частичная оплата).
data: {"id":"85e6f35c71a31f19-SJC","choices":[{"delta":{"content":"The capital of "},"index":0}]}

data: {"error":{"message":"The request could not be completed.","type":"upstream_error","code":502}}

data: [DONE]
Поддержка
Здравствуйте! Чем мы можем помочь?
Отправьте сообщение, и мы ответим в ближайшее время.
Streaming | BazaarLink