Passer au contenu principal
OpenAI

Introduction

Codex est utilisé quotidiennement par de nombreuses équipes techniques chez OpenAI, notamment les équipes de sécurité, d'ingénierie produit, de front-end, d'API, d'infrastructure et d'ingénierie de la performance. Les équipes l'utilisent pour accélérer un large éventail de tâches d'ingénierie, de la compréhension de systèmes complexes et de la refactorisation de grandes bases de code au déploiement de nouvelles fonctionnalités et à la résolution d'incidents dans des délais serrés.

À partir d'entretiens menés avec des ingénieurs d'OpenAI et de données d'usage internes, nous avons rassemblé des cas d'usage et des bonnes pratiques qui montrent comment Codex aide nos équipes à avancer plus vite, à améliorer la qualité du travail et à gérer la complexité à grande échelle.


Cas d'usage 1 : compréhension du code

Codex aide nos équipes à monter rapidement en compétence sur des parties peu familières 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 de base 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 émerger des modèles architecturaux ou des éléments de documentation manquants qui nécessiteraient autrement un effort manuel considérable pour être produits.

Lors de la réponse aux incidents, Codex aide les ingénieurs à devenir rapidement opérationnels dans de nouveaux domaines en mettant en évidence les interactions entre les composants ou en retraçant la manière dont les états de défaillance se propagent à travers les systèmes.

Anecdotes de nos équipes

« Lorsque je corrige un bug, j'utilise le mode Ask pour voir où ailleurs dans la base de code le même problème pourrait également se produire. »
Ingénieur performance, systèmes de recherche d'informations
Essayez d'utiliser Codex pour comprendre le code avec ces exemples de prompts :
  • [[IconBullet :ArrowRight]] Où la logique d'authentification est-elle implémentée dans ce dépôt ?

  • [[IconBullet :ArrowRight]] Résumez comment les requêtes circulent dans ce service, du point d'entrée à la réponse.

  • [[IconBullet :ArrowRight]]Quels modules interagissent avec « [insérer le nom du module] » et comment les échecs sont-ils gérés ?

Cas d'utilisation 2 : refonte et migrations

Codex est couramment utilisé pour effectuer des modifications touchant plusieurs fichiers ou packages. Par exemple, lorsque des ingénieurs mettent à jour une API, modifient la manière dont un patron 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 la mise à jour nécessite une compréhension de la structure et des dépendances qui ne sont pas facilement détectables à l'aide d'une expression régulière ou d'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 à une meilleure testabilité.

Anecdotes de nos équipes

« Codex a remplacé tous les anciens getUserById( ) par notre nouveau modèle de service et a ouvert la pull request. Il a fait en quelques minutes ce qui aurait pris des heures. »
Ingénieur back-end, ChatGPT Web
Essayez d'utiliser Codex pour la refactorisation et les migrations avec ces exemples de prompts :
  • [[IconBullet :ArrowRight]]Scindez ce fichier en modules distincts par responsabilité et générez des tests pour chacun d'eux.

  • [[IconBullet :ArrowRight]]Convertissez tous les accès à la base de données basés sur des callbacks en async/await.

Cas d'utilisation 3 : optimisation des performances

Codex est utilisé pour identifier et résoudre les goulots d'étranglement de performance.

Lors des efforts d'optimisation ou d'amélioration de la fiabilité, les ingénieurs demandent à Codex d'analyser les segments de code lents ou gourmands en mémoire, tels que des boucles inefficaces, des opérations redondantes ou des requêtes coûteuses, et de proposer des alternatives optimisées, ce qui se traduit souvent par des gains significatifs en efficacité et en fiabilité.

Codex est également utilisé pour améliorer la santé du code en identifiant les modèles risqués ou obsolètes encore en usage actif. Nos équipes s'appuient sur cet outil pour réduire la dette technique à long terme et prévenir de manière proactive les régressions.

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 est excellent pour identifier les chemins critiques et rédiger des requêtes groupées que je pourrai ensuite optimiser. »
Ingénieur en infrastructure, fiabilité des API
Essayez d'utiliser Codex pour optimiser les performances avec ces exemples de prompts :
  • [[IconBullet :ArrowRight]]Optimisez cette boucle pour améliorer l'utilisation de la mémoire et expliquez pourquoi votre version est plus rapide.

  • [[IconBullet :ArrowRight]]Repérez les opérations coûteuses répétées dans ce gestionnaire de requêtes et proposez des opportunités de mise en cache.

  • [[IconBullet :ArrowRight]]Suggérez une méthode plus rapide pour effectuer des requêtes BD par lot dans cette fonction.

