Québec, Canada

403-1381 1re Avenue

+1 581.849.27.96

bdgouthiere@gmail.com

Changer de fournisseur LLM en changeant une URL : la migration

Ou : trois lignes à changer, et six détails qui décident si la quatrième journée sera calme.

La réponse courte : la plupart des API LLM européennes acceptent le format d’OpenAI. Avec le client officiel d’OpenAI, migrer revient à changer trois valeurs : l’adresse de base, la clé et le nom du modèle. Infomaniak, OVHcloud et Scaleway le documentent, et un serveur vLLM ou Ollama sur votre propre GPU fait de même. Mais compatible ne veut pas dire identique : noms de modèles, streaming par défaut, appel d’outils, limites de débit et dimensions des embeddings changent d’un fournisseur à l’autre. C’est le chemin le plus court vers une API LLM hébergée en Europe, à condition de connaître ces six pièges.

Le format d’OpenAI est devenu une norme de fait. Son point d’entrée /v1/chat/completions, ses messages en rôles système, utilisateur et assistant, son format d’appel d’outils sont repris par presque tous les serveurs de modèles ouverts. Infomaniak va plus loin et expose aussi une route au format d’Anthropic pour les messages, et une autre au format de Cohere pour le reclassement de documents. Mistral, en revanche, publie son propre SDK et sa documentation ne promet pas la compatibilité avec le client d’OpenAI, même si sa route de conversation porte le même nom.

Avant de toucher au code, une étape suffit à éviter la moitié des problèmes : lister les modèles disponibles par la route /models du nouveau fournisseur, et noter leur nom exact. Chez Infomaniak, c’est mistralai/Mistral-Small-4-119B-2603, pas mistral-small.

Pour qui : une équipe dont le code appelle déjà l’API d’OpenAI et qui veut passer à un modèle ouvert hébergé en Suisse sans réécrire l’application.

À partir de : 0,20 le million de tokens en entrée pour Mistral Small 4 ou Gemma 4 chez Infomaniak AI Services, en francs suisses ou en euros hors taxes ; un million de crédits offerts le premier mois.

Pour démarrer : activer Infomaniak AI Services, créer un jeton d’API, récupérer l’identifiant de produit, puis remplacer l’adresse, la clé et le modèle dans votre client.

API compatible OpenAI : les adresses, le code et les pièges de la migration

FournisseurAdresse de base compatible OpenAIParticularité
Infomaniak AI Serviceshttps://api.infomaniak.com/2/ai/{product_id}/openai/v1identifiant de produit dans l’adresse, réponses en flux par défaut
OVHcloud AI Endpointshttps://oai.endpoints.kepler.ai.cloud.ovh.net/v1appels possibles sans clé, deux par minute
Scaleway Generative APIshttps://api.scaleway.ai/v1premier million de tokens offert
vLLM sur votre GPUhttp://localhost:8000/v1commande vllm serve, clé facultative
Ollama sur votre GPUhttp://localhost:11434/v1sous-ensemble de l’API OpenAI
Worker vLLM sur Runpod Serverlesshttps://api.runpod.ai/v2/ENDPOINT_ID/openai/v1modèle choisi au déploiement

Voici la migration vers Infomaniak, avec le client officiel d’OpenAI en Python :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Seules l'adresse, la clé et le nom du modèle changent par rapport à OpenAI
import os

from openai import OpenAI

client = OpenAI(
    base_url=f"https://api.infomaniak.com/2/ai/{os.environ['INFOMANIAK_PRODUCT_ID']}/openai/v1",
    api_key=os.environ["INFOMANIAK_API_TOKEN"],
)

reponse = client.chat.completions.create(
    model="mistralai/Mistral-Small-4-119B-2603",
    messages=[{"role": "user", "content": "Résume ce contrat en trois points."}],
    stream=False,  # indispensable : Infomaniak diffuse la réponse par défaut
)
print(reponse.choices[0].message.content)

La ligne stream=False n’est pas décorative. La documentation de l’API d’Infomaniak indique que le streaming est activé par défaut, alors que chez OpenAI il est désactivé. Un code qui ne précise rien reçoit un flux d’événements là où il attendait un objet JSON, et plante sur la première ligne qui lit la réponse. C’est le premier des six pièges.

Le deuxième est le nom des modèles, déjà évoqué : chaque fournisseur a sa nomenclature, et un nom inconnu renvoie une erreur qui ressemble à une panne. Le troisième est l’appel d’outils et la sortie structurée : le format est le même, mais la qualité dépend du modèle, et un modèle plus petit que celui d’OpenAI se trompe plus souvent dans les arguments d’une fonction. Testez vos outils un par un. Le quatrième est la limite de débit : 60 requêtes par minute annoncées pour l’API d’Infomaniak, 400 par minute et par modèle chez OVHcloud avec une clé, selon sa documentation, un palier selon le compte chez Scaleway. Une application qui envoyait des rafales à OpenAI doit apprendre la patience.

Le cinquième piège concerne les fonctions absentes. Les API européennes reprennent les conversations, les embeddings et parfois la transcription, rarement le reste : pas d’API Assistants, pas de traitement par lots chez Infomaniak, pas de fichiers ni de lots sur le point d’accès européen de Mistral. Le sixième, le plus coûteux, concerne les embeddings : changer de modèle d’embeddings change la dimension des vecteurs, 4 096 pour Qwen3-Embedding-8B, 1 024 pour bge-m3, 1 536 ou 3 072 chez OpenAI. Une base vectorielle construite avec l’ancien modèle doit être entièrement recalculée.

Ma méthode de migration tient en quatre étapes. Isoler l’adresse, la clé et le modèle dans la configuration, pas dans le code. Rejouer cent requêtes réelles sur le nouveau fournisseur et comparer les réponses. Vérifier les appels d’outils et le streaming un par un. Enfin, basculer une partie du trafic seulement, pendant une semaine, avant de couper l’ancien fournisseur.

Même prise, autre source : la migration tient en un geste, les surprises viennent de ce qui circule dans le câble.

Si vous cherchez le fournisseur d’arrivée

L’API suisse offre la politique de données la plus stricte, avec ses propres limites. Le bilan est dans l’avis sur l’API LLM suisse.

Si votre application repose sur des documents

Une migration d’embeddings impose de recalculer toute la base vectorielle. La construction d’un RAG européen, du découpage au reclassement, est décrite dans interroger vos documents en Europe.

Si vous préférez servir le modèle vous-même

vLLM et Ollama exposent la même interface compatible OpenAI sur votre propre GPU. Le coût et la mise en place sont dans héberger un LLM avec vLLM ou Ollama.