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

# Gestire gli errori API e i retry con CometAPI

> Gestisci gli errori di CometAPI separando i problemi di forma della richiesta, gli errori di autenticazione, i limiti di rate e i guasti temporanei della piattaforma che possono essere ritentati.

Gestisci gli errori di CometAPI decidendo se la richiesta deve essere corretta o ritentata. Ritenta `429`, i guasti della classe timeout e i guasti temporanei del server con backoff; non ritentare richieste malformate o errori di autenticazione.

## Ritenta solo i guasti ritentabili

| Status o segnale            | Retry?       | Azione                                                          |
| --------------------------- | ------------ | --------------------------------------------------------------- |
| `400`                       | No           | Correggi il body della richiesta o i parametri.                 |
| `401`                       | No           | Correggi la chiave API e l'header `Authorization`.              |
| `403`                       | Di solito no | Rimuovi i campi non supportati e verifica l'accesso al modello. |
| `429`                       | Sì           | Ritenta con backoff esponenziale e jitter.                      |
| `500` con `invalid_request` | No           | Correggi la forma della richiesta.                              |
| `500`, `503`, `504`, `524`  | Sì           | Ritenta con backoff e conserva il request ID.                   |

## Aggiungi il backoff

Il seguente esempio Python ritenta solo i guasti ritentabili:

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

La risposta riuscita include l'output del modello:

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

## Registra il contesto utile

La seguente struttura JSON è sicura da archiviare dopo aver rimosso i segreti utente e i file di grandi dimensioni:

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

## Errori comuni

| Errore                     | Correzione                                                             |
| -------------------------- | ---------------------------------------------------------------------- |
| Ritentare `401`            | Interrompi i retry e ruota o ricarica la chiave API.                   |
| Ritentare JSON non valido  | Valida il body della richiesta prima di inviare un'altra richiesta.    |
| Nessun request ID nei log  | Acquisisci il body di errore esatto prima che il tuo SDK lo incapsuli. |
| Retry immediato dopo `429` | Aggiungi jitter e riduci la concorrenza.                               |

## Link correlati

* [Codici di errore e gestione](/it/errors/error-codes-handling)
* [Rate limit e concorrenza](/it/guides/rate-limits-and-concurrency)
* [Pagina dei modelli](/it/overview/models)
* [Directory dei modelli](https://www.cometapi.com/models/)
* [Prezzi](https://www.cometapi.com/pricing/)
* [Avvio rapido di CometAPI](/it/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": "Come gestisco i codici di errore e i retry con CometAPI?",
        "description": "Gestisci gli errori di CometAPI separando i problemi nella struttura della richiesta, gli errori di autenticazione, i rate limit e i malfunzionamenti della piattaforma per cui è possibile eseguire un retry.",
        "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": "Documentazione CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Guide",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Come gestisco i codici di errore e i retry con CometAPI?",
            "item": "https://apidoc.cometapi.com/guides/error-codes-and-retry-strategy"
          }
        ]
      }
    ]
    }
    `}
</script>
