Ce guide rassemble les bonnes pratiques qui vous aideront à passer du prototype à la production. Que vous ayez déjà une solide expérience en ingénierie de l’apprentissage automatique ou que vous débutiez dans ce domaine, vous y trouverez de quoi exploiter la plateforme en production, depuis la sécurisation de l’accès à notre API jusqu’à la conception d’une architecture robuste capable de gérer un trafic important. Appuyez-vous sur ce guide pour planifier le déploiement de votre application et en faciliter la mise en œuvre.
Pour approfondir les bonnes pratiques de mise en production, regardez notre présentation du Developer Day.
Configuration de votre organisation
Connectez-vous à votre compte OpenAI pour retrouver le nom et l’identifiant de votre organisation dans les paramètres de l’organisation. Le nom de votre organisation s’affiche dans les interfaces utilisateur. L’identifiant d’organisation est unique et permet de préciser l’organisation dans les requêtes API.
Si vous appartenez à plusieurs organisations, vous pouvez transmettre un en-tête pour préciser l’organisation à utiliser pour une requête API. La consommation associée à ces requêtes est décomptée du quota de l’organisation indiquée. Si vous omettez cet en-tête, la consommation est facturée à votre organisation par défaut. Vous pouvez changer d’organisation par défaut dans vos paramètres utilisateur.
Vous pouvez inviter de nouveaux membres à rejoindre votre organisation depuis la page de l’équipe. Les membres peuvent avoir le rôle de lecteur ou de propriétaire.
Les lecteurs peuvent :
- Envoyer des requêtes API.
- Consulter les informations de base sur l’organisation.
- Créer, mettre à jour et supprimer des ressources de l’organisation, par exemple des assistants, sauf indication contraire.
Les propriétaires peuvent :
- Effectuer toutes les opérations autorisées aux lecteurs.
- Modifier les informations de facturation.
- Gérer les membres de l’organisation.
Gestion des plafonds de facturation
Une fois vos informations de facturation renseignées, OpenAI fixe un plafond d’utilisation pour votre organisation. Votre quota augmente automatiquement à mesure que votre consommation sur la plateforme progresse et que vous passez d’un palier d’utilisation au suivant. Pour connaître votre plafond actuel, consultez la page des limites dans les paramètres de votre compte.
Configurez des alertes de dépenses sur la page des limites pour recevoir une notification lorsque votre consommation dépasse un montant donné en dollars. Pour imposer un plafond mensuel, définissez une limite de dépenses stricte. Dès que les dépenses comptabilisées atteignent cette limite, les requêtes API concernées sont bloquées. Consultez le guide des limites de dépenses avant d’activer une limite stricte en production.
Clés API
L’API d’OpenAI utilise des clés API pour l’authentification. Ouvrez la page de vos clés API pour récupérer la clé à utiliser dans vos requêtes.
Utilisez un compte de service du projet pour donner à votre application une identité propre et éviter qu’elle dépende de la clé personnelle d’un développeur. Consultez le guide Clés API et comptes de service pour choisir les identifiants d’authentification et automatiser la gestion des projets et des clés.
Ce mécanisme simplifie le contrôle des accès, mais vous devez veiller à protéger vos clés. Stockez-les dans un emplacement sécurisé et évitez de les exposer dans votre code ou dans des dépôts publics. Mettez-les à la disposition de votre application au moyen de variables d’environnement ou d’un service de gestion des secrets. Vous éviterez ainsi de les inscrire en dur dans votre code source. Pour en savoir plus, consultez nos bonnes pratiques de protection des clés API.
Nous vous recommandons vivement de fixer une date d’expiration à la création de chaque clé API de projet et de renouveler régulièrement vos clés. Avant qu’une clé n’expire, créez une clé de remplacement et configurez vos applications pour qu’elles l’utilisent. Vérifiez que la nouvelle clé fonctionne, puis révoquez l’ancienne.
Dans les paramètres de la plateforme, les administrateurs peuvent imposer une durée de validité maximale aux clés API d’une organisation ou d’un projet. Les nouvelles clés doivent expirer dans le délai fixé, ce qui évite qu’elles restent valides indéfiniment. La durée maximale fixée pour un projet ne peut pas dépasser celle de l’organisation.
Dans les paramètres de la plateforme, la section API Key Governance permet aux administrateurs d’organisations et de projets de restreindre les types de clés API que l’on peut créer. Ils peuvent autoriser uniquement les clés de comptes de service, autoriser uniquement les clés de projet appartenant à des utilisateurs ou désactiver toute création de clé API. Les restrictions de l’organisation sont toujours prioritaires. Les paramètres d’un projet peuvent les renforcer, mais pas les assouplir. Ces contrôles s’appliquent uniquement à la création de clés et n’ont aucun effet sur les clés API existantes.
Une fois le suivi activé, vous pouvez consulter la consommation de vos clés API sur la page d’utilisation. Pour les clés API générées avant le 20 décembre 2023, le suivi est désactivé par défaut. Vous pouvez l’activer pour les utilisations futures dans le tableau de bord de gestion des clés API. Le suivi est activé pour toutes les clés API générées après le 20 décembre 2023. Toute consommation antérieure qui n’a pas fait l’objet d’un suivi apparaît sous le libellé Untracked dans le tableau de bord.
Projets de préproduction
À mesure que votre application se développe, vous pouvez créer des projets distincts pour vos environnements de préproduction et de production. Créez ces projets dans le tableau de bord pour isoler vos travaux de développement et de test et éviter de perturber accidentellement l’application en production. Vous pouvez aussi restreindre l’accès des utilisateurs au projet de production et définir des limites de débit et de dépenses propres à chaque projet.
Adaptation de l’architecture à la montée en charge
Lorsque vous concevez une application ou un service destiné à utiliser notre API en production, prévoyez comment votre architecture absorbera les hausses de trafic. Quel que soit votre fournisseur de services cloud, tenez compte des aspects suivants.
- Mise à l’échelle horizontale : pour traiter les requêtes que votre application reçoit de plusieurs sources, vous pouvez déployer des serveurs ou des conteneurs supplémentaires afin de répartir la charge. Si vous choisissez cette approche, vérifiez que votre architecture prend en charge plusieurs nœuds et que vous disposez de mécanismes pour répartir la charge entre eux.
- Mise à l’échelle verticale : vous pouvez aussi augmenter les ressources disponibles sur un seul nœud. Il s’agit alors de renforcer les capacités du serveur pour absorber la charge supplémentaire. Si vous choisissez cette approche, vérifiez que votre application peut tirer parti de ces ressources supplémentaires.
- Mise en cache : stockez les données fréquemment consultées pour améliorer les temps de réponse et éviter les appels répétés à notre API. Concevez votre application pour qu’elle utilise les données en cache chaque fois que possible et qu’elle invalide le cache à l’ajout de nouvelles informations. Selon les besoins de votre application, vous pouvez par exemple stocker les données dans une base de données, dans un système de fichiers ou dans un cache en mémoire.
- Répartition de charge : veillez à répartir les requêtes de manière équilibrée entre les serveurs disponibles. Vous pouvez, par exemple, placer un répartiteur de charge en amont des serveurs ou utiliser la rotation DNS. La répartition de la charge améliore les performances et réduit les goulots d’étranglement.
Compression du corps des requêtes
Pour réduire le volume de données à envoyer, compressez le corps JSON des requêtes avec zstd lors des appels à POST /v1/responses. Définissez l’en-tête Content-Encoding: zstd et conservez Content-Type: application/json.
zstd -3 -c request.json > request.json.zst
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-H "Content-Encoding: zstd" \
--data-binary @request.json.zst
L’API décompresse le corps avant de traiter la requête. La compression réduit le nombre d’octets transmis sur le réseau. Elle ne modifie ni la consommation de tokens ni les limites de contexte du modèle.
La taille du corps ne doit dépasser 128 Mio ni sous forme compressée ni après décompression. La taille après décompression ne doit pas non plus dépasser 100 fois la taille compressée. Si une requête dépasse l’une de ces limites, l’API renvoie le code HTTP 413. Elle renvoie le code HTTP 400 si les données zstd sont invalides ou incomplètes. Les autres limites applicables aux requêtes restent en vigueur.
Compression des messages WebSocket
Le mode WebSocket de l’API Responses prend en charge permessage-deflate sur wss://api.openai.com/v1/responses. Cette extension WebSocket utilise DEFLATE pour réduire la taille des messages. Activez-la dans les paramètres de compression de votre client WebSocket avant de vous connecter.
Gestion des limites de débit
Lorsque vous utilisez notre API, familiarisez-vous avec les limites de débit et tenez-en compte dans la conception de votre application.
Réduction de la latence
Consultez la dernière version de notre guide sur la réduction de la latence.
La latence est le temps nécessaire pour traiter une requête et renvoyer une réponse. Cette section présente les facteurs qui influent sur la latence de nos modèles de génération de texte et les moyens de la réduire.
La latence d’une requête de complétion dépend principalement du modèle et du nombre de tokens générés. Voici les étapes du traitement d’une requête de complétion :
La génération des tokens représente généralement l’essentiel de la latence.
À retenir : les tokens du prompt contribuent peu à la latence d’un appel de complétion. Générer les tokens de la complétion prend beaucoup plus de temps, car le modèle les produit un à un. Plus la sortie est longue, plus les délais de génération de chaque token s’additionnent.
Principaux facteurs de latence et moyens de la réduire
Examinons les facteurs qui influent sur la latence, classés approximativement par ordre d’impact décroissant.
Modèle
Notre API propose des modèles plus ou moins complexes et polyvalents. Les modèles les plus performants, comme gpt-6-astra, peuvent générer des complétions plus complexes et plus variées, mais mettent davantage de temps à traiter votre requête.
Les modèles comme gpt-5.6-terra et gpt-5.6-luna peuvent produire des réponses plus rapidement et à moindre coût. Le modèle gpt-6-astra constitue un meilleur choix par défaut si vous avez besoin de capacités supplémentaires pour des tâches complexes. Choisissez le modèle adapté à votre cas d’usage en fonction du compromis souhaité entre rapidité, coût et qualité.
Nombre de tokens de complétion
Demander des complétions contenant beaucoup de tokens peut augmenter la latence.
- Réduisez le nombre maximal de tokens : à nombre de tokens générés comparable, les requêtes dont le paramètre
max_tokensest plus faible présentent une latence moindre. - Ajoutez des séquences d’arrêt : une séquence d’arrêt évite de générer des tokens inutiles. Vous pouvez par exemple vous en servir pour produire une liste d’une longueur précise. Avec
11.comme séquence d’arrêt, vous pouvez générer une liste de dix éléments seulement, puisque la complétion s’arrête lorsqu’elle atteint11.. Consultez notre article d’aide sur les séquences d’arrêt pour en savoir plus sur leur utilisation. - Générez moins de complétions : réduisez si possible les valeurs de
net debest_of. Le paramètrenfixe le nombre de complétions à générer pour chaque prompt, etbest_ofpermet de retenir celle dont la log-probabilité par token est la plus élevée.
Si n et best_of valent tous deux 1 (valeur par défaut), le nombre de tokens générés ne dépasse pas max_tokens.
Si n (le nombre de complétions renvoyées) ou best_of (le nombre de complétions générées avant sélection) vaut > 1, chaque requête produit plusieurs sorties. Vous pouvez alors estimer le nombre de tokens générés à l’aide de la formule [ max_tokens * max (n, best_of) ].
Diffusion en continu
Si vous indiquez stream: true dans une requête, le modèle commence à renvoyer les tokens dès qu’ils sont disponibles, sans attendre la fin de la génération. Le délai nécessaire pour recevoir tous les tokens reste identique, mais l’application reçoit le premier token plus tôt. Elle peut ainsi afficher la réponse au fur et à mesure ou interrompre la génération. Essayez la diffusion en continu pour voir si elle améliore l’expérience utilisateur dans votre application.
Traitement par lots
Selon votre cas d’usage, le traitement par lots peut être utile. Si vous envoyez plusieurs requêtes au même point de terminaison, vous pouvez regrouper les prompts dans une seule requête. Vous réduisez ainsi le nombre de requêtes à envoyer. Le paramètre de prompt accepte jusqu’à 20 prompts distincts. Testez cette méthode pour en évaluer l’intérêt. Dans certains cas, elle peut augmenter le nombre de tokens générés et allonger le temps de réponse.
Gestion des coûts
Pour suivre vos coûts, définissez un seuil de notification dans votre compte. Vous recevrez une alerte par e-mail lorsque votre consommation dépassera ce seuil. Utilisez le tableau de bord de suivi de l’utilisation pour consulter votre consommation de tokens sur le cycle de facturation en cours et les cycles précédents.
Génération de texte
Lorsque vous passez du prototype à la production, l’une des difficultés consiste à prévoir le budget de fonctionnement de votre application. OpenAI propose une tarification à l’usage, avec des prix exprimés pour 1 000 tokens (soit environ 750 mots). Pour estimer vos coûts, évaluez votre consommation prévisionnelle de tokens. Tenez compte du trafic attendu, de la fréquence à laquelle les utilisateurs interagiront avec votre application et du volume de données à traiter.
Pour réduire vos coûts, examinez les deux facteurs qui les déterminent : le nombre de tokens et le coût par token. Vous pouvez agir sur chacun de ces facteurs. Pour réduire le coût par token, utilisez des modèles plus petits pour certaines tâches. Pour réduire le nombre de tokens nécessaires, vous pouvez par exemple raccourcir les prompts, affiner les modèles ou mettre en cache les requêtes fréquentes des utilisateurs pour éviter de les traiter à plusieurs reprises.
Essayez notre outil interactif de tokenisation pour estimer vos coûts. L’API et le Playground indiquent aussi le nombre de tokens dans la réponse. Une fois que vous obtenez les résultats souhaités avec notre modèle le plus performant, vérifiez si d’autres modèles peuvent les reproduire plus rapidement et à moindre coût. Pour en savoir plus, consultez notre article d’aide sur la consommation de tokens.
Stratégie MLOps
Lorsque vous passez du prototype à la production, envisagez de définir une stratégie MLOps. Les pratiques MLOps (opérations d’apprentissage automatique) couvrent la gestion de tout le cycle de vie de vos modèles, y compris ceux que vous affinez avec notre API. Pour définir votre stratégie MLOps, tenez compte des aspects suivants.
- Gestion des données et des modèles : gérez les données utilisées pour entraîner ou affiner le modèle et assurez le suivi des versions et des modifications.
- Surveillance du modèle : suivez ses performances dans la durée pour détecter d’éventuels problèmes ou baisses de performance.
- Réentraînement du modèle : adaptez le modèle à l’évolution des données et des exigences en le réentraînant ou en l’affinant selon les besoins.
- Déploiement du modèle : automatisez la mise en production du modèle et des artefacts associés.
En intégrant ces pratiques à votre application, vous aiderez votre modèle à rester pertinent et performant dans la durée.
Sécurité et conformité
Lors du passage en production, identifiez les exigences de sécurité et de conformité applicables à votre application et prenez les mesures nécessaires pour les respecter. Examinez les données que vous manipulez, la manière dont notre API les traite et les réglementations auxquelles vous devez vous conformer. Vous trouverez notre documentation la plus complète et la plus récente sur la page consacrée à nos pratiques de sécurité et sur notre portail de confiance et de conformité. Vous pouvez également consulter notre politique de confidentialité et nos conditions d’utilisation.
Examinez en particulier le stockage, la transmission et la durée de conservation des données. Vous devrez peut-être aussi prendre des mesures pour protéger leur confidentialité, par exemple en les chiffrant ou en les anonymisant lorsque c’est possible. Suivez également les bonnes pratiques de développement sécurisé, notamment en assainissant les entrées et en gérant correctement les erreurs.
Bonnes pratiques de sécurité d’utilisation
Lorsque vous créez une application avec notre API, appuyez-vous sur nos bonnes pratiques de sécurité d’utilisation pour qu’elle fonctionne correctement et que son utilisation soit sûre. Ces recommandations soulignent l’importance de tester le produit de manière approfondie, d’anticiper les problèmes et de limiter les possibilités d’utilisation abusive.
Enjeux pour votre activité
Lorsque vous passez du prototype à la production, réfléchissez à la manière de créer un produit de qualité avec l’IA et à la place de ce produit dans votre cœur de métier. Nous n’avons pas toutes les réponses, mais notre présentation du Developer Day offre un bon point de départ. Nous y explorons ces questions avec plusieurs de nos clients.