HappyHorse 1.0 est disponibleEssayer maintenant
Model Not Found dans les APIs compatibles OpenAI : causes, solutions et checklist de débogage
guide

Model Not Found dans les APIs compatibles OpenAI : causes, solutions et checklist de débogage

EvoLink Team
EvoLink Team
Product Team
13 mai 2026
10 min de lecture

Vous avez changé votre base URL vers un fournisseur compatible OpenAI, envoyé une requête, et reçu cette réponse :

{
  "error": {
    "message": "The model `gpt-4o` does not exist or you do not have access to it.",
    "type": "invalid_request_error",
    "code": "model_not_found"
  }
}

C'est l'une des erreurs les plus fréquentes lors du passage d'un fournisseur d'API compatible OpenAI à un autre. Le format de requête est compatible, mais le model ID ne l'est pas.

« Compatible OpenAI » signifie que le format de requête fonctionne. Cela ne signifie pas que chaque model ID est identique chez chaque fournisseur.

En bref

  • « Model not found » signifie généralement que le model ID envoyé ne correspond pas à ce que le fournisseur attend.
  • Compatible OpenAI ≠ mêmes model IDs. Chaque fournisseur a sa propre nomenclature.
  • Vérifiez toujours : (1) la base URL, (2) le model ID, (3) la portée de l'API key, (4) la disponibilité du modèle.
  • Utilisez la matrice de débogage ci-dessous pour isoler la cause en moins de 5 minutes.

Pourquoi cette erreur se produit

« Compatible OpenAI » est devenu une convention du secteur. De nombreux fournisseurs (OpenRouter, EvoLink, LiteLLM, Portkey, Together AI, Fireworks, etc.) acceptent le même format de requête POST /v1/chat/completions qu'OpenAI utilise.

Mais la compatibilité s'arrête au format de requête. Les model IDs sont propres à chaque fournisseur :

FournisseurExemple de model ID pour GPT-4oExemple de model ID pour Claude Sonnet
OpenAIgpt-4oN/A (non disponible)
OpenRouteropenai/gpt-4oanthropic/claude-sonnet-4-20250514
EvoLinkgpt-4o ou openai/gpt-4oclaude-sonnet-4-20250514
Together AIN/A (pas tous les modèles)N/A
LiteLLMopenai/gpt-4oanthropic/claude-sonnet-4-20250514
Lorsque vous changez la base_url mais gardez le même model ID, le nouveau fournisseur ne le reconnaît pas et renvoie « model not found ».

Matrice de débogage : isoler la cause en 5 minutes

Parcourez cette checklist dans l'ordre. Arrêtez-vous dès que vous trouvez l'incohérence.

