Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt

Use this file to discover all available pages before exploring further.

Überblick

Mit Streaming können Sie Teilausgaben empfangen, während sie generiert werden, was die wahrgenommene Latenz und die Benutzererfahrung verbessert. Für neue OpenAI-ähnliche Integrationen sollten Sie zuerst Responses streaming bevorzugen. Falls Ihr Framework weiterhin Chat Completions streaming verwendet, unterstützt TokenLab auch diesen Kompatibilitätspfad.

Empfohlen: Responses Streaming

curl https://api.tokenlab.sh/v1/responses \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4",
    "input": "Write a short poem.",
    "stream": true
  }'

Chat Completions-Streaming

Falls Ihr Framework weiterhin SSE-Chunks von /v1/chat/completions erwartet, funktioniert auch das:
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a short poem"}],
    stream=True
)

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

Bedingungen für das Stream-Ende

Typische Abschlussbedingungen:
  • response.completed für Responses API-Streams
  • finish_reason: "stop" für Chat Completions-Streams
  • finish_reason: "length" wenn ein token-Limit erreicht wird
  • Tool-/Function-Call-Ereignisse, wenn das Modell Tools verwenden möchte

Web-App-Muster

async function streamChat(message) {
  const response = await fetch('https://api.tokenlab.sh/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk-your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'gpt-4o',
      messages: [{ role: 'user', content: message }],
      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.startsWith('data: '));

    for (const line of lines) {
      const data = line.slice(6);
      if (data === '[DONE]') return;
      const parsed = JSON.parse(data);
      const content = parsed.choices?.[0]?.delta?.content;
      if (content) {
        document.getElementById('output').textContent += content;
      }
    }
  }
}

Bewährte Praktiken

Verwenden Sie /v1/responses, wenn Ihr SDK oder Ihre App dies bereits unterstützt. Behalten Sie /v1/chat/completions streaming für integrationsgetriebene Kompatibilität bei.
Hängen Sie Delta-Chunks an die UI oder das Terminal an, sobald sie eintreffen, anstatt auf die vollständige Antwort zu warten.
Behandeln Sie Netzwerkabbrüche und Upstream-Verbindungsabbrüche als normale Fehlermodi und stellen Sie bei lang laufenden Sitzungen die Verbindung sorgfältig erneut her.