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.

En İyi Uygulamalar

Bu sayfada