VérificationQuoi vérifierComment vérifierErreur courante
1. Base URLLa base URL pointe-t-elle vers le bon fournisseur ?Affichez ou loggez la base_url avant la requêteOubli de changer la base URL, ou variable d'environnement obsolète
2. Format du model IDLe model ID correspond-il à la nomenclature du fournisseur ?Consultez la liste des modèles ou la documentation du fournisseurUtilisation de gpt-4o alors que le fournisseur attend openai/gpt-4o (ou l'inverse)
3. Disponibilité du modèleLe modèle est-il réellement disponible chez ce fournisseur ?Consultez la page du catalogue de modèles du fournisseurSupposer que tous les fournisseurs ont tous les modèles
4. Portée de l'API keyVotre API key a-t-elle accès à ce modèle ?Testez un modèle dont vous savez qu'il fonctionne avec la même keyLa key est valide mais restreinte à certains modèles ou niveaux
5. Dépréciation du modèleLe model ID est-il toujours actif ?Consultez le changelog ou les annonces du fournisseurLe modèle a été renommé, versionné ou retiré
6. Faute de frappe ou casseLe model ID est-il orthographié exactement ?Comparez caractère par caractèregpt-4o vs gpt4o vs GPT-4o
7. Région ou forfaitVotre compte/région a-t-il accès ?Consultez la documentation du fournisseur sur la disponibilité régionaleModèle disponible aux États-Unis mais pas dans votre région

Les incohérences les plus courantes

Incohérence 1 : Oubli de changer le model ID après avoir changé la base URL

C'est la cause la plus fréquente. Vous migrez d'OpenAI vers un autre fournisseur :

# Avant : OpenAI direct
client = OpenAI(api_key="sk-...")

# Après : passage à un autre fournisseur mais conservation du même model ID
client = OpenAI(
    api_key="your-provider-key",
    base_url="https://api.another-provider.com/v1"  # Changé
)

response = client.chat.completions.create(
    model="gpt-4o",  # ← Ce model ID peut ne pas fonctionner chez le nouveau fournisseur
    messages=[{"role": "user", "content": "Hello"}]
)
Solution : Consultez la liste des modèles du fournisseur et utilisez son format de model ID.

Incohérence 2 : Le fournisseur utilise des model IDs avec espace de noms

Certains fournisseurs préfixent les model IDs avec le nom du fabricant d'origine :

# OpenAI direct
model = "gpt-4o"

# OpenRouter
model = "openai/gpt-4o"

# Certains fournisseurs utilisent leurs propres alias
model = "gpt-4o-2024-08-06"
Solution : Consultez toujours la documentation du fournisseur pour connaître la chaîne exacte du model ID.

Incohérence 3 : Modèle non disponible chez ce fournisseur

Tous les fournisseurs compatibles OpenAI ne prennent pas en charge tous les modèles :

  • Un fournisseur peut prendre en charge Claude mais pas les modèles GPT
  • Un fournisseur peut prendre en charge les modèles texte mais pas les modèles image ou vidéo
  • Un modèle nouvellement lancé peut ne pas être disponible partout dès le premier jour
Solution : Consultez le catalogue de modèles du fournisseur avant de faire le changement.

Incohérence 4 : Modèle retiré ou renommé

Les modèles d'IA sont mis à jour fréquemment. Un model ID qui fonctionnait le mois dernier peut être déprécié :

gpt-4-turbo → peut rediriger ou échouer selon le fournisseur
claude-3-opus-20240229 → version antérieure, peut avoir été remplacée
Solution : Consultez le changelog du fournisseur et utilisez le model ID actuel.

Comment vérifier le bon model ID

Option A : Appeler le endpoint des modèles

La plupart des fournisseurs compatibles OpenAI exposent un endpoint GET /v1/models :
curl https://api.your-provider.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

Cela renvoie la liste des modèles disponibles pour votre compte. Recherchez votre modèle cible dans la réponse.

Option B : Consulter la documentation du fournisseur

Tout fournisseur sérieux dispose d'une page listant ses modèles. Avant de changer, vérifiez :

  1. La chaîne exacte du model ID
  2. Si un préfixe d'espace de noms est requis
  3. Si le modèle est disponible dans votre forfait/niveau
  4. Si le modèle est disponible dans votre région

Option C : Envoyer une requête de test minimale

curl https://api.your-provider.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model-id",
    "messages": [{"role": "user", "content": "test"}],
    "max_tokens": 5
  }'

Si la réponse est valide, votre model ID est correct. Si « model not found » est renvoyé, essayez le model ID recommandé par le fournisseur.

Construire une sélection de modèles résiliente

Dans les systèmes de production, les incohérences de model ID ne devraient pas provoquer de pannes totales. Voici des patterns qui aident :

Pattern 1 : Couche de mappage des model IDs

Maintenez un mappage entre vos noms de modèles internes et les IDs spécifiques à chaque fournisseur :

MODEL_MAP = {
    "fast-chat": {
        "openai": "gpt-4o-mini",
        "openrouter": "openai/gpt-4o-mini",
        "evolink": "gpt-4o-mini",
    },
    "strong-chat": {
        "openai": "gpt-4o",
        "openrouter": "openai/gpt-4o",
        "evolink": "gpt-4o",
    },
    "reasoning": {
        "openai": "o3",
        "openrouter": "openai/o3",
        "evolink": "o3",
    }
}

def get_model_id(capability: str, provider: str) -> str:
    return MODEL_MAP[capability][provider]

Pattern 2 : Utiliser une API unifiée qui normalise les model IDs

