Skip to main content
Suivez ces bonnes pratiques pour gérer efficacement les erreurs de W&B Inference et garantir la fiabilité de vos applications.

1. Implémentez toujours une gestion des erreurs

Encapsulez les appels d’API dans des blocs try-except :
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 façon appropriée

2. Utilisez une logique de nouvelle tentative avec backoff exponentiel

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"Tentative {attempt + 1} échouée, nouvelle tentative dans {delay}s...")
            time.sleep(delay)
    
    return None

3. Surveillez votre utilisation

  • 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

4. Gérez les codes d’erreur spécifiques

def handle_inference_error(error):
    error_str = str(error)
    
    if "401" in error_str:
        # Authentification invalide
        raise ValueError("Vérifiez votre clé API et la configuration du projet")
    elif "402" in error_str:
        # Crédits insuffisants
        raise ValueError("Crédits insuffisants")
    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

5. Définissez des délais d’expiration adaptés

Configurez des délais d’expiration raisonnables pour votre cas d’utilisation :
# 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
)

Conseils supplémentaires

  • 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

Inférence