GetAPI.ONE
بث Responses من GetAPI.ONE
اقرأ تدفق أحداث الخادم وأضف فروق النص فقط، وتعامل مع completed وfailed وincomplete كنتائج نهائية مختلفة.
اختيار مسار متوافق
- استخدم نموذجًا حاليًا يعلن نقطة Responses.
- احتفظ بمفتاح API في خادم أو عملية محلية موثوقة.
- حدد كيف سيعرض المستدعي النص الجزئي ويتعافى من البث المنقطع.
POST https://www.getapi.one/v1/responses
Accept: text/event-stream
Authorization: Bearer $GETAPI_ONE_API_KEYفهم دورة حياة الأحداث
- أرسل stream=true عبر SDK أو عميل HTTP في الخادم، مع تعطيل التكرار التلقائي لأول طلب مضبوط.
- أضف حمولات response.output_text.delta فقط للنص المرئي.
- توقف عند response.completed واحتفظ ببيانات الاستجابة النهائية اللازمة للتطبيق.
- اعرض response.failed وresponse.incomplete كغير ناجحين، ولا تسمّ النص الجزئي مكتملًا.
- عامل حدث الخطأ أو استثناء النقل أو EOF قبل الإكمال أو الإلغاء المحلي كعدم نجاح وأغلق البث.
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 المتراكم مع الأحداث الخام.
- أعد المحاولة فقط قبل آثار مرئية أو مع ضمان عدم تكرار الأثر على مستوى التطبيق؛ الانقطاع لا يثبت أن الطلب الأعلى لم ينفذ شيئًا.
إبقاء البث على الخادم
Browser → your authenticated backend → GetAPI.ONE
server-held key only