> ## 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.

# التعامل مع أخطاء API وإعادة المحاولة باستخدام CometAPI

> تعامل مع أخطاء CometAPI عبر فصل مشكلات شكل الطلب، وإخفاقات المصادقة، وحدود المعدل، وإخفاقات المنصة القابلة لإعادة المحاولة.

تعامل مع أخطاء CometAPI من خلال تحديد ما إذا كان يجب إصلاح الطلب أو إعادة محاولته. أعد محاولة `429`، وإخفاقات فئة timeout، وإخفاقات الخادم المؤقتة باستخدام backoff؛ ولا تعد محاولة الطلبات غير الصحيحة أو إخفاقات المصادقة.

## أعد المحاولة فقط عند الإخفاقات القابلة لإعادة المحاولة

| Status or signal             | Retry?   | Action                                              |
| ---------------------------- | -------- | --------------------------------------------------- |
| `400`                        | لا       | أصلح نص الطلب أو parameters.                        |
| `401`                        | لا       | أصلح مفتاح API وترويسة `Authorization`.             |
| `403`                        | عادةً لا | أزل الحقول غير المدعومة وتحقق من الوصول إلى model.  |
| `429`                        | نعم      | أعد المحاولة باستخدام exponential backoff وjitter.  |
| `500` with `invalid_request` | لا       | أصلح شكل الطلب.                                     |
| `500`, `503`, `504`, `524`   | نعم      | أعد المحاولة باستخدام backoff واحتفظ بـ request ID. |

## أضف backoff

يعيد مثال Python التالي المحاولة فقط عند الإخفاقات القابلة لإعادة المحاولة:

```python theme={null}
import os
import random
import time
from openai import APIError, OpenAI, RateLimitError

client = OpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1",
)

for attempt in range(5):
    try:
        response = client.chat.completions.create(
            model="your-model-id",
            messages=[{"role": "user", "content": "Say hello."}],
        )
        print(response.choices[0].message.content)
        break
    except RateLimitError:
        delay = min(30, 2**attempt) + random.random()
        time.sleep(delay)
    except APIError as error:
        status_code = getattr(error, "status_code", None)
        if status_code in {500, 503, 504, 524}:
            delay = min(30, 2**attempt) + random.random()
            time.sleep(delay)
            continue
        raise
else:
    raise RuntimeError("The request failed after retries.")
```

تتضمن الاستجابة الناجحة مخرجات model:

```json theme={null}
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Hello."
      }
    }
  ],
  "usage": {
    "total_tokens": 9
  }
}
```

## سجّل سياقًا مفيدًا

يكون شكل JSON التالي آمنًا للتخزين بعد إزالة أسرار المستخدم والملفات الكبيرة:

```json theme={null}
{
  "method": "POST",
  "path": "/v1/chat/completions",
  "model": "your-model-id",
  "status": 429,
  "request_id": "request_id_from_error_message",
  "retryable": true
}
```

## الأخطاء الشائعة

| Error                          | Fix                                                     |
| ------------------------------ | ------------------------------------------------------- |
| إعادة محاولة `401`             | أوقف إعادة المحاولة وبدّل مفتاح API أو أعد تحميله.      |
| إعادة محاولة JSON غير صالح     | تحقّق من صحة نص الطلب قبل إرسال طلب آخر.                |
| لا يوجد request ID في السجلات  | التقط نص الخطأ الكامل قبل أن يقوم SDK الخاص بك بتغليفه. |
| إعادة المحاولة فورًا بعد `429` | أضف jitter وقلّل التزامن.                               |

## روابط ذات صلة

* [رموز الأخطاء ومعالجتها](/ar/errors/error-codes-handling)
* [حدود المعدل والتزامن](/ar/guides/rate-limits-and-concurrency)
* [صفحة النماذج](/ar/overview/models)
* [دليل النماذج](https://www.cometapi.com/models/)
* [الأسعار](https://www.cometapi.com/pricing/)
* [البدء السريع مع CometAPI](/ar/overview/quick-start)

<script type="application/ld+json">
  {`
    {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "TechArticle",
        "@id": "https://apidoc.cometapi.com/guides/error-codes-and-retry-strategy",
        "headline": "كيف أتعامل مع رموز الأخطاء وإعادة المحاولة باستخدام CometAPI؟",
        "description": "تعامل مع أخطاء CometAPI من خلال الفصل بين مشكلات شكل الطلب، وإخفاقات المصادقة، وحدود المعدل، وإخفاقات المنصة القابلة لإعادة المحاولة.",
        "url": "https://apidoc.cometapi.com/guides/error-codes-and-retry-strategy",
        "author": {
          "@type": "Organization",
          "name": "CometAPI"
        },
        "publisher": {
          "@type": "Organization",
          "name": "CometAPI",
          "url": "https://www.cometapi.com"
        }
      },
      {
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "مستندات CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "الأدلة",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "كيف أتعامل مع رموز الأخطاء وإعادة المحاولة باستخدام CometAPI؟",
            "item": "https://apidoc.cometapi.com/guides/error-codes-and-retry-strategy"
          }
        ]
      }
    ]
    }
    `}
</script>
