Temel kılavuzlar
Akış
Gerçek zamanlı akış yanıtlarını uygulayın
Genel Bakış
Akış çıktıyı adım adım iletir. Model accepted_request_formats içinde openai_responses bildiriyorsa Responses kullanın; mevcut Chat Completions istemcileri biçimini koruyabilir.
Önerilen: Responses Streaming
curl https://api.tokenlab.sh/v1/responses \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-terra",
"input": "Write a short poem.",
"stream": true
}'Responses ve Gemini Streaming Sınırları
Responses SSE herkese açık olay adlarını, sırasını ve alanlarını korur. Çıktı geldikten sonraki kesinti eksik yanıttır ve otomatik olarak yeniden başlatılmaz.
Responses WebSocket response.create kullanır ve her zaman akış sağlar; background ve response.cancel desteklenmez. Bağlantı aynı anda tek yanıt işler ve en çok 60 dakika sürer. generate: false, model çıktısı veya model ücreti oluşturmadan devam kimliği üretir.
Gemini SSE yerel parçalar döndürür. Ara olaylarda finishReason olmayabilir ve akış Chat işareti [DONE] olmadan doğal biçimde bitebilir.
Chat Completions Akışı
Framework'ünüz hâlâ /v1/chat/completions adresinden SSE parçaları bekliyorsa, bu da çalışır:
import os
from openai import OpenAI
with OpenAI(
api_key=os.environ["TOKENLAB_API_KEY"],
base_url="https://api.tokenlab.sh/v1",
timeout=30.0,
max_retries=0,
) as client:
finish_reason = None
with client.chat.completions.create(
model="gpt-5.6-terra",
messages=[{"role": "user", "content": "Write a short poem."}],
stream=True,
stream_options={"include_usage": True},
) as stream:
for chunk in stream:
if not chunk.choices:
continue
choice = chunk.choices[0]
if choice.delta.content:
print(choice.delta.content, end="", flush=True)
if choice.finish_reason:
finish_reason = choice.finish_reason
if finish_reason != "stop":
raise RuntimeError(f"Stream ended without a complete text answer: {finish_reason}")Akış Bitiş Koşulları
Tipik tamamlanma koşulları:
- Responses API akışları için
response.completed - Chat Completions akışları için
finish_reason: "stop" - Bir token sınırına ulaşıldığında
finish_reason: "length" - Model araçları kullanmak istediğinde tool/function call olayları
Web Uygulaması Deseni
SDK akış tüketicisini sunucuda çalıştırın. Tarayıcı kendi kimlik doğrulamalı backend’inizi çağırmalı; TokenLab anahtarı sunucu ortamında kalmalıdır. Metin parçalarını iletin ve kullanıcı durdurduğunda veya bağlantı kesildiğinde üst akışı iptal edin. SSE olaylarını SDK ile ayrıştırın: bir ağ parçası her zaman tam bir olay içermez.