Comment OpenAI utilise Codex
Codex est utilisé au quotidien par de nombreuses équipes techniques chez OpenAI, comme les équipes de sécurité, d’ingénierie produit, de développement frontal, d’API, d’infrastructure et d’ingénierie de la performance. Les équipes l’utilisent pour accélérer toute une gamme de tâches d’ingénierie, qu’il s’agisse de comprendre des systèmes complexes, de restructurer de grandes bases de code, de livrer de nouvelles fonctionnalités ou de résoudre des incidents dans des délais serrés.
À partir d’entretiens avec des ingénieurs d’OpenAI et de données d’utilisation internes, nous avons compilé des cas d’usage et des pratiques exemplaires qui montrent comment Codex aide nos équipes à avancer plus rapidement, à améliorer la qualité du travail et à gérer la complexité à l’échelle.
Codex aide nos équipes à se familiariser rapidement avec des parties inconnues de la base de code lors de l’intégration, du débogage ou de l’analyse d’un incident.
Ils utilisent souvent Codex pour localiser la logique centrale d’une fonctionnalité, cartographier les relations entre les services ou les modules et suivre le flux de données dans un système. Cela aide également à faire ressortir des modèles architecturaux ou des lacunes dans la documentation qui nécessiteraient autrement un effort manuel considérable pour être produites.
Lors de la réponse aux incidents, Codex aide les ingénieurs à se familiariser rapidement avec de nouveaux domaines en mettant en lumière les interactions entre les composants ou en retraçant la façon dont les états de défaillance se propagent d’un système à l’autre.
Anecdotes de nos équipes
« Quand je corrige un bug, j’utilise le mode Ask pour vérifier où ce problème pourrait également se produire dans la base de code. »
Où est-ce que la logique d’authentification est-elle implémentée dans cette réponse?
Résumé du flux des requêtes dans ce service, du point d’entrée à la réponse.
Quels modules interagissent avec [insérer le nom du module] et comment les défaillances sont-elles gérées?
Codex est couramment utilisé pour apporter des modifications qui touchent plusieurs fichiers ou packages. Par exemple, lorsque des ingénieurs mettent à jour une API, modifient la façon dont un modèle est implémenté ou migrent vers une nouvelle dépendance, Codex facilite l’application cohérente des changements.
Cela s’avère particulièrement utile lorsque la même mise à jour doit être effectuée dans des dizaines de fichiers ou lorsque cette mise à jour nécessite une compréhension approfondie de la structure et des dépendances, qui ne sont pas facilement détectables avec une expression régulière ou une fonction de recherche et remplacement.
Ils l’utilisent également pour le nettoyage du code, en divisant les modules surdimensionnés, en remplaçant les anciens modèles par des modèles modernes ou en préparant le code pour une meilleure testabilité.
Anecdotes de nos équipes
« Codex a remplacé chaque ancien getUserById( ) par notre nouveau modèle de service et a ouvert la PR. » « Cela a accompli en quelques minutes ce qui aurait pris des heures. »
Divisez ce fichier en modules distincts selon leur responsabilité et générez des tests pour chacun d’eux.
Convertissez tous les accès à la base de données utilisant des fonctions de rappel en async/await.
Codex est utilisé pour identifier et résoudre les goulots d’étranglement liés à la performance.
Lors des efforts d’optimisation ou de fiabilité, les ingénieurs demandent à Codex d’analyser les segments de code lents ou gourmands en mémoire, comme les boucles inefficaces, les opérations redondantes ou les requêtes coûteuses, et de proposer des solutions optimisées, ce qui entraîne souvent des gains significatifs en efficacité et en fiabilité.
Codex est également utilisé pour améliorer la santé du code en identifiant des modèles risqués ou obsolètes qui sont encore activement utilisés. Nos équipes s’appuient sur cet outil pour réduire la dette technique à long terme et prévenir les régressions de manière proactive.
Anecdotes de nos équipes
« J’utilise Codex pour détecter les appels répétés et coûteux à la base de données. Il excelle à détecter les chemins critiques et à rédiger des requêtes par lots que je peux ensuite optimiser. »
Optimisez cette boucle pour réduire l’utilisation de la mémoire et expliquez pourquoi votre version est plus rapide.
Repérez les opérations coûteuses répétées dans ce gestionnaire de requêtes et suggérez des possibilités de mise en cache.
Proposez une méthode plus rapide pour traiter les requêtes DB par lots dans cette fonction.
Codex aide les ingénieurs à écrire des tests plus rapidement, notamment là où la couverture est faible ou complètement absente.
Lorsqu’ils travaillent sur une correction de bugs ou une réorganisation, les ingénieurs demandent souvent à Codex de proposer des tests qui couvrent les cas limites ou les scénarios d’échec les plus probables. Pour du nouveau code, vous pouvez générer des tests unitaires ou d’intégration à partir de la signature de la fonction et de la logique environnante.
Codex est particulièrement utile pour identifier des conditions limites comme des entrées vides, une longueur maximale ou des états inhabituels mais valides qui échappent souvent aux tests initiaux.
Anecdotes de nos équipes
« Je lance Codex sur des modules à faible couverture pendant la nuit et je me réveille avec des PR de tests unitaires exécutables. »
Rédigez des tests unitaires pour cette fonction, y compris les cas limites et les chemins d’échec.
Générez un test basé sur les propriétés pour cet utilitaire de tri.
Complétez ce fichier de test afin de couvrir les scénarios manquants concernant les entrées nulles et les états invalides.
Codex aide les équipes à avancer plus vite en accélérant à la fois le début et la fin du cycle de développement.
Lorsqu’ils lancent une nouvelle fonctionnalité, les ingénieurs l’utilisent pour créer une structure de base, générant des dossiers, des modules et des squelettes d’API, afin d’obtenir rapidement du code exécutable sans avoir à assembler manuellement chaque élément.
À l’approche de la mise en production des projets, Codex aide à respecter des échéances serrées en prenant en charge des tâches plus modestes mais essentielles, comme trier les bugs, combler les dernières lacunes de mise en œuvre et générer des scripts de déploiement, des points d’instrumentation de télémétrie ou des fichiers de configuration.
Il sert aussi à transformer les retours produit en code de départ. Les ingénieurs collent souvent une demande d’utilisateur ou une spécification, puis demandent à Codex de générer un brouillon qu’ils pourront reprendre et peaufiner plus tard.
« Vous étiez en réunion toute la journée et vous avez quand même fusionné 4 PR, parce que Codex travaillait en arrière-plan. »
Créer la structure d’une nouvelle route API pour POST /events avec une validation de base et un journal des événements.
Créez un hook de télémétrie pour suivre les réussites et les échecs du nouveau processus d’intégration, en utilisant ce modèle [insérez un exemple de votre code de télémétrie].
Créez une implémentation de base à partir de cette spécification : [insérez la spécification ou les commentaires sur le produit].
Codex permet à nos ingénieurs de rester productifs lorsque leur horaire est morcelé et ponctué d’interruptions.
Il sert à capturer le travail inachevé, à transformer des notes en prototypes fonctionnels, ou à lancer des tâches exploratoires que vous pourrez reprendre plus tard. Cela facilite la mise en pause du travail et sa reprise sans perdre le contexte, surtout lorsque les utilisateurs sont de garde ou ont beaucoup de réunions.
« Si je repère une correction rapide, je lance une tâche Codex au lieu de changer de branche, puis j’examine sa PR quand j’ai le temps. »
Codex est également utile pour des tâches ouvertes, comme trouver des solutions de rechange ou valider les décisions de conception. Vous pouvez inviter à proposer différentes façons de résoudre un problème, explorer des schémas inhabituels ou mettre des hypothèses à l’épreuve. Cela aide à faire ressortir les compromis, à élargir les options de conception et à affiner les choix de mise en œuvre.
Il sert aussi à identifier des bugs connexes. À partir d’un problème connu ou d’une méthode obsolète, Codex peut repérer des schémas similaires ailleurs dans le code, ce qui facilite la détection des régressions ou l’achèvement du travail de nettoyage.
« Codex m’aide à résoudre le problème du démarrage à froid, je colle une spécification et de la documentation, puis il génère la structure du code ou me montre ce que j’ai oublié. »
Comment cela fonctionnerait-il si le système était piloté par les événements plutôt qu’en mode requête/réponse?
Repérez tous les modules qui construisent manuellement des chaînes SQL au lieu d’utiliser notre générateur de requêtes.
Réécrivez ceci dans un style plus fonctionnel, évitez les mutations et les effets de bord.
Codex fonctionne le mieux lorsqu’on lui donne de la structure, du contexte et la possibilité d’itérer. Voici quelques-unes des habitudes que les équipes d’OpenAI développent pour en tirer une valeur constante dans leur travail au quotidien.
Pour les changements importants, commencez par demander à Codex un plan d’implémentation à l’aide du mode Ask, qui servira ensuite d’entrée pour les invites de suivi lorsque vous passerez au mode Code. Ce flux en deux étapes permet à Codex de rester ancré et aide à éviter les erreurs dans ses résultats. Codex donne les meilleurs résultats avec des tâches bien définies qu’il vous faudrait, à vous ou à un coéquipier, environ une heure pour accomplir, ou quelques centaines de lignes de code à implémenter. À mesure que les modèles s’améliorent, attendez-vous à ce que l’ampleur des tâches qu’ils peuvent prendre en charge augmente.
La définition d’un script de démarrage, de variables d’environnement et d’un accès Internet réduit considérablement le taux d’erreurs de Codex. Lorsque vous exécutez des tâches, recherchez les erreurs de compilation qui peuvent être corrigées dans la configuration de l’environnement de Codex. Cela peut nécessiter quelques itérations, mais procure des gains d’efficacité importants à long terme.
Codex répond mieux lorsque les invites reflètent la façon dont vous décririez un changement dans une PR ou un problème. Cela signifie inclure les chemins de fichiers, les noms de composants, les diffs et les extraits de documentation lorsque cela est pertinent. Le fait de formuler des invites selon des modèles comme « Implémentez ceci de la même façon que dans [module X] » améliore les résultats.
Lancez rapidement des tâches pour capturer des idées connexes, du travail partiel ou des correctifs mineurs. Il n’y a aucune pression pour générer une PR complète d’un seul coup. Codex est un excellent espace de transition auquel vous pouvez revenir une fois votre concentration retrouvée.
Maintenez un fichier AGENTS.md pour aider Codex à fonctionner plus efficacement dans votre dépôt entre les invites. Ces fichiers comprennent généralement des conventions de nommage, de la logique métier, des particularités connues ou des dépendances que Codex ne peut pas déduire du seul code. Pour en savoir plus sur la structuration de votre fichier AGENTS.md, consultez la documentation.
La fonctionnalité Best-of-N vous permet de générer simultanément plusieurs réponses pour une même tâche afin d’explorer rapidement plusieurs solutions et de choisir la meilleure. Pour les tâches plus complexes, vous pouvez examiner plusieurs itérations et combiner des éléments de différentes réponses afin d’obtenir un meilleur résultat.
Codex est encore en phase d’aperçu de recherche, mais il a déjà un impact concret sur notre façon de créer, en nous aidant à avancer plus vite, à écrire du meilleur code et à entreprendre des tâches qui, autrement, n’auraient jamais été priorisées.
Nous sommes enthousiastes face au potentiel à venir — à mesure que nos modèles s’améliorent et que Codex s’intègre plus profondément à nos flux de travail, nous sommes impatients d’ouvrir la voie à des façons encore plus puissantes de développer des logiciels avec lui. Nous continuerons à partager ce que nous apprenons en cours de route.