Au lieu de maintenir votre propre couche de mappage, vous pouvez utiliser une passerelle qui accepte des model IDs standardisés et gère le routage vers les fournisseurs en interne.

Avec EvoLink, vous pouvez utiliser des model IDs familiers sans vous soucier de la nomenclature spécifique à chaque fournisseur :

from openai import OpenAI

client = OpenAI(
    api_key="your-evolink-key",
    base_url="https://api.evolink.ai/v1"
)

# Utilisez des model IDs standard — EvoLink gère le mappage
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}]
)

Ou laissez le Smart Router choisir le meilleur modèle pour votre charge de travail :

response = client.chat.completions.create(
    model="evolink/auto",
    messages=[{"role": "user", "content": "Hello"}]
)
Cela élimine entièrement le problème de mappage des model IDs pour les modèles pris en charge. Consultez le catalogue de modèles EvoLink pour les modèles disponibles.

Pattern 3 : Valider les model IDs au démarrage

N'attendez pas une requête utilisateur pour découvrir qu'un model ID est incorrect :

async def validate_models_on_startup(client, required_models: list[str]):
    """Appelle /v1/models au démarrage et vérifie que tous les modèles requis existent."""
    available = await client.models.list()
    available_ids = {m.id for m in available.data}

    for model in required_models:
        if model not in available_ids:
            raise RuntimeError(
                f"Model '{model}' not found on provider. "
                f"Available: {sorted(available_ids)}"
            )

Référence rapide : compatible OpenAI ne veut pas dire identique

Ce qui est compatibleCe qui N'EST PAS garanti être identique
Format de requête (/v1/chat/completions)Model IDs
Structure de réponseModèles disponibles
Schéma d'authentification (token Bearer)Limites de débit et quotas
Format de streaming (SSE)Codes et messages d'erreur
Paramètres de base (messages, temperature)Paramètres avancés et extensions

Cette distinction est la cause fondamentale de la plupart des erreurs « model not found » lors d'un changement de fournisseur.

Articles connexes

Browse EvoLink Model Catalog

FAQ

Pourquoi « gpt-4o » fonctionne sur OpenAI mais pas chez mon nouveau fournisseur ?

Parce que « compatible OpenAI » fait référence au format de requête, pas au catalogue de modèles. Chaque fournisseur a ses propres model IDs. Certains acceptent gpt-4o directement, d'autres exigent un préfixe comme openai/gpt-4o, et certains peuvent ne pas proposer ce modèle du tout.

Comment trouver le bon model ID pour mon fournisseur ?

Consultez la page de liste des modèles du fournisseur ou appelez son endpoint GET /v1/models. Le model ID doit correspondre exactement, y compris la casse, les suffixes de version et tout préfixe d'espace de noms.

Puis-je utiliser le même model ID chez tous les fournisseurs compatibles OpenAI ?

Pas de manière fiable. Bien que certains fournisseurs acceptent les mêmes IDs qu'OpenAI, beaucoup utilisent des conventions de nommage différentes. Maintenez soit une couche de mappage, soit utilisez une passerelle comme EvoLink qui normalise les model IDs pour vous.

Que faire si le model ID fonctionnait hier mais plus aujourd'hui ?

Le modèle a peut-être été déprécié, renommé ou retiré de votre niveau. Consultez le changelog et les annonces du fournisseur. Le cycle de vie des modèles en IA est plus rapide que dans les APIs traditionnelles.

« Model not found » est-il toujours un problème de model ID ?

Généralement oui, mais pas toujours. Cela peut aussi signifier : (1) votre API key n'a pas accès à ce modèle, (2) le modèle n'est pas disponible dans votre région, ou (3) le modèle nécessite un niveau d'abonnement supérieur.

Comment prévenir les erreurs model not found en production ?

Trois stratégies : (1) valider les model IDs au démarrage de l'application, (2) maintenir une couche de mappage des model IDs ou utiliser une passerelle normalisante, (3) implémenter une logique de fallback qui essaie un modèle alternatif si le principal renvoie « not found ».

Prêt à réduire vos coûts IA de 89 % ?

Commencez avec EvoLink dès aujourd'hui et découvrez la puissance du routage intelligent des API.