Leitfäden
Streaming
Setzen Sie stream: true, dann kommt die Antwort Wort für Wort als Server-Sent Events von OpenAI. Fordern Sie usage an, und der letzte Chunk sagt, was der Aufruf gekostet hat.
Geprüft am 26. Oktober 2026
Eine Antwort streamen
import os
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
stream = client.chat.completions.create(
model="deepseek-v4.1-flash-uncensored",
messages=[{"role": "user", "content": "Tell me a story in three lines."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices:
print(chunk.choices[0].delta.content or "", end="", flush=True)
if chunk.usage:
print("\ncredits:", chunk.usage.model_extra.get("nokeep_credits"))Was ankommt
data: {"choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}
data: {"choices":[{"index":0,"delta":{"content":"The"}}]}
data: {"choices":[{"index":0,"delta":{"content":" lighthouse"}}]}
…
data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"choices":[],"usage":{"prompt_tokens":18,"completion_tokens":61,"nokeep_credits":0}}
data: [DONE]- Wörter kommen in
delta.contentan. Mit eingeschaltetem Denken kommt das Denken zuerst, indelta.reasoning_content. - Tool-Aufrufe kommen in
delta.tool_callsan, ihre Argumente in Teilen, wie OpenAI sie sendet. - Mit
stream_options.include_usageträgt ein letzter Chunk mit einer leerenchoices-Liste dasusage, einschließlichnokeep_credits, also was der Aufruf gekostet hat. - Der Stream endet mit
data: [DONE].
Eine Antwort früh stoppen
Schließen Sie die Verbindung, dann hört das Modell auf zu schreiben. Sie zahlen für das, was vor dem Stopp gesendet wurde, und nichts danach. In den SDKs verlassen Sie die Schleife und schließen den Stream; in einer App drücken Sie deren Stopp-Taste.
for chunk in stream:
text = chunk.choices[0].delta.content if chunk.choices else ""
if text and "THE END" in text:
stream.close() # the model stops here, and so does the bill
breakWenn das Modell zuerst aufhört
Beendet das Modell einen Stream, bevor er fertig ist, dann ist das letzte Ereignis vor [DONE] ein Fehler in der Form von OpenAI, mit dem Code stream_cut. Was es geschrieben hat, wird abgerechnet, mehr nicht. Versuchen Sie es erneut oder machen Sie mit dem weiter, was angekommen ist.
data: {"error":{"type":"api_error","code":"stream_cut","message":"The model stopped before it finished. What it wrote is billed, nothing more."}}
data: [DONE]Fragen
Kostet Streaming mehr?
Nein. Eine gestreamte Antwort kostet dieselben Token wie eine ganze.
Warum gibt es bei einem Stream keinen x-nokeep-credits-Header?
Die Header werden vor dem ersten Wort gesendet, wenn die Kosten noch nicht feststehen. Fordern Sie usage an und lesen Sie nokeep_credits im letzten Chunk.