L'article détaille 12 domaines spécifiques où le standard de l'API compatible OpenAI diverge entre différents moteurs d'inférence et fournisseurs hébergés, provoquant des échecs silencieux ou un comportement inattendu. Bien que les formes de requête principales et la diffusion en continu fonctionnent de manière fiable, des différences subtiles dans la gestion des paramètres, les réponses d'erreur et la prise en charge des fonctionnalités peuvent casser les applications.

  • Les paramètres inconnus sont souvent ignorés silencieusement plutôt que rejetés avec une erreur 400.
  • Les modèles de raisonnement peuvent nécessiter `max_completion_tokens` au lieu de `max_tokens`, avec une acceptation incohérente.
  • Les statistiques d'utilisation des tokens sont fréquemment absentes des réponses en streaming sauf si explicitement demandées via `stream_options`.
  • La prise en charge de l'appel d'outils varie considérablement, de nombreux serveurs manquant d'appels parallèles natifs ou d'une adhérence stricte au schéma.
  • Les implémentations du mode JSON diffèrent entre la validation d'objet de base et le décodage contraint avec des schémas.
  • La gestion du débordement de contexte varie des erreurs 400 strictes à la troncature silencieuse des invites système.
  • Les valeurs `finish_reason` incluent des ajouts spécifiques au fournisseur au-delà du stop standard, length et tool_calls.
  • Les enveloppes d'erreur et les réponses de limitation de débit (429, 503 ou 200 avec erreurs dans le corps) sont incohérentes.
  • Les paramètres de température sur les modèles de raisonnement peuvent être ignorés en interne bien qu'ils soient acceptés.
  • La gestion des entrées multimodales varie selon les limites de taille, les types MIME et le paramètre `detail`.
  • Les points de terminaison d'embedding manquent de portabilité en raison de la dimensionalité et de la normalisation différentes.
  • Les clés d'idempotence sont rarement prises en charge, et les en-têtes ID de requête utilisent des noms incohérents.

L'auteur recommande d'utiliser un script de sondage pour tester la conformité du fournisseur pour ces comportements spécifiques, car les versions des modèles changent fréquemment et les échecs silencieux peuvent être difficiles à déboguer en production.