← Blog
Publié le
2025-09-25

Migrer d’OpenAI vers une API LLM auto-hébergée

Les équipes changent pour trois raisons : les coûts, le contrôle et les données. Vous voulez un terminal privé, des performances prévisibles et une facture que vous pouvez expliquer. Vous pourrez peut-être conserver une grande partie de votre code client en le dirigeant vers votre propre serveur. Vérifiez que le modèle et les fonctionnalités de l’API utilisés par votre application sont pris en charge avant de basculer le trafic.

Essayez Compute dès aujourd'hui
Vous souhaitez héberger votre propre API ? Lancez un serveur vLLM sur Compute, choisissez une région et utilisez son URL HTTPS avec les SDK OpenAI pour les appels pris en charge. Configurez l’URL de base, la clé de l’endpoint et le nom du modèle servi, puis testez avant de basculer le trafic.

Ce que doit signifier « compatible avec OpenAI »

La compatibilité couvre les routes et les formats de requête pris en charge, pas toutes les fonctionnalités d’OpenAI. Avec vLLM, /v1/chat/completions nécessite un modèle et un template de chat adaptés ; /v1/completions prend en charge les modèles de génération de texte. Certains paramètres sont ignorés ou non pris en charge. Vérifiez les fonctions utilisées par votre application, notamment le streaming et les appels d’outils, ainsi que les réponses et la gestion des erreurs avec la version déployée du serveur.

Cartographiez vos modèles et paramètres

Créez une petite carte modèle dans la configuration. Votre catalogue sera différent de celui d'OpenAI. Gardez les noms stables et les valeurs par défaut des documents. Pour un premier test, essayez une température de 0,3 à 0,7, un top_p de 0,9 et une limite max_tokens réduite, puis validez les résultats pour votre modèle et votre tâche. Passez en revue les séquences d'arrêt, les pénalités de présence/fréquence et tous les champs spécifiques au serveur.

Mettez à jour votre client

Python

from openai import OpenAI
client = OpenAI(base_url="https://YOUR-ENDPOINT/v1", api_key="VOTRE_CLE")

resp = client.chat.completions.create(
   model="NOM_DU_MODELE_SERVI",  # à remplacer par le nom du modèle servi
   messages=[{"role":"user","content":"Rédigez une brève mise à jour du statut."}],
   max_tokens=200,
)
print(resp.choices[0].message.content)

Node.js

import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://YOUR-ENDPOINT/v1", apiKey: process.env.KEY });

const resp = await client.chat.completions.create({
 model: "NOM_DU_MODELE_SERVI",
 messages: [{ role: "user", content: "Résumez les notes de la réunion d’hier." }],
 max_tokens: 200
});
console.log(resp.choices[0].message.content);

Conservez votre logique de nouvelle tentative. Veillez à ce que les temps morts soient raisonnables. Enregistrez l'ID de demande (ou fournissez-en un) afin de pouvoir suivre les problèmes sur le client et le serveur.

Exécutez votre charge de travail d’IA sur une instance GPU cloud.

Choisissez une configuration disponible et testez votre charge de travail. Enjoy flexible pricing, powerful hardware, and 24/7 support. Scale as you grow—no long-term commitment needed.

Try Compute now

Streaming bien fait

Utilisez les événements envoyés par le serveur lorsque votre interface utilisateur attend une diffusion en direct. Testez les deux voies : flux heureux et annulations brusques. Vérifiez que les générations partielles sont utilisables si un utilisateur arrête prématurément. Assurez-vous que votre client décode correctement les segments et efface les buffers entre les requêtes.

Planifiez les limites tarifaires et les nouvelles tentatives

Tenez-vous en à un retard exponentiel avec gigue. Faites des demandes idempotentes lorsque vous le pouvez. Préférez 429 pour les signaux de retour en arrière et incluez une indication indiquant quand il faut réessayer. Du côté du serveur, définissez des limites tenant compte des jetons afin qu'une discussion comportant de nombreuses instructions ne bloque pas les autres.

Maîtrisez les coûts

La dérive budgétaire provient de longues instructions et de max_tokens lâches. Capuchons les deux. Diffusez les résultats. Invitations du système de mise en cache. Si vous utilisez RAG, veillez à ce que les morceaux soient petits et pertinents. Surveillez les incohérences de tokenisation entre les SDK.

Mesurez avant et après

Piste délai jusqu'au premier jeton (TTFT) et jetons par seconde (TPS) pour les mêmes tâches sur les deux terminaux. L’auto-hébergement ne garantit ni une latence plus faible ni un débit plus élevé. Mesurez les deux avec des longueurs d’entrée et de sortie et un nombre de requêtes simultanées comparables. Ajustez ensuite le matériel, le traitement par lots et la mise en cache selon vos objectifs.

Confidentialité et résidence

Décidez ce que vous enregistrez, pendant combien de temps et qui peut le lire. Évitez de stocker des instructions et des sorties brutes, sauf si vous y êtes obligé. Utilisez le protocole HTTPS. Faites pivoter les touches. Si vous exercez vos activités en Europe, conservez les données par région et conservez et supprimez les documents.

Essayez Compute
Les endpoints Compute utilisant vLLM sont en HTTPS par défaut. Choisissez la France pour les utilisateurs de l'UE ou une région des Émirats arabes unis pour les marchés voisins.

Liste de contrôle de migration

  1. Rédigez un modèle et une carte de paramètres.
  2. Configurez l’URL de base, la clé de l’endpoint et le nom du modèle servi dans votre client.
  3. Testez le chat et le streaming avec un ensemble d'invites fixes.
  4. Vérifiez les formes d'erreur et réessayez le comportement.
  5. Capturez max_tokens et coupez les instructions.
  6. Ajoutez des limites de débit tenant compte des jetons sur la passerelle.
  7. Enregistrez le TTFT, le TPS, la longueur de la file d'attente et l'utilisation de la mémoire.
  8. Choisissez une région proche des utilisateurs et confirmez la latence.
  9. Passez en revue les politiques de journalisation et de conservation.
  10. Déployez progressivement et observez les chiffres.

FAQ

Le streaming fonctionne-t-il de la même manière ?
Le comportement du streaming peut varier même si les deux serveurs utilisent Server-Sent Events. Testez le décodage des segments, les motifs de fin et l’arrêt anticipé dans votre client.

Qu'en est-il des différences de tokenisation ?
Différents modèles utilisent différents tokeniseurs. Synchronisez le tokenizer et le modèle et vérifiez les chiffres dans le calcul de votre budget.

Comment tester rapidement la compatibilité ?
Exécutez une petite suite de messages de discussion sur les deux terminaux et comparez les réponses, les latences et les codes d'erreur. Ajoutez un test de streaming et un test de temporisation.

Puis-je conserver des données dans l'UE ?
Oui Hébergez le terminal dans une région de l'UE, utilisez le protocole HTTPS, contrôlez l'accès à l'aide de clés et de listes IP et définissez des limites de rétention.

Votre prochaine charge de travail sur Hivenet.

Choisissez une charge de travail d’IA, de calcul ou de stockage à tester sur Hivenet, ou échangez avec notre équipe sur sa mise en production.