Ohne KYC — kein Ausweis, kein Selfie, keine Dokumente. Mit Krypto bezahlen: BTC, USDT, USDC, ETH, SOL, LTC
Sprache: Deutsch
API-Schlüssel erhalten

Docs · Streaming

Streaming-Antworten: die Antwort, während sie geschrieben wird

Mit stream: true kommt die Antwort in kleinen Stücken an, während das Modell schreibt, so wie Chat-Oberflächen Text erscheinen lassen. Das Format ist das von OpenAI: Server-Sent Events, ein JSON-Chunk pro Event, dann [DONE].

Zuletzt aktualisiert: · 3 Min. Lesezeit

Kurze Antwort

Wie streame ich eine Chat Completion aus LLMwithCrypto?

Fügen Sie "stream": true zum Body von POST https://llmwithcrypto.com/api/v1/chat/completions hinzu. LLMwithCrypto antwortet dann mit Server-Sent Events: jede data:-Zeile enthält ein chat.completion.chunk mit einem Stück Text in delta.content, und der Stream endet mit data: [DONE]. Fügen Sie "stream_options": {"include_usage": true} hinzu, um die Token-Zählungen in einem letzten Chunk zu erhalten. Das funktioniert bei jedem Modell, wie am 23. Oktober 2026 dokumentiert.

Warum überhaupt streamen?

Für Menschen, weil die ersten Wörter sofort erscheinen statt erst, nachdem die ganze Antwort geschrieben ist. Eine lange Antwort von einem großen Modell kann viele Sekunden zum Fertigwerden brauchen; gestreamt beginnt der Leser sofort zu lesen.

Für Programme ist es weniger wichtig: ein Skript, das den vollständigen Text braucht, gewinnt nichts durch Streaming und hat mehr zu parsen. Streamen Sie, wenn ein Mensch zusieht, und senden Sie sonst eine normale Anfrage. Der Preis ist in beiden Fällen gleich. Sie zahlen pro Token aus Ihrem Guthaben: Input- und Output-Tokens werden mit dem eigenen Tokenizer des Modells gezählt und zum Preis des Modells pro 1M Tokens berechnet. Ein Aufruf, der mit einem Fehler endet, kostet nichts.

curl: -N hält die Verbindung ungepuffert
curl -sN "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Write a haiku about latency."}],
    "stream": true,
    "stream_options": {"include_usage": true},
    "max_tokens": 120
  }'
Python: den Text ausgeben, sobald er ankommt
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

stream = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Write a haiku about latency."}],
    stream=True,
    stream_options={"include_usage": True},
    max_tokens=120,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n", chunk.usage.prompt_tokens, "in,", chunk.usage.completion_tokens, "out")
Node.js: for await über die Chunks
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://llmwithcrypto.com/api/v1',
  apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});

const stream = await client.chat.completions.create({
  model: 'deepseek-v4.1-flash',
  messages: [{ role: 'user', content: 'Write a haiku about latency.' }],
  stream: true,
  stream_options: { include_usage: true },
  max_tokens: 120,
});
for await (const chunk of stream) {
  const text = chunk.choices[0]?.delta?.content;
  if (text) process.stdout.write(text);
  if (chunk.usage) console.log(`\n${chunk.usage.prompt_tokens} in, ${chunk.usage.completion_tokens} out`);
}

Wie sieht der Stream auf der Leitung aus?

Jedes Event ist eine Zeile, die mit data: beginnt, gefolgt von einer Leerzeile. Der erste Chunk trägt üblicherweise die role, die nächsten wenige Zeichen von content jeweils, und der Chunk mit einem finish_reason schließt die Antwort ab. Mit include_usage folgt ein weiterer Chunk mit einem leeren choices-Array und dem usage-Objekt. Der Stream endet immer mit data: [DONE]. Die ids und Zählungen unten sind illustrativ.

Server-Sent Events einer kurzen Antwort (illustrativ)
data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"content":"Packets"},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{"content":" cross the"},"finish_reason":null}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-5a1e","object":"chat.completion.chunk","created":1792742400,"model":"deepseek-v4.1-flash","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":19,"total_tokens":33}}

data: [DONE]

Was, wenn der Stream abbricht?

Ein Fehler vor dem ersten Token, etwa ein falscher Schlüssel oder ein leeres Guthaben, kommt als normaler HTTP-Fehler mit JSON-Body zurück, nicht als Stream; die Fehlerseite listet sie. Ein Fehler während der Generierung beendet den Stream frühzeitig, ohne finish_reason.

Wenn Sie die Verbindung selbst schließen, stoppt die Generierung. Sie zahlen dann für den Input und die bereits generierten Token, wie bei jedem Aufruf. Ihr Code sollte einen Stream, der ohne finish_reason und ohne [DONE] endet, als unvollständig behandeln und die Anfrage erneut senden, wenn er die vollständige Antwort braucht.

Streaming: häufige Fragen

Kostet Streaming mehr?

Nein. Dieselben Token werden zum selben Preis abgerechnet. Sie zahlen pro Token aus Ihrem Guthaben: Input- und Output-Tokens werden mit dem eigenen Tokenizer des Modells gezählt und zum Preis des Modells pro 1M Tokens berechnet. Ein Aufruf, der mit einem Fehler endet, kostet nichts.

Kann ich mit Tool Calling streamen?

Ja, bei den Modellen, die Tools unterstützen: Funktionsname und Argumente kommen in Stücken in delta.tool_calls an und müssen vor der Verwendung zusammengefügt werden. Die Tool-Calling-Seite zeigt die nicht gestreamte Schleife, mit der man einfacher beginnt.

Warum bekomme ich bei einem gestreamten Aufruf keine Nutzungsdaten?

Fügen Sie "stream_options": {"include_usage": true} hinzu. Ohne diesen enthält ein Stream keine Token-Zahlen; das Dashboard zeigt sie dennoch an.

DeepSeek V4 Pro ab $1.254 pro 1M Input-Tokens · ohne KYC

API-Schlüssel erhalten