CMD Master
Retour au blog
Arnošt Havelka

Comment formuler des prompts à ChatGPT pour coder

Utilisez ChatGPT pour coder avec un contexte ciblé, des contraintes et des critères d’acceptation qui produisent du code que vous pouvez inspecter et valider.

Comment formuler des prompts à ChatGPT pour coder

Pour demander à ChatGPT de coder, décrivez la décision d’ingénierie, et pas seulement le code que vous souhaitez recevoir. Donnez-lui le contexte pertinent du code ou du dépôt, le comportement à préserver, un résultat concret et une manière de vérifier le résultat.

« Écris une fonction qui fait X » peut suffire pour un petit utilitaire. Ce n’est pas suffisant lorsqu’une modification touche au comportement des utilisateurs, à un contrat partagé ou à un système de production.

Commencez par un bref cahier des charges

Avant de demander du code, indiquez quatre éléments :

  • Ce qui existe aujourd’hui : le composant, la fonction, l’API ou la défaillance concernés.
  • Ce qui doit changer : un résultat visible pour l’utilisateur ou le système.
  • Ce qui ne doit pas changer : compatibilité, performances, accessibilité, contrats ou API publiques.
  • Comment le vérifier : tests, étapes de reproduction, vérifications de types ou critères d’acceptation manuels.

Si vous utilisez un espace de travail ChatGPT de longue durée, conservez au même endroit les notes d’architecture, les exigences et les fichiers pertinents. Les Projets ChatGPT peuvent organiser les conversations, les fichiers de référence et les instructions propres au projet ; vérifiez votre offre actuelle et les contrôles de votre espace de travail avant d’importer du code source.

Demandez à ChatGPT de générer du code dans des limites précises

Évitez ceci :

Crée un composant d’import de fichiers.

Cela ne définit ni le propriétaire, ni la gestion des erreurs, ni les limites de fichiers, ni l’accessibilité, ni le contrat d’interface utilisateur environnant.

Utilisez plutôt une demande délimitée :

Nous avons une page de paramètres React qui possède déjà la soumission du formulaire et les
messages d’erreur. Ajoute un importateur de fichiers au formulaire existant.

Résultat : un utilisateur peut sélectionner un PNG ou un JPEG de moins de 5 MB, voir le nom
du fichier sélectionné, le retirer avant l’envoi et recevoir le message d’erreur localisé
existant pour les fichiers non valides.

Contraintes : n’ajoute pas de nouvelle bibliothèque d’état, ne crée pas de point de terminaison
de téléversement et conserve le gestionnaire d’envoi actuel comme unique propriétaire de l’état du formulaire.

Retourne l’ensemble minimal de fichiers modifiés, explique chaque modification et inclus des
tests pour le type invalide, la limite de taille, le retrait et une sélection réussie.

La demande réduit le composant, car elle exclut une architecture inutile.

Demandez à ChatGPT de déboguer avant de corriger

Pour le débogage, demandez une hypothèse et un chemin de reproduction avant de demander un correctif :

Symptôme : le bouton d’enregistrement reste désactivé après la réussite d’une nouvelle tentative d’API.

Comportement attendu : le bouton devient disponible après une nouvelle tentative réussie.
Comportement observé : les données de réponse apparaissent, mais le bouton reste désactivé.

Contexte pertinent : le bouton dépend de isPending et form.isDirty. Cela a commencé
après l’ajout des nouvelles tentatives au hook de mutation.

Commence d’abord par lister les transitions d’état les plus probables et les éléments de preuve nécessaires
pour confirmer chacune d’elles. Propose ensuite le plus petit correctif et le test de régression.

C’est plus sûr que « corrige le bouton désactivé », car cela demande à ChatGPT de distinguer un bug d’état obsolète d’un problème de validation ou de rendu de l’interface.

Demandez à ChatGPT de refactoriser sans modifier le comportement

Les demandes de refactorisation nécessitent une clause de préservation plus forte :

