Streaming
Sowohl die OpenAI (/v1/chat/completions) als auch die Anthropic (/v1/messages) Oberflächen unterstützen Streaming über Server-Sent Events. Die Responses API (/v1/responses) streamt ihre eigenen response.* Events; siehe Responses API. Streaming ist die empfohlene Standardeinstellung für alles mit einem langen Prompt, langer Ausgabe oder einer hohen Token-Obergrenze — es vermeidet Request-Timeouts und ermöglicht es Ihnen, Tokens anzuzeigen, sobald sie eintreffen.
OpenAI-Stil Stream
curl -N https://api.uberllm.dev/v1/chat/completions \
-H "Authorization: Bearer $UBERLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-flash",
"stream": true,
"messages": [{"role": "user", "content": "Count to five, one per line."}]
}'
Die Antwort ist eine Sequenz von data: Zeilen, jeweils ein Chat-Completion-Chunk, endend mit data: [DONE].
from openai import OpenAI
client = OpenAI(base_url="https://api.uberllm.dev/v1", api_key="ull_...")
with client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
stream=True,
messages=[{"role": "user", "content": "Write a short poem."}],
) as stream:
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Nutzungsabrechnung
UberLLM fügt stream_options: {"include_usage": true} für Upstreams ein, die es unterstützen. Der letzte Chunk enthält daher ein usage Objekt mit Prompt- und Completion-Token-Zählungen sowie cost_usd: den in US-Dollar abgerechneten Betrag für diese Anfrage (was der Anbieter dafür berechnet hat). Wenn der Upstream keinen Usage-Chunk sendet, fügt UberLLM einen vor data: [DONE] hinzu. Auf /v1/messages sind die Kosten im usage des message_delta Events.
Ihre Anfrage wird zu den Kosten abgerechnet, die der Marktplatz für diesen Aufruf meldet; wenn die Nutzungsinformationen fehlen, greift das Gateway auf eine Tokenizer-Schätzung zurück und kennzeichnet die Anfrage in Ihrem Aktivitätsprotokoll als geschätzt. Die Header eines Streams werden gesendet, bevor die Kosten bekannt sind, daher hat ein Stream keinen X-UberLLM-Cost-USD Header: lesen Sie usage.cost_usd.
Abbrüche
Wenn Sie mitten im Stream die Verbindung trennen, bricht das Gateway die Upstream-Anfrage ab und berechnet nur die tatsächlich gestreamten tokens. Ihnen wird niemals eine vollständige Antwort berechnet, die Sie nicht erhalten haben, und es bleibt kein reserviertes Guthaben hängen.
Keep-alives
Das Gateway sendet einen sofortigen : ping Kommentar bei Verbindung und periodische Keep-alives, damit langlebige Streams Proxy-Idle-Timeouts überleben.