تكون معالجة الأخطاء في CometAPI أسهل عندما تفصل بين مشكلات بنية الطلب ومشكلات المصادقة وأخطاء المسار وإخفاقات المنصة القابلة لإعادة المحاولة. استخدم مزيجًا من حالة HTTP وDocumentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
error.code وerror.message لتحديد ما إذا كان ينبغي إصلاح الطلب أو إعادة محاولته.
فرز سريع
| Status | ما الذي يعنيه عادةً | إعادة المحاولة؟ | الإجراء الأول |
|---|---|---|---|
400 | فشل التحقق من صحة الطلب قبل أن تتم معالجته بشكل طبيعي. | لا | تحقّق من model وmessages وبنية JSON وأنواع الحقول. |
401 | مفتاح API مفقود أو بصيغة غير صحيحة أو غير صالح. | لا | تحقّق من Authorization: Bearer <COMETAPI_KEY>. |
403 | تم حظر الوصول أو لم يكن الطلب الحالي مسموحًا به. | غالبًا لا | أعد المحاولة باستخدام طلب معروف بأنه صحيح، وأزل الحقول الخاصة بالنموذج أولًا. |
| خطأ في المسار | عنوان URL الأساسي غير صحيح أو مسار endpoint غير صحيح. في Comet قد يظهر هذا كإعادة توجيه 301 أو HTML، وليس كاستجابة JSON 404 واضحة. | لا | استخدم https://api.cometapi.com/v1 كما هو تمامًا، وعطّل اتباع عمليات إعادة التوجيه تلقائيًا أثناء تصحيح الأخطاء. |
429 | تقييد للمعدل أو حالة تشبع مؤقتة. | نعم | استخدم exponential backoff مع jitter. |
500 مع error.code: invalid_request | ظهر طلب غير صحيح عبر استجابة بحالة من جهة الخادم. | لا | أصلح نص الطلب قبل إعادة المحاولة. |
500 و503 و504 و524 | فشل متعلق بالمنصة أو المزوّد أو من فئة المهلة الزمنية. | نعم | أعد المحاولة باستخدام backoff واحتفِظ بمعرّف الطلب. |
غلاف الخطأ
تستخدم العديد من حالات الفشل في CometAPI نص خطأ مثل هذا:code فارغًا. عندما تكون الحالة 500، اعتبر error.code وerror.message الإشارة الحاسمة.
400 Bad Request
يعني 400 عادةً أن نص الطلب فشل في التحقق من الصحة قبل أن تتم معالجة الطلب بشكل طبيعي.
الأسباب الشائعة:
- غياب الحقول المطلوبة مثل
model - بنية JSON غير صالحة
- إرسال حقل بنوع غير صحيح
- إعادة استخدام معلمات خاصة بمزوّد لا يقبلها endpoint المحدد
your-model-id بأي model ID حالي من صفحة نماذج CometAPI.
لا تفترض أن كل طلب chat غير صحيح سيُرجع 400. فقد تظهر أيضًا حالات غياب حقول chat المطلوبة مثل messages على شكل 500 مع error.code: invalid_request.
500 Internal Server Error
تشير معظم استجابات 500 إلى فشل في المنصة أو المزوّد. بالنسبة إلى Chat Completions، قد تظهر بعض الطلبات غير الصحيحة أيضًا على شكل 500 مع استمرار حملها error.code: invalid_request.
أحد الأمثلة هو طلب يحذف messages:
500 تتضمن error.code: invalid_request، فتعامل معها على أنها مشكلة في الطلب:
- أصلح نص الطلب.
- قارِن الحمولة بمخطط endpoint.
- أعد المحاولة فقط بعد تصحيح الحمولة.
500 لا تشير إلى طلب غير صالح، فاحتفِظ بـ request id واستخدم backoff.
401 Invalid Token
عادةً ما يبدو فشل token بهذا الشكل:
- يجب أن يكون الترويسة بالشكل المطابق تمامًا
Authorization: Bearer <COMETAPI_KEY>. - تأكد من أن تطبيقك لا يحمّل مفتاحًا قديمًا من
.envأو سجل shell أو مخزن secrets في بيئة النشر. - إذا فشل أحد المفاتيح بينما نجح مفتاح آخر مع نفس الطلب، فاعتبر هذه مشكلة token وليست مشكلة endpoint.
403 Forbidden
غالبًا ما يكون 403 إحدى هذه الحالات:
- يتم حظر الطلب بواسطة قاعدة على مستوى المنصة مثل تصفية WAF
- token أو route غير مسموح لهما باستخدام model المطلوب أو شكل الطلب المطلوب
- model المختار يرفض أحد المعلمات المتقدمة التي مررتها
- أعد المحاولة باستخدام طلب نصي بسيط جدًا على model معروف بأنه يعمل.
- أزل الحقول المتقدمة والمعلمات الخاصة بمزود الخدمة، ثم أعد إضافتها تدريجيًا.
- إذا تضمّن الرد request id، فاحتفظ به قبل التواصل مع الدعم.
عنوان URL الأساسي أو المسار غير صحيح
في Comet، قد يظهر خطأ في المسار على أحد الأشكال التالية:- إعادة توجيه
- استجابة HTML غير JSON إذا كان العميل لديك يتبع عمليات إعادة التوجيه
- خطأ parsing داخل SDK الخاص بك
- طلب لا يصل إلى طبقة API بشكل سليم
- تأكد من أن عنوان URL الأساسي يتضمن
/v1. - تأكد من أن مسار endpoint يطابق التوثيق تمامًا.
- عطّل اتباع إعادة التوجيه التلقائي أثناء تصحيح مشكلات المسار.
413 Request Entity Too Large
إذا رأيت 413، فاعتبرها أولًا مشكلة حجم طلب. من الأسباب الشائعة:
- أحمال base64 كبيرة
- صور أو ملفات صوتية كبيرة جدًا مضمنة مباشرة
- أجسام multipart أو JSON كبيرة جدًا
- قلّل حجم المحتوى المرفق أو اضغطه.
- قسّم المهام الكبيرة إلى طلبات أصغر.
- لا تفترض أن طول النص العادي هو السبب الوحيد.
429 Too Many Requests
تعامل مع 429 على أنه قابل لإعادة المحاولة:
- استخدم exponential backoff مع jitter.
- قلّل التوازي في الاندفاعات.
- أبقِ تسجيل الطلبات مفعّلًا حتى تتمكن من معرفة أي route وmodel يصلان إلى حد الإشباع أولًا.
503, 504, and 524
هذه الحالات هي إخفاقات من جهة الخادم أو من فئة timeout.
إرشادات عملية:
503: خدمة route أو مزود الخدمة غير متاحة مؤقتًا504و524: إخفاقات من فئة timeout بين المنصة أو edge أو خدمة مزود الخدمة
- أعد المحاولة باستخدام backoff.
- احتفظ بـ
request idوendpoint وmodel والطابع الزمني. - إذا تكرر الإخفاق نفسه عبر عدة محاولات إعادة، فتواصل مع الدعم مع تزويدهم بهذه المعلومات.
قبل التواصل مع الدعم
التقط هذه التفاصيل أولًا:- طريقة HTTP
- مسار نقطة النهاية
- Model ID
- JSON لهيئة الطلب بعد تنقيح البيانات الحساسة (وهذا هو العنصر الأكثر فائدة في معظم استدعاءات API)
- معلمات الاستعلام إذا كان الطلب الذي فشل يستخدمها
- نص هيئة الاستجابة بالكامل إذا كان عميلك قد التقطها
- حالة HTTP الكاملة
error.messageكما هو تمامًا- أي
request id - طابع زمني تقريبي
- ما إذا كان الطلب نفسه يعمل مع model آخر أو token آخر
- أسماء الحقول والقيم النصية التي أرسلتها إلى جانب الملف
- اسم الملف ونوعه والحجم التقريبي للملف
- ما إذا كان الملف قد رُفع مباشرة، أو تمت الإشارة إليه عبر URL، أو تم تضمينه بصيغة base64