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

# CometAPI ile API hatalarını ve yeniden denemeleri yönetin

> İstek biçimi sorunlarını, kimlik doğrulama hatalarını, rate limit durumlarını ve yeniden denenebilir platform hatalarını ayırarak CometAPI hatalarını yönetin.

İsteğin düzeltilmesi mi yoksa yeniden denenmesi mi gerektiğine karar vererek CometAPI hatalarını yönetin. `429`, timeout sınıfı hataları ve geçici sunucu hatalarını backoff ile yeniden deneyin; hatalı biçimlendirilmiş istekleri veya kimlik doğrulama hatalarını yeniden denemeyin.

## Yalnızca yeniden denenebilir hataları yeniden deneyin

| Status or signal             | Retry?           | Action                                                          |
| ---------------------------- | ---------------- | --------------------------------------------------------------- |
| `400`                        | Hayır            | İstek gövdesini veya parametreleri düzeltin.                    |
| `401`                        | Hayır            | API key ve `Authorization` header'ını düzeltin.                 |
| `403`                        | Genellikle hayır | Desteklenmeyen alanları kaldırın ve model erişimini doğrulayın. |
| `429`                        | Evet             | Exponential backoff ve jitter ile yeniden deneyin.              |
| `500` with `invalid_request` | Hayır            | İstek biçimini düzeltin.                                        |
| `500`, `503`, `504`, `524`   | Evet             | Backoff ile yeniden deneyin ve request ID'yi saklayın.          |

## Backoff ekleyin

Aşağıdaki Python örneği yalnızca yeniden denenebilir hataları yeniden dener:

```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.")
```

Başarılı yanıt model çıktısını içerir:

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

## Yararlı bağlamı loglayın

Aşağıdaki JSON yapısı, kullanıcı sırlarını ve büyük dosyaları kaldırdıktan sonra saklamak için güvenlidir:

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

## Yaygın hatalar

| Error                                  | Fix                                                                      |
| -------------------------------------- | ------------------------------------------------------------------------ |
| `401` yeniden deneniyor                | Yeniden denemeleri durdurun ve API key'i döndürün veya yeniden yükleyin. |
| Geçersiz JSON yeniden deneniyor        | Başka bir istek göndermeden önce istek gövdesini doğrulayın.             |
| Loglarda request ID yok                | SDK bunu sarmalamadan önce tam hata gövdesini yakalayın.                 |
| `429` sonrasında anında yeniden deneme | Jitter ekleyin ve eşzamanlılığı azaltın.                                 |

## İlgili bağlantılar

* [Hata kodları ve işleme](/tr/errors/error-codes-handling)
* [Oran limitleri ve eşzamanlılık](/tr/guides/rate-limits-and-concurrency)
* [Modeller sayfası](/tr/overview/models)
* [Model dizini](https://www.cometapi.com/models/)
* [Fiyatlandırma](https://www.cometapi.com/pricing/)
* [CometAPI hızlı başlangıç](/tr/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 ile hata kodlarını ve yeniden denemeleri nasıl ele alırım?",
        "description": "İstek yapısı sorunlarını, kimlik doğrulama hatalarını, oran limitlerini ve yeniden denenebilir platform hatalarını ayırarak CometAPI hatalarını yönetin.",
        "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 Dokümantasyonu",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Kılavuzlar",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "CometAPI ile hata kodlarını ve yeniden denemeleri nasıl ele alırım?",
            "item": "https://apidoc.cometapi.com/guides/error-codes-and-retry-strategy"
          }
        ]
      }
    ]
    }
    `}
</script>
