← Back

Guide de l'acheteur sur les API compatibles avec OpenAI

« Compatible avec OpenAI » devrait signifier que vous pouvez modifier une URL de base, faire pivoter une clé et expédier, ce qui représente une véritable baisse de remplacement. De nombreuses API se rapprochent, quelques-unes font les choses correctement et certaines masquent des bizarreries qui interrompent la production. Utilisez les options ci-dessous pour le savoir avant de procéder à la migration.

Essayez Compute dès aujourd'hui: Lancez un VllM serveur d'inférence activé Calculer dans France (UE), USA, ou ÉMIRATS. Vous obtenez un point de terminaison HTTPS avec des itinéraires de type OpenAI. Dirigez votre SDK OpenAI existant vers la nouvelle URL de base et commencez à tester.

Ce que doit signifier la compatibilité

  • Routes prises en charge: /v1/chat/completions, /v1/completions (facultatif), /v1/embeddings.
  • Formes de charge utile prises en charge: modèle, messages, max_tokens, température, top_p, arrêt, flux.
  • Streaming pris en charge via Événements envoyés par le serveur (SSE) avec le format de bloc que votre SDK analyse déjà.
  • Schéma d'erreur pris en charge avec des champs stables (type, message, code, param, request_id).
  • En-têtes de limite de débit pris en charge et un Retry‑After honnête.
  • Valeurs par défaut raisonnables avec des documents clairs (jetons, échantillonnage, délais d'attente).
  • Sécurité et résidence prises en charge boutons : région, politique de journalisation, rétention.

Start in seconds with the fastest, most affordable cloud GPU clusters.

Launch an instance in under a minute. Enjoy flexible pricing, powerful hardware, and 24/7 support. Scale as you grow—no long-term commitment needed.

Try Compute now

Démarrage rapide : permutez l'URL de base

Python

Pour authentifier vos demandes, insérez votre clé API dans le paramètre api_key. L'exemple de code suivant montre comment envoyer des requêtes au point de terminaison de l'API compatible avec OpenAI :

depuis openai, importez OpenAI
client = OpenAI (base_url= » https://YOUR-ENDPOINT/v1 «, API_KEY="VOTRE_CLÉ »)

resp = client.chat.completions.create (
modèle="f3-7b-instruct »,
messages= [{"role » :"user », "content » :"Rédigez une mise à jour de statut en une phrase. «}],
max_jetons=60
)
imprimer (resp.choices [0] .message.content)

Nœud

Assurez-vous de définir votre clé API dans le champ APIKey pour authentifier les demandes. Ce code montre comment envoyer des requêtes au point de terminaison de l'API compatible avec OpenAI :

importer OpenAI depuis « openai » ;
const client = new OpenAI ({baseUrl : "https://YOUR-ENDPOINT/v1 «, ApiKey : process.env.key}) ;

const r = await client.chat.completions.create ({
modèle : « f3-7b-instruct »,
messages : [{role : « user », content : « Donnez-moi un risque clé pour ce projet. »}],
nombre maximum de jetons : 60
}) ;
console.log (r.choices [0] .message.content) ;

Si cela fonctionne sans modifications de code au-delà de l'URL de base, vous êtes prêt. Vérifiez maintenant les bords.

Points de terminaison à tester (minimaux mais révélateurs)

  1. Complétion du chat — hors diffusion et streaming.
  2. Complétions — si vous utilisez toujours des points de fin de texte.
  3. Embrayages — lot > 1 entrée ; vérifiez l'ordre et la taille du vecteur.
  4. Liste des modèles — GET /v1/models ; vérifiez que les identifiants correspondent à la documentation et à la politique d'accès.
  5. Modération (facultatif) : si le fournisseur affirme la compatibilité, vérifiez le schéma et assurez-vous que la configuration des terminaux est correcte.

Ce qu'il faut affirmer

  • Codes d'état: 200 en cas de succès, 4xx en cas d'erreur du client, 5xx en cas d'erreur sur le serveur.
  • Noms des champs: choices [] .message.content, usage.prompt_tokens, usage.completion_tokens.
  • Stabilité des commandes: les résultats d'intégration s'alignent sur les entrées, garantissant ainsi la cohérence des résultats et l'ordre attendu.
  • Utilisation des jetons: les chiffres s'additionnent et correspondent à vos instructions ; vérifiez que les résultats reflètent le nombre exact de jetons.

Streaming et SSE (où de nombreuses API dérivent)

  • en-têtes SSE set et pas de mise en mémoire tampon du proxy.
  • Format de bloc: Le SDK peut analyser des deltas incrémentiels à partir de la réponse du serveur ; le message final contient usage et finish_reason. Une gestion correcte de la réponse garantit un streaming fluide et une analyse précise.
  • Annulation: l'abandon de la requête libère rapidement les ressources du serveur en arrêtant le flux de réponse.
  • Heure du premier jeton (TTFT): mesurez p50/p95 ; comparez avec votre fournisseur actuel.

Boucle de flux de nœuds (devrait simplement fonctionner)

flux constant = wait client.chat.completions.create ({
modèle : « f3-7b-instruct »,
messages : [{role : « user », content : « Diffusez 3 phrases courtes. »}],
stream : vrai,
nombre maximum de jetons : 120
}) ;
pour wait (partie constante du flux) {
const delta = chunk.choices ?. [0] ?. delta ?. contenu ;
if (delta) process.stdout.write (delta) ;
}

Erreurs, limites et en-têtes

  • Erreurs structurées: champs lisibles par machine (type, message, code, request_id). Soyez conscient des problèmes connus liés à la gestion des erreurs, tels que des codes d'erreur incohérents ou des formats de charge utiles inattendus.
  • Limites de taux: documents clairs + en-têtes ; Retry‑After doit correspondre à la réalité. Il peut y avoir des problèmes liés à l'application des limites de débit ou à la précision de l'en-tête dans certains environnements.
  • 429 comportement: les clients se rétablissent avec nervosité ; les streams se terminent proprement lorsque les limites sont atteintes.
  • Délais d'attente: confirmez les délais d'expiration raisonnables du serveur et maintenez-les actifs pour le streaming.

Exemple de charge utile d'erreur

{
« erreur » : {
« type » : « limite_limite dépassée »,
« message » : « La clé a dépassé les 60 000 jetons/minute. «,
« code » : « tpm_exceeded »,
« identifiant de la demande » : «... »
}
}

Noms des modèles, valeurs par défaut et échantillonnage

  • ID de modèle: cohérent et documenté ; vous devrez peut-être mapper les ID de modèle d'OpenAI vers le nouveau fournisseur à l'aide d'une table de mappage si vous migrez depuis OpenAI names.
  • Valeurs par défaut: pénalités de température, top_p, présence/fréquence ; max_tokens sains.
  • Séquences d'arrêt: honoré et non modifié en silence.
  • Appel d'outils/modes JSON (si proposé) : schémas stables et exemples.
  • Quantification et longueur du contexte: limites et compromis divulgués.

Invitations d'évaluation et contrôles de parité

  • Les développeurs devraient créer un ensemble de graines (30 à 60 instructions) à partir de votre charge de travail réelle et exécutez les tests d'évaluation.
  • Mesurer TTFT et jetons/sec en plus de la qualité.
  • Gardez casquettes serrées pendant les tests pour démontrer l'équité du traitement par lots.
  • Comparez parité des fonctionnalités: comportement du streaming, séquences d'arrêt, types d'erreurs et nombre de tokeniseurs.

Sécurité, confidentialité et résidence

  • Choix de la région avec des emplacements documentés. Assurez-vous de sélectionner la région appropriée pour respecter les exigences de sécurité et de confidentialité.
  • Politique de journalisation: chiffres contre texte brut ; rétention et suppression par défaut. Assurez-vous que les configurations de journalisation protègent les données sensibles.
  • Clés et accès: clés par service, rotation, listes d'adresses IP autorisées pour l'administrateur. Assurez-vous que la gestion des clés et les contrôles d'accès sont en place.
  • Contrats: DPA/BAA si nécessaire ; liste des sous-processeurs et politique de modification.
Essayez Compute dès aujourd'hui: Dirigez votre client OpenAI vers un VllM point de terminaison activé Calculer. Conservez le trafic par région, diffusez des jetons et appliquez des plafonds. Exécutez la liste de contrôle ci-dessus en fonction de vos véritables instructions.

Un plan de test simple qui concrétise la « compatibilité avec OpenAI »

Modifiez l'URL de base, puis vérifiez les points de terminaison, le streaming et les erreurs à l'aide de vos propres instructions. Gardez le contrôle sur les points de terminaison et les configurations de vos API tout au long du processus de migration et de test. Mesurer heure d'arrivée du premier jeton et jetons par seconde, vérifiez les en-têtes et les valeurs par défaut des limites de débit, et demandez des documents clairs sur la région et les journaux. S'il passe dans cette liste, vous pouvez changer en toute confiance et revenir en arrière tout aussi facilement.

FAQ

Que couvre réellement la notion de « compatible avec OpenAI » ?

Routes, charges utiles, streaming, erreurs et comportements liés aux limites de débit que les SDK et clients OpenAI existants gèrent déjà. Pour des informations plus détaillées, reportez-vous à la section correspondante de la documentation ou du guide.

Dois-je modifier mon tokenizer ou mes instructions ?

Non pour le wrapper client ; peut-être pour le modèle. Lors de la migration, vérifiez ce qui a changé en termes de nombre et de valeurs par défaut, puis conservez un petit mappage entre les anciens et les nouveaux ID de modèle.

Comment tester SSE sans bibliothèque ?

Utilisez des requêtes HTTP avec curl et l'option -N, ou utilisez l'API Streams du navigateur. Vous devriez voir des segments incrémentiels et une fin de flux claire.

Et si les chiffres d'utilisation ne correspondent pas à mes estimations ?

Traitez l'utilisation côté serveur comme une vérité. Alignez le compteur de votre client sur le tokenizer du modèle et normalisez les entrées.

Puis-je compter sur Retry‑After pour faire marche arrière ?

Oui, si le fournisseur est honnête. Les fournisseurs peuvent implémenter Retry‑After de manière différente, alors faites toujours preuve de nervosité et respectez Retry‑After ; les streams doivent se terminer proprement avec un quota souple.

Comment puis-je conserver la possibilité de revenir en arrière ?

Enveloppez l'URL de base et les ID de modèle dans la configuration. Ajoutez des options de configuration ou des tableaux de bord de métriques pour faciliter le retour en arrière. Gardez votre ensemble d'évaluations et vos tableaux de bord de métriques à portée de main afin de pouvoir les comparer à tout moment.

← Back