تخطي إلى المحتوى
GetAPI
العربية
القائمة

GetAPI.ONE

بث Responses من GetAPI.ONE

اقرأ تدفق أحداث الخادم وأضف فروق النص فقط، وتعامل مع completed وfailed وincomplete كنتائج نهائية مختلفة.

اختيار مسار متوافق

  • استخدم نموذجًا حاليًا يعلن نقطة Responses.
  • احتفظ بمفتاح API في خادم أو عملية محلية موثوقة.
  • حدد كيف سيعرض المستدعي النص الجزئي ويتعافى من البث المنقطع.
text
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEY

فهم دورة حياة الأحداث

  1. أرسل stream=true عبر SDK أو عميل HTTP في الخادم، مع تعطيل التكرار التلقائي لأول طلب مضبوط.
  2. أضف حمولات response.output_text.delta فقط للنص المرئي.
  3. توقف عند response.completed واحتفظ ببيانات الاستجابة النهائية اللازمة للتطبيق.
  4. اعرض response.failed وresponse.incomplete كغير ناجحين، ولا تسمّ النص الجزئي مكتملًا.
  5. عامل حدث الخطأ أو استثناء النقل أو EOF قبل الإكمال أو الإلغاء المحلي كعدم نجاح وأغلق البث.
python
import os
from openai import OpenAI

terminal_event = None
try:
    with OpenAI(
        api_key=os.environ["GETAPI_ONE_API_KEY"],
        base_url="https://www.getapi.one/v1",
        timeout=30.0,
        max_retries=0,
    ) as client:
        with client.responses.create(
            model="<RESPONSES_MODEL_ID_FROM_CURRENT_CATALOG>",
            input="Give three concise deployment checks.",
            stream=True,
        ) as stream:
            for event in stream:
                if event.type == "response.output_text.delta":
                    print(event.delta, end="", flush=True)
                elif event.type == "response.completed":
                    terminal_event = event.type
                    print("\ncompleted")
                    break
                elif event.type in {"response.failed", "response.incomplete", "error"}:
                    terminal_event = event.type
                    raise RuntimeError(f"stream ended with {event.type}: {event}")
except KeyboardInterrupt:
    raise SystemExit("cancelled locally; the stream and client were closed")

if terminal_event != "response.completed":
    raise RuntimeError("stream ended before response.completed")

ربط الأحداث بحالة الواجهة

الحدثإجراء التطبيق
response.output_text.deltaأضف event.delta ولا تستبدل النص المعروض سابقًا.
response.completedأعلن النجاح وأنهِ حالة التحميل.
response.failedاعرض الخطأ المنظم وإجراء إعادة محاولة آمنًا.
response.incompleteأبقِ المخرج الجزئي واضحًا كغير مكتمل وافحص التفاصيل.

التحقق من النتيجة المتوقعة

  • يظهر النص تدريجيًا دون تكرار الفروق.
  • لا ينتهي التحميل إلا بعد حدث نهائي أو خطأ نقل.
  • لا يعرض الاتصال المنقطع حالة نجاح زائفة.

معالجة أخطاء النقل والبروتوكول

  • إذا لم تصل أحداث، فتحقق من /v1/responses وstream=true وتخزين الوكيل المؤقت وإعلان نقطة النموذج.
  • إذا تكرر النص، فأضف كل فرق مرة واحدة ولا تجمع خرج SDK المتراكم مع الأحداث الخام.
  • أعد المحاولة فقط قبل آثار مرئية أو مع ضمان عدم تكرار الأثر على مستوى التطبيق؛ الانقطاع لا يثبت أن الطلب الأعلى لم ينفذ شيئًا.

إبقاء البث على الخادم

text
Browser → your authenticated backend → GetAPI.ONE
                 server-held key only

الخطوات التالية