> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quelles sont les bonnes pratiques pour gérer les erreurs de Serverless Inference ?

Suivez ces bonnes pratiques pour gérer efficacement les erreurs de W\&B Serverless Inference et garantir la fiabilité de vos applications.

<div id="always-implement-error-handling">
  ## Implémentez toujours une gestion des erreurs
</div>

Encapsulez les appels d’API dans des blocs `try-except` :

```python theme={null}
import openai

try:
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=messages
    )
except Exception as e:
    print(f"Error: {e}")
    # Gérer l'erreur de manière appropriée
```

<div id="use-retry-logic-with-exponential-backoff">
  ## Utilisez une logique de nouvelle tentative avec backoff exponentiel
</div>

Réessayez en cas d’échecs transitoires, avec des délais croissants entre les tentatives :

```python theme={null}
import time
from typing import Optional

def call_inference_with_retry(
    client, 
    messages, 
    model: str,
    max_retries: int = 3,
    base_delay: float = 1.0
) -> Optional[str]:
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages
            )
            return response.choices[0].message.content
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            
            # Calculer le délai avec un backoff exponentiel
            delay = base_delay * (2 ** attempt)
            print(f"Attempt {attempt + 1} failed, retrying in {delay}s...")
            time.sleep(delay)
    
    return None
```

<div id="monitor-your-usage">
  ## Surveillez votre utilisation
</div>

* Suivez l’utilisation des crédits sur la page **Billing** de W\&B.
* Configurez des alertes avant d’atteindre les limites.
* Enregistrez l’utilisation de l’API dans votre application.

<div id="handle-specific-error-codes">
  ## Gérer les codes d'erreur spécifiques
</div>

```python theme={null}
def handle_inference_error(error):
    error_str = str(error)
    
    if "401" in error_str:
        # Authentification invalide
        raise ValueError("Check your API key and project configuration")
    elif "402" in error_str:
        # Crédits insuffisants
        raise ValueError("Insufficient credits")
    elif "429" in error_str:
        # Limite de débit atteinte
        return "retry"
    elif "500" in error_str or "503" in error_str:
        # Erreur serveur
        return "retry"
    else:
        # Erreur inconnue
        raise
```

<div id="set-appropriate-timeouts">
  ## Définissez des délais d'expiration adaptés
</div>

Configurez des délais d'expiration raisonnables pour votre cas d'utilisation :

```python theme={null}
# Pour les réponses plus longues
client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',
    api_key="your-api-key",
    timeout=60.0  # délai d'expiration de 60 secondes
)
```

<div id="additional-tips">
  ## Conseils supplémentaires
</div>

* Journalisez les erreurs avec un horodatage pour faciliter le débogage.
* Utilisez des opérations asynchrones pour mieux gérer la concurrence.
* Implémentez des disjoncteurs pour les systèmes de production.
* Mettez les réponses en cache lorsque c'est pertinent afin de réduire les appels à l'API.

***

<Badge stroke shape="pill" color="orange" size="md">[Inférence](/fr/support/models/tags/inference)</Badge>
