الأدلة الأساسية

البث

تنفيذ استجابات بث في الوقت الفعلي

نظرة عامة

يعيد البث الإخراج تدريجيًا. استخدم Responses إذا أدرج النموذج openai_responses في accepted_request_formats؛ ويمكن لعملاء Chat Completions الحاليين الاحتفاظ بتنسيقهم.

الموصى به: 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 وGemini المتدفقة

يحافظ Responses SSE على أسماء الأحداث العامة وترتيبها وحقولها. الانقطاع بعد وصول إخراج يعني استجابة غير مكتملة لا تبدأ مجددًا تلقائيًا.

يستخدم Responses WebSocket الحدث response.create مع بث دائم، ولا يدعم background أو response.cancel. يعالج الاتصال استجابة واحدة في كل مرة ويستمر حتى 60 دقيقة. تنشئ generate: false معرف متابعة دون إخراج أو تكلفة نموذج.

يعيد Gemini SSE مقاطع أصلية؛ قد تغيب finishReason عن الأحداث الوسيطة ويمكن أن ينتهي البث دون علامة Chat المسماة [DONE].

بث Chat Completions

إذا كان إطار العمل لديك لا يزال يتوقع مقاطع SSE من /v1/chat/completions، فهذا يعمل أيضًا:

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}")

شروط انتهاء البث

شروط الإكمال المعتادة:

  • response.completed لتدفقات Responses API
  • finish_reason: "stop" لتدفقات Chat Completions
  • finish_reason: "length" عند الوصول إلى حد token
  • أحداث استدعاء الأداة/الدالة عندما يريد النموذج استخدام الأدوات

نمط تطبيق الويب

شغّل معالجة تدفق SDK على الخادم. يجب أن يستدعي المتصفح خادمك الخلفي الموثق، مع إبقاء مفتاح TokenLab في بيئة الخادم. مرّر أجزاء النص وألغِ التدفق عند توقف المستخدم أو انقطاع الاتصال. استخدم SDK لتحليل أحداث SSE؛ فقد لا تحتوي كتلة الشبكة على حدث كامل.

أفضل الممارسات

في هذه الصفحة