Streaming
Wie Streaming durch den Noirdoc-Proxy mit Echtzeit-Pseudonymisierung funktioniert.
Ueberblick
Noirdoc unterstützt Streaming für alle Provider. Pseudonymisierung und Wiederherstellung erfolgen in Echtzeit auf jedem Chunk — die vollstaendige Antwort wird nicht zwischengespeichert. Setzen Sie "stream": true im Request Body, um Streaming zu aktivieren.
Der Proxy faengt jeden Server-Sent Events (SSE) Chunk ab, reidentifiziert enthaltene Pseudonym-Tokens des Modells und leitet den wiederhergestellten Text an Ihre Anwendung weiter. Aus Sicht des Clients verhaelt sich Streaming durch Noirdoc identisch zum direkten Streaming vom Provider.
Python — OpenAI SDK
stream = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "user", "content": "Schreibe ein Anschreiben für Max Mustermann."}
],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Python — Anthropic SDK
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Schreibe ein Anschreiben für Anna Schmidt."}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Node.js — OpenAI SDK
const stream = await client.chat.completions.create({
model: "gpt-5.4-mini",
messages: [
{ role: "user", content: "Schreibe ein Anschreiben für Max Mustermann." },
],
stream: true,
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content;
if (delta) process.stdout.write(delta);
}
Node.js — Anthropic SDK
const stream = client.messages.stream({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{ role: "user", content: "Schreibe ein Anschreiben für Anna Schmidt." },
],
});
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}
cURL
curl https://api.noirdoc.de/v1/chat/completions \
-H "Authorization: Bearer px-your-noirdoc-key" \
-H "Content-Type: application/json" \
-N \
-d '{
"model": "gpt-5.4-mini",
"stream": true,
"messages": [
{"role": "user", "content": "Schreibe ein Anschreiben für Anna Schmidt, E-Mail anna@example.com."}
]
}'
Das -N Flag deaktiviert die Ausgabe-Pufferung, sodass SSE-Chunks in Echtzeit erscheinen.
SSE-Format
Proxy-Endpunkte geben text/event-stream-Antworten gemaess der Server-Sent Events Spezifikation zurueck. Jedes Event ist eine data:-Zeile mit einem partiellen Antwortobjekt im JSON-Format:
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"Sehr"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":" geehrte"},"index":0}]}
data: [DONE]
Jede data:-Zeile enthaelt einen Chunk mit einer partiellen Antwort. Der Stream endet mit data: [DONE].