Votre application sait déjà appeler un client compatible avec OpenAI. L’ajout du choix du modèle ne devrait pas nécessiter de reconstruire cette intégration pour chaque fournisseur.
Flatkey vous offre une seule URL de base compatible avec OpenAI :
https://router.flatkey.ai/v1
Pointez votre client SDK OpenAI existant vers cette URL, utilisez une clé API Flatkey et choisissez le modèle que vous souhaitez tester dans le champ model. Votre wrapper de requêtes, votre jeu de données de prompts, votre grille d’évaluation et le code de votre application peuvent rester centrés sur une seule interface.
Flatkey constitue donc une solution pratique lorsque votre équipe est prête à comparer des modèles, mais ne veut pas que la configuration de comptes propre à chaque fournisseur et la réécriture des clients deviennent le projet d’évaluation lui-même.
The lowest-friction path from one model to a shortlist
Une évaluation typique de modèle commence par une question simple : un autre modèle peut-il améliorer la qualité, la latence ou le coût pour cette charge de travail ?
Le travail d’implémentation peut rapidement éclipser cette question. Des intégrations séparées créent des variables d’environnement distinctes, des schémas d’authentification, des comportements de retry, des adaptateurs de réponse, des tableaux de bord et des relations de facturation séparés. Au moment où le banc de test est prêt, l’expérience de prompt initiale s’est transformée en projet d’infrastructure.
Une URL de base compatible avec OpenAI modifie la séquence. Vous conservez une seule forme de client et faites du modèle la variable principale.
| Conserver stable | Modifier délibérément | Valider par modèle |
|---|---|---|
| SDK et wrapper de requêtes | base_url une seule fois |
Qualité de sortie |
| Jeu de données de prompts | model pour chaque exécution |
Distribution de latence |
| Grille d’évaluation | Paramètres spécifiques au modèle si nécessaire | Utilisation des tokens et coût |
| Stockage des résultats | Paramètres de timeout ou de retry lorsque justifié | Comportement des outils et des sorties structurées |
| Observabilité côté application | Routage en production uniquement après évaluation | Modèles d’erreurs et de refus |
L’objectif n’est pas de prétendre que tous les modèles se comportent de manière identique. L’objectif est d’éliminer les variations d’intégration évitables afin que votre équipe puisse consacrer plus de temps à mesurer les différences qui comptent.
Change the base URL, not your whole SDK layer
Si vous utilisez déjà le SDK Python d’OpenAI, la modification principale du client est minime :
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FLATKEY_API_KEY"],
base_url="https://router.flatkey.ai/v1",
)
Le même schéma fonctionne avec le client JavaScript d’OpenAI :
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.FLATKEY_API_KEY,
baseURL: "https://router.flatkey.ai/v1",
});
Ensuite, utilisez dans la requête un identifiant de modèle issu du répertoire actuel des modèles de Flatkey. N’inscrivez pas en dur des hypothèses sur les modèles à partir d’un ancien tableur ou d’un ancien article ; la disponibilité et les capacités des modèles peuvent changer.
response = client.chat.completions.create(
model=os.environ["EVAL_MODEL_ID"],
messages=[
{"role": "system", "content": "Répondez en utilisant la politique fournie."},
{"role": "user", "content": evaluation_prompt},
],
temperature=0,
max_tokens=800,
)
C’est le principal avantage de l’adoption : votre application peut conserver son client compatible avec OpenAI tandis que votre évaluation modifie la sélection du modèle.
Un workflow ciblé de test de prompts multi-modèles
Utilisez le workflow suivant pour transformer une migration de base URL en une décision que votre équipe peut défendre.
1. Geler le contrat de requête
Partez d’une requête qui représente déjà la charge de production. Conservez les éléments suivants inchangés pendant la première phase de comparaison :
- Les prompts système et utilisateur
- Les exemples d’entrée
- La température et les limites de tokens
- Les définitions d’outils ou le schéma de réponse
- La politique de timeout
- La grille d’évaluation
Si vous modifiez en même temps le prompt, le modèle et la politique de relance, vous ne saurez pas quel changement a produit le résultat.
2. Créer un petit ensemble d’évaluation représentatif
Ne commencez pas avec des centaines de prompts synthétiques. Commencez avec 20 à 50 exemples qui couvrent les cas que vos utilisateurs créent réellement :
- Requêtes courantes et fréquentes
- Entrées longues ou désordonnées
- Instructions ambiguës
- Cas sensibles en matière de sécurité ou susceptibles d’être refusés
- Cas limites de sortie structurée
- Cas d’appel d’outil, si votre application utilise des outils
Supprimez les données privées et les secrets avant d’envoyer le trafic d’évaluation. Le meilleur ensemble d’évaluation est suffisamment petit pour être inspecté et suffisamment représentatif pour mettre en évidence des défaillances significatives.
3. Exécuter les mêmes cas sur chaque modèle candidat
Conservez l’URL de base Flatkey et le wrapper de requête inchangés. Parcourez les IDs de modèle figurant sur votre liste restreinte.
import time
candidate_models = [
"MODEL_ID_A",
"MODEL_ID_B",
"MODEL_ID_C",
]
results = []
for model_id in candidate_models:
for case in evaluation_cases:
started_at = time.perf_counter()
try:
response = client.chat.completions.create(
model=model_id,
messages=case["messages"],
temperature=0,
max_tokens=case.get("max_tokens", 800),
)
elapsed_ms = round((time.perf_counter() - started_at) * 1000)
results.append({
"case_id": case["id"],
"model": model_id,
"latency_ms": elapsed_ms,
"output": response.choices[0].message.content,
"usage": response.usage.model_dump() if response.usage else None,
"error": None,
})
except Exception as error:
results.append({
"case_id": case["id"],
"model": model_id,
"latency_ms": None,
"output": None,
"usage": None,
"error": type(error).__name__,
})
Utilisez des placeholders dans les exemples partagés et sélectionnez les identifiants de modèle actuels dans le répertoire en direct avant d’exécuter le test. Confirmez également que chaque candidat prend en charge les capacités dont votre charge de travail a besoin.
4. Évaluez le résultat, pas la réputation du modèle
Une grille d’évaluation utile sépare les exigences strictes des préférences.
| Dimension | Exemple de question | Traitement suggéré |
|---|---|---|
| Exactitude | La réponse a-t-elle satisfait la tâche ? | Évaluateur humain ou spécifique à la tâche |
| Respect des instructions | A-t-elle respecté les contraintes et le format ? | Réussite/échec avec notes |
| Sortie structurée | La charge utile s’est-elle analysée et a-t-elle correspondu au schéma ? | Validation automatisée |
| Comportement des outils | Les appels étaient-ils valides et correctement sélectionnés ? | Vérifications automatisées plus revue |
| Latence | Combien de temps ont pris les requêtes réussies ? | Médiane et percentiles de queue |
| Fiabilité | À quelle fréquence les requêtes ont-elles échoué ou expiré ? | Taux d’erreur par classe |
| Utilisation | Combien de jetons d’entrée et de sortie ont été signalés ? | Par cas et agrégé |
| Coût | Combien coûterait la charge de travail évaluée ? | Calculer avec la tarification actuelle |
Rejetez tout candidat qui ne satisfait pas une exigence stricte, même s’il est peu coûteux. Parmi les modèles restants, comparez les compromis qui comptent pour votre produit.
5. Re-testez les finalistes avec un comportement de production
La première passe doit être contrôlée. La passe finale doit être réaliste.
Testez le streaming si votre interface diffuse en continu. Testez les appels d’outils si votre agent utilise des outils. Testez les sorties structurées si le code en aval les analyse. Exercez vos paramètres réels de timeout et de retry, et vérifiez comment votre application gère les limites de débit, les flux interrompus, les réponses mal formées et les états de complétion ambigus.
Les journaux d’utilisation de Flatkey peuvent vous aider à confirmer que les requêtes ont atteint la passerelle et à inspecter l’activité des requêtes. Conservez également les identifiants de requête et les données de timing côté application, afin de relier la visibilité de la passerelle à l’expérience utilisateur.
Pour les détails de retry et de bascule, utilisez le guide de migration du client OpenAI pour les limites de débit et les retries.
La compatibilité est un point de départ, pas une promesse de comportement identique
Une API compatible avec OpenAI réduit le travail de migration du client. Elle ne rend pas les différents modèles interchangeables.
Avant d’approuver un modèle pour la production, vérifiez :
- L’identifiant exact du modèle est actuellement disponible.
- Le modèle prend en charge l’endpoint et le mode dont vous avez besoin.
- Les paramètres requis sont acceptés et se comportent comme prévu.
- Les appels d’outils, les sorties JSON ou structurées et le streaming passent vos tests.
- Les limites de jetons conviennent à vos entrées et sorties réelles.
- Le comportement de sécurité correspond aux exigences de votre produit.
- Les timeouts, retries et la gestion des erreurs ne créent pas de travail dupliqué ou ambigu.
- La tarification actuelle correspond au mix de trafic attendu.
Si vous avez besoin d’une liste de contrôle d’ingénierie plus large, consultez le guide de migration d’une passerelle d’API compatible avec OpenAI. Cette page est volontairement plus ciblée : elle s’adresse aux équipes qui comprennent déjà le schéma de migration et veulent transformer un seul changement d’URL de base en test équitable sur plusieurs modèles.
Liste de contrôle pratique pour le basculement
Ne passez de l’évaluation à la production que lorsque vous pouvez répondre oui à chacun des points suivants.
- Parité des requêtes : Le modèle finaliste fonctionne avec vos véritables schémas de prompt, de message, d’outil et de sortie.
- Seuil de qualité : Il satisfait aux exigences strictes de votre grille d’évaluation.
- Gestion des échecs : Votre application gère en toute sécurité les limites de débit, les délais d’attente et les réponses interrompues.
- Observabilité : Vous enregistrez le modèle, la latence, l’utilisation, la classe d’erreur et un identifiant de requête applicative.
- Modèle de coût : Vous avez calculé la dépense attendue à partir des tarifs actuels et d’une utilisation réaliste des tokens.
- Retour arrière : Vous pouvez revenir au modèle ou à la configuration précédente sans publication de code.
- Plan de canary : Vous pouvez exposer le changement à une part limitée du trafic avant le déploiement complet.
L’interface stable facilite le retour arrière et les tests répétés, car la surface d’intégration reste cohérente. Votre décision de modèle peut changer sans imposer à chaque fois une nouvelle couche cliente spécifique au fournisseur dans l’application.
Commencez avec une seule URL de base et une charge de travail réelle
Si votre équipe utilise déjà un SDK compatible avec OpenAI, l’étape suivante utile n’est pas un autre débat d’architecture. C’est un test contrôlé avec vos propres prompts.
- Créez un compte Flatkey et une clé API.
- Définissez
base_urlsurhttps://router.flatkey.ai/v1. - Sélectionnez une petite liste de modèles candidats dans l’annuaire actuel.
- Exécutez les mêmes cas représentatifs sur chaque modèle.
- Examinez ensemble la qualité, la latence, la fiabilité, l’utilisation et le coût actuel.
Comparez les tarifs actuels des modèles et choisissez votre courte liste, puis lancez la première évaluation avec le même client que celui déjà utilisé par votre application.
Questions fréquemment posées
Quelle est l’URL de base Flatkey compatible avec OpenAI ?
Utilisez https://router.flatkey.ai/v1. Configurez-la dans votre client compatible avec OpenAI et authentifiez-vous avec une clé API Flatkey.
Dois-je remplacer le SDK OpenAI ?
Non. Le guide de démarrage rapide de Flatkey documente l’utilisation des SDK OpenAI Python et JavaScript avec l’URL de base Flatkey. Vous devez tout de même tester chaque fonctionnalité de requête et chaque capacité de modèle dont dépend votre application.
Puis-je comparer plusieurs modèles avec le même code de prompt ?
Oui. Conservez le client, le jeu de données de prompts et la logique d’évaluation constants, puis modifiez la valeur model pour chaque candidat. Les capacités et paramètres spécifiques au modèle doivent néanmoins être validés.
La compatibilité OpenAI est-elle la même chose qu’un comportement de modèle identique ?
Non. La compatibilité réduit les changements d’intégration. Les modèles peuvent différer en qualité de sortie, en utilisation des outils, en comportement de sortie structurée, en latence, en limites, en comportement de sécurité et en coût.
Que dois-je mesurer dans un test multi-modèles ?
Mesurez l’exactitude de la tâche, le respect des instructions, la validité du schéma ou des outils, la latence, le taux d’erreur, l’utilisation des tokens et le coût actuel. Définissez des exigences strictes avant de comparer les préférences.
Où dois-je vérifier les prix des modèles ?
Utilisez la page de tarification en direct de Flatkey plutôt que de copier les prix dans un document d’évaluation à long terme.