Refactorise la liste de cartes de tarification afin de supprimer la logique de rendu dupliquée des offres.

Préserve : les props publiques, les noms d’événements d’analytique, les destinations de paiement,
le comportement au clavier, les états de chargement et la mise en page mobile existante.

Périmètre : limite les modifications à la fonctionnalité de tarification et à ses tests directement liés.
N’introduis pas d’abstraction de design system, sauf si le composant existant ne peut pas
exprimer le comportement partagé.

Critères d’acceptation : des tests de snapshot ou d’interaction couvrent chaque état d’offre et
les liens rendus ainsi que les charges utiles d’événements restent inchangés.

Avant de modifier, identifie la duplication et tout comportement caché que les deux cartes
implémentent actuellement de façon différente.

La phrase « préserver le comportement » ne suffit pas à elle seule. Nommez le comportement qui compte.

Demandez à ChatGPT d’écrire des tests utiles

Ne demandez pas « des tests pour ce composant » sans contrat. Nommez les scénarios :

Écris des tests pour le formulaire de réinitialisation du mot de passe en utilisant la pile de tests existante.

Couvre :
1. une adresse e-mail invalide affiche le message de validation localisé ;
2. l’envoi transmet l’adresse e-mail normalisée une seule fois ;
3. une erreur réseau conserve la valeur saisie et affiche l’état d’erreur existant ;
4. une réponse réussie annonce la confirmation sans révéler si un compte existe.

Ne simule pas les détails d’implémentation. Préfère les rôles et libellés accessibles.

Cela indique à l’assistant ce que l’utilisateur doit pouvoir faire et quel comportement de confidentialité ne doit pas régresser.

Demandez à ChatGPT d’expliquer du code inconnu

Un prompt d’explication doit demander une piste de preuves, pas un résumé :

Explique comment l’état d’authentification atteint l’écran de facturation dans ce dépôt.

Retrace le chemin du provider à la garde de route, puis à l’appel de paiement. Nomme les fichiers
et les symboles exportés concernés. Sépare le comportement confirmé des hypothèses et liste
ce que tu inspecterais ensuite si une partie n’est pas claire.

Ce format facilite l’identification d’une dépendance manquante ou d’un lien inventé.

Fournissez délibérément le contexte du dépôt

ChatGPT est plus fiable lorsque vous lui donnez le contexte le plus restreint qui répond à la question :

  • un test défaillant avec le code qu’il exerce ;
  • le composant et le hook qui possède son état ;
  • un exemple de requête/réponse dont les valeurs sensibles ont été supprimées ;
  • les conventions du projet qui encadrent la modification ;
  • une courte liste de fichiers volontairement hors périmètre.

N’importez pas de secrets, de jetons d’accès de production, de données clients ni de journaux privés que vous n’êtes pas autorisé à partager. Remplacez ces valeurs par des occultations réalistes et conservez le comportement que vous devez analyser.

Pour le cadre général qui sous-tend ces prompts, lisez comment écrire de meilleurs prompts d’IA. Pour un ensemble de modèles d’implémentation et de revue fondés sur les rôles, poursuivez avec l’ingénierie des prompts pour les développeurs. Utilisez des exemples d’ingénierie des prompts pour les ingénieurs logiciels si vous souhaitez voir une demande détaillée avant et après, et les modèles de prompts pour le débogage en production avant d’enquêter sur un problème en production.

Terminez par la validation, pas par le code généré

Le code généré est une proposition. Exécutez les tests pertinents, inspectez le diff et parcourez vous-même le chemin concerné. Lorsque le travail implique des sorties de commande, des erreurs ou des scripts shell, reproduire le flux de travail fait partie de la validation — ce n’est pas un supplément facultatif. Utilisez l’espace d’entraînement en ligne de commande dans le navigateur pour prendre cette habitude avec de vraies entrées et de vrais retours de commande.

Références

Ces liens de documentation fournissent des informations fiables sur les commandes utilisées dans cet article.