BazaarLinkBazaarLink
Anmelden
DokumentationAPI-ReferenzSDK-ReferenzAgentic-NutzungKI-Skills
Inhalt

Streaming

Streaming

Setzen Sie stream: true um einen Server-Sent Events (SSE) Stream zu erhalten. Jedes Event enthält einen Teil der Antwort.

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-Format

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]
Nutzung beim Streaming
Beim Streaming werden Nutzungsdaten im letzten Chunk vor der [DONE]-Nachricht zurückgegeben, zusammen mit einem choices-Array mit leerem delta und finish_reason: "stop".

Keep-alive & letzter Chunk

Streams können SSE-Kommentarzeilen und unbekannte oder ping-Keep-alive-Ereignisse enthalten. Ignorieren Sie diese und verarbeiten Sie data-Frames; der letzte data-Frame kann vor data: [DONE] usage enthalten.

: 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]

Stream-Abbruch

Streaming-Anfragen können abgebrochen werden, indem die Client-Verbindung geschlossen wird — z. B. durch Aufruf von AbortController.abort() oder Schließen des Stream-Objekts. BazaarLink stoppt das Weiterleiten weiterer Chunks und bricht die ausgehende Anfrage an den Provider ab, sobald der Abbruch erkannt wird.

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();
Keine Kosten für einen unterbrochenen Stream
Endet ein Stream, bevor der letzte usage-Chunk eintrifft — auch bei einem clientseitigen Abbruch — gibt es keine belastbare Token-Zählung für diese Anfrage, weshalb BazaarLink die vollständige Reservierung erstattet. Für bereits an Ihren Client ausgelieferte Inhalte vor dem Abbruch werden Sie nicht berechnet.
Kein garantierter sofortiger Stopp beim Provider
Das Schließen der Verbindung stoppt sofort die Weiterleitung und Abrechnung weiterer Token durch BazaarLink, ob der vorgelagerte Provider die Generierung auf seinen eigenen Servern jedoch augenblicklich einstellt, hängt vom jeweiligen Provider ab — manche rechnen noch kurz weiter, nachdem die Verbindung getrennt wurde.

Fehler mitten im Stream

Kein choices-Feld bei Fehler-Frames
Tritt ein Fehler auf, nachdem das Streaming bereits begonnen hat (z. B. Abbruch der Upstream-Verbindung), erhalten Sie einen SSE-Datenframe der Form {error:{message,type,code}} statt des üblichen {choices:[...]} — ohne Änderung des HTTP-Status, da die Header bereits gesendet wurden. Prüfen Sie auf ein error-Feld, bevor Sie choices[0].delta lesen. Abgerechnet werden nur die bereits gestreamten Tokens (anteilige Abrechnung).
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]
Support
Hi! How can we help you?
Send a message and we'll get back to you soon.
Streaming | BazaarLink