Docs
Funktionen

Streaming

Antworten Token für Token über Server-Sent Events streamen

Setzen Sie stream: true, um die Antwort als Server-Sent Events statt als einen einzelnen finalen JSON-Body zu erhalten.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.ablatic.ai/v1",
    api_key="sk-ablatic-...",
)

stream = client.chat.completions.create(
    model="talos",
    messages=[{"role": "user", "content": "Write a haiku about Linz."}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Beide API-Oberflächen streamen über SSE, das Eventformat unterscheidet sich jedoch. SSE-Antworten setzen Cache-Control: no-cache.

OpenAI-Oberfläche

Bei /v1/chat/completions ist jedes Event ein chat.completion.chunk. Der inkrementelle Text steckt in choices[0].delta. Der Stream endet mit einer data: [DONE]-Zeile.

data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"Lin"}}]}

data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"z"}}]}

data: [DONE]

Anthropic-Oberfläche

Bei /v1/messages ist der Stream eine Folge benannter Events, derselbe Graph, den das Anthropic SDK erwartet: message_start, dann content_block_start, dann ein oder mehrere content_block_delta, dann content_block_stop, dann message_delta, dann message_stop. Es gibt keinen [DONE]-Abschluss.

event: message_start
data: {"type":"message_start","message":{"id":"msg_..."}}

event: content_block_start
data: {"type":"content_block_start","index":0}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Linz"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"}}

event: message_stop
data: {"type":"message_stop"}

Der OpenAI-Stream endet mit data: [DONE]. Der Anthropic-Stream endet mit einem message_stop-Event und sendet niemals [DONE].

Nächste Schritte