Cas d'usage 4 : amélioration de la couverture des tests

Codex aide les ingénieurs à écrire des tests plus rapidement — en particulier là où la couverture est insuffisante ou complètement absente.

Lorsqu'ils corrigent un bogue ou refactorisent du code, les ingénieurs demandent souvent à Codex de proposer des tests qui couvrent des cas limites ou des chemins de défaillance probables. Pour du code nouveau, il peut 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 telles que des entrées vides, une longueur maximale ou des états inhabituels mais valides souvent ignorés lors des tests initiaux.

Histoires de nos équipes

« Je lance Codex sur des modules à faible couverture de tests pendant la nuit, et au réveil, je trouve des PR de tests unitaires opérationnelles. »
Ingénieur front-end, ChatGPT Desktop
Essayez d'utiliser Codex pour optimiser les performances avec ces exemples de prompts :
  • [[IconBullet :ArrowRight]]Écrivez des tests unitaires pour cette fonction, y compris les cas limites et les scénarios d'échec.

  • [[IconBullet :ArrowRight]]Générez un test basé sur les propriétés pour cet utilitaire de tri.

  • [[IconBullet :ArrowRight]]Complétez ce fichier de test pour couvrir les scénarios manquants liés aux entrées nulles et aux états non valides.

Cas d'utilisation 5 : accroître la rapidité du développement

Codex aide les équipes à travailler plus rapidement 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 mettre en place une structure standard, en générant des dossiers, des modules et des bouchons d'API afin d'obtenir rapidement un code exécutable sans avoir à câbler manuellement chaque élément.

À l'approche de la sortie, Codex vous aide à tenir des délais serrés en prenant en charge des tâches plus modestes, mais essentielles, comme le tri et la priorisation des bugs, la résolution des derniers écarts de mise en œuvre et la génération de scripts de déploiement, de points d'instrumentation de télémétrie ou de fichiers de configuration.

Il sert également à transformer les retours produit en code de démarrage. Les ingénieurs collent souvent une demande d'utilisateur ou une spécification et demandent à Codex de générer un brouillon qu'ils pourront reprendre et affiner plus tard.

« J'ai passé la journée en réunion et j'ai quand même fusionné 4 PRs parce que Codex fonctionnait en arrière-plan. »
Ingénieur produit, ChatGPT Enterprise
Essayez d'utiliser Codex pour accélérer le développement avec ces exemples de prompts  :
  • [[IconBullet :ArrowRight]]Créer une nouvelle route d'API pour POST /events avec une validation et une journalisation de base.

  • [[IconBullet :ArrowRight]]Générez un hook de télémétrie pour suivre les réussites et les échecs du nouveau flux d'intégration à l'aide de ce modèle [insérez un exemple de votre code de télémétrie].

  • [[IconBullet :ArrowRight]]Créez une implémentation minimale à partir de cette spécification  : [insérez une spécification ou un retour produit].

Cas d'utilisation 6 : Rester dans le flux

Codex aide nos ingénieurs à rester productifs lorsque leur emploi du temps 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 et la reprise du travail sans perdre le contexte, notamment lorsque vos équipes sont d'astreinte ou enchaînent les réunions.

« Si je repère un correctif rapide, je lance une tâche Codex au lieu de changer de branche, puis j'examine sa pull request quand j'ai un moment. »
Ingénieur back-end, API ChatGPT
Essayez d'utiliser Codex pour garder votre élan avec ces exemples de prompts  :

Cas d'utilisation 7 : exploration et idéation

Codex est également utile pour des travaux ouverts, comme trouver des solutions alternatives ou valider des décisions de conception. Vous pouvez utiliser un prompt pour explorer différentes façons de résoudre un problème, examiner des schémas inhabituels ou mettre vos hypothèses à l'épreuve. Cela permet de faire ressortir les compromis, d'élargir les options de conception et d'affiner les choix d'implémentation.

Il est également utilisé pour identifier les bogues associés. Étant donné un problème connu ou une méthode obsolète, Codex peut identifier 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, et il génère l'ossature du code ou me montre ce que j'ai oublié. »
Ingénieur produit, ChatGPT Desktop
Essayez d'utiliser Codex pour l'exploration et la génération d'idées avec ces exemples de prompts :
  • [[IconBullet :ArrowRight]]Comment cela fonctionnerait-il si le système était piloté par des événements plutôt que par un modèle de requête/réponse ?

  • [[IconBullet :ArrowRight]]Trouvez tous les modules qui construisent manuellement des chaînes SQL au lieu d'utiliser notre générateur de requêtes.

  • [[IconBullet :ArrowRight]]Réécrivez ceci dans un style plus fonctionnel ; évitez les mutations et les effets de bord.


Bonnes pratiques

Codex fonctionne mieux lorsqu'on lui fournit une structure, du contexte et la possibilité d'itérer. Voici quelques-unes des habitudes que les équipes d'OpenAI adoptent pour en tirer une valeur constante dans leur travail au quotidien.

Commencez par le mode Demande

Pour les changements importants, commencez par prompt Codex un plan d'implémentation à l'aide du mode Ask, qui deviendra ensuite l'entrée pour les invites suivantes lorsque vous passerez en mode Code. Ce processus en deux étapes permet à Codex de rester ancré et d'éviter les erreurs dans ses résultats. Codex fonctionne mieux avec des tâches bien définies qui nécessiteraient environ une heure pour être accomplies par vous ou un coéquipier, ou quelques centaines de lignes de code à implémenter. À mesure que les modèles s'améliorent, attendez-vous à ce que la taille des tâches qu'ils peuvent gérer augmente.

Améliorer itérativement l'environnement de développement de Codex

Définir un script de démarrage, des variables d'environnement et 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 pouvant être corrigées dans la configuration de l'environnement de Codex. Cela peut nécessiter quelques itérations, mais ceci offre des gains d'efficacité significatifs à long terme.

Structurez votre prompt comme si vous rédigiez une issue GitHub.

Codex répond mieux lorsque les prompts reflètent la façon dont vous décririez une modification dans une PR ou un ticket. Cela signifie inclure les chemins de fichiers, les noms de composants, les diffs et les extraits de documentation, le cas échéant. Formuler des prompts selon des modèles comme « Implémentez ceci de la même manière que dans [module X] » améliore les résultats.

Utilisez la file d'attente des tâches Codex comme backlog léger

Lancez des tâches pour consigner des idées annexes, du travail partiel ou des corrections ponctuelles. Il n'est pas nécessaire de générer une PR complète d'un seul coup. Codex fonctionne bien comme espace de transition, dans lequel vous pouvez revenir lorsque vous avez retrouvé votre concentration.

Utilisez AGENTS.md pour fournir un contexte persistant.

Conservez un fichier AGENTS.md pour aider Codex à fonctionner plus efficacement dans votre référentiel à travers les prompts. Ces fichiers incluent 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. En savoir plus sur la structuration de votre fichier AGENTS.md dans la documentation.

Misez sur « Best of N » pour améliorer les résultats

La fonctionnalité Best-of-N 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 pour obtenir un meilleur résultat.


Perspectives d’avenir

Codex est encore en version préliminaire de recherche, mais il a déjà un impact réel sur notre façon de développer, en nous aidant à aller plus vite, à écrire du meilleur code et à nous attaquer à des tâches qui, autrement, n'auraient jamais été prioritaires.

Nous sommes enthousiasmés par le potentiel qui s'offre à nous — à mesure que nos modèles s'améliorent et que Codex s'intègre plus profondément à nos flux de travail, nous avons hâte de découvrir des moyens encore plus puissants de développer des logiciels grâce à Codex. Nous continuerons à partager ce que nous apprenons en cours de route.

Vous souhaitez intégrer l’IA à votre entreprise ?

Découvrez comment nous aidons les entreprises à élaborer des stratégies d’IA évolutives et responsables.