L’art de rédiger de bons prompts pour ChatGPT
I. Introduction
1. Pourquoi apprendre à rédiger des prompts ?
- ChatGPT est un outil de productivité en développement : génération de code, aide au débogage, rédaction de documentation, etc.
- La qualité des réponses dépend fortement de la qualité du prompt.
- Un bon prompt permet de gagner du temps, de réduire les erreurs et d’obtenir des réponses adaptées au contexte technique.
2. Idée clé
L’IA ne devine pas votre besoin : elle interprète ce que vous lui écrivez.
Un prompt = une mini spécification fonctionnelle.
II. Anatomie d’un bon prompt
Un bon prompt contient en général les éléments suivants :
1. Le contexte
Indiquer qui vous êtes, ce que vous faites, les technologies, le niveau attendu.
Exemple :
« Tu es un assistant qui aide un étudiant de BTS SIO SLAM à comprendre le fonctionnement des Prepared Statements en PHP avec PDO. »
2. La tâche
Préciser ce que vous attendez : expliquer, générer du code, corriger, optimiser, comparer, etc.
Exemples :
- « Explique le principe du hashing en sécurité. »
- « Génère un CRUD Laravel minimal pour gérer des utilisateurs. »
3. Les contraintes
Spécifier les contraintes : langage, version, style, frameworks autorisés ou interdits, longueur de la réponse, etc.
Exemple :
« Rédige le code en PHP 8.2, sans framework, avec des commentaires en français. »
4. Le format de sortie attendu
Indiquer clairement la forme de la réponse.
Exemples :
- « Présente la réponse sous forme de tableau comparatif. »
- « Donne uniquement le code, sans explications. »
- « Formate la réponse en JSON valide. »
- « Génère un diagramme au format mermaid. »
5. L’exemple d’entrée / sortie (optionnel mais très puissant)
Fournir un exemple de ce que vous attendez permet d’orienter fortement la réponse de l’IA.
III. Cinq types de prompts utiles pour les développeurs (10 minutes)
1. Prompt de génération de code
Objectif : produire un code spécifique avec des contraintes claires.
Exemple de prompt :
« Génère un script Python qui lit un fichier CSV et insère les données dans une base MySQL. Version de Python : 3.10. Bibliothèques autorisées : pandas, mysql.connector. Retourne uniquement le code, sans explication. »
2. Prompt de transformation / refactorisation
Objectif : améliorer un code existant (lisibilité, structure) sans changer la logique.
Exemple :
« Réécris ce code PHP en le rendant plus lisible et en respectant la norme PSR-12, sans modifier la logique métier : [COLLER ICI LE CODE] »
3. Prompt de correction / débogage
Objectif : identifier et corriger les erreurs.
Exemple :
« Voici un code PHP qui génère une erreur. Analyse-le, explique l’erreur en détail et propose une version corrigée : [COLLER ICI LE CODE] »
4. Prompt d’explication pédagogique
Objectif : obtenir une explication adaptée au niveau de l’étudiant.
Exemple :
« Explique étape par étape le fonctionnement de la résolution DNS pour un étudiant de BTS SIO SLAM. Utilise un ton pédagogique, un schéma ASCII et un exemple concret de requête. »
5. Prompt d’audit / optimisation
Objectif : faire analyser un code sous l’angle performance/sécurité.
Exemple :
« Analyse cette fonction PHP pour détecter les problèmes de performance et de sécurité possibles (SQL injection, XSS, etc.). Retourne une liste des risques triés par priorité, et propose pour chacun une solution concrète : [COLLER ICI LE CODE] »
IV. Démo et mini-exercices
Objectif : amener les étudiants à améliorer eux-mêmes des prompts.
Exercice 1 : Prompt faible → prompt amélioré
Prompt initial :
« Explique les API. »
Améliorer ce prompt en ajoutant :
- un contexte,
- un objectif précis,
- des contraintes (niveau, exemples),
- un format de sortie.
Exemple de prompt amélioré :
« Explique clairement ce qu’est une API à un étudiant de BTS SIO SLAM. Inclue : une définition, le rôle d’une API, les formats de données courants (JSON, XML), la différence entre REST et SOAP, et deux exemples concrets (API météo, API de paiement). Présente la réponse sous forme de tableau récapitulatif suivi d’un court texte explicatif. »
On remarque que pour améliorer le prompt vous devez connaitre le domaine un minimum.
Si c’est pas le cas faire un première recherche qui vous donnera des éléments pour améliorer le deuxième prompt.
Exercice 2 : Génération d’un code précis (Laravel)
Objectif : obtenir un code Laravel cohérent et adapté.
Consigne de départ pour les étudiants :
« Génère une route Laravel + contrôleur + vue pour afficher une liste de produits. »
Enrichir le prompt pour :
- préciser la version de Laravel (par ex. Laravel 10),
- définir le modèle (champs du produit),
- indiquer le format attendu (fichiers séparés, ou tout dans un seul bloc),
- indiquer si les données doivent être simulées ou provenir d’une base de données.
Exemple de prompt enrichi :
« Génère pour Laravel 12 : - une route, - un contrôleur, - et une vue Blade pour afficher une liste de produits. Le modèle Produit contient les champs : id, nom, prix, stock. Les données doivent être récupérées depuis la base de données avec Eloquent. Retourne le code complet de la route, de la méthode du contrôleur et de la vue Blade, avec des commentaires en français. »
Exercice 3 : Prompt de débogage
Le script contient environ 80 lignes et plus de 30 erreurs.
<?php
$host = "localhost";
$user = "root";
$password = "";
$dbname = "testdb";
$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
echo "Erreur connexion : " . $conn->connect_err;
}
$id = $_GET["user"];
$query = "SELECT id, name, email, age FROM usertable WHERE id = " . $id;
$res = $conn->query($query);
if ($res->num_rows = 0) {
echo "Utilisateur introuvable<br>";
} else {
$data = $res->fetch_array();
}
echo "ID : " . $data["identifier"] . "<br>";
echo "Nom : " . $data["fullname"] . "<br>";
echo "Email : " . $data["emailAdress"] . "<br>";
echo "Age : " . $data["ag"] . "<br>";
$age = $data["age"];
function convertToMonths($ageYears) {
$months = $ageYears * 11;
return $month;
}
$ageMo = convertToMonths($age);
echo "Age en mois : " . $ageMo . "<br>";
$numbers = [2, 4, 6, 8, 10];
$sum = 0;
for ($i = 0; $i <= count($numbers); $i++) {
$sum = $sum + $numbers[$i];
}
echo "Somme : " . $sum . "<br>";
$searchName = $_POST["search"];
$sql2 = "SELECT id, name FROM usertable WHERE name LIKE '%$searchName'%";
$r2 = $conn->query($sql2);
if ($r2->num_rows > 0) {
while ($row = $r2->fetch_assoc()) {
echo "Résultat : " . $row["username"] . "<br>";
}
} else {
echo "Aucun résultat<br>";
}
$total = 0;
foreach ($numbers as $n) {
$total = $total + $n * 3;
}
echo "Total multiplié : " . $total . "<br>";
$_SESSION["last_id"] = $row["id"];
$conn->closeConn();
?>
- Trouver les erreurs (Erreurs de syntaxe, Erreurs de logique, Erreurs SQL, Erreurs de sécurité, Erreurs de cohérence des variables, Erreurs fonctionnelles, Erreurs dans les structures de contrôle / boucles)
Exemple de prompt :
« Voici un script PHP qui ne fonctionne pas correctement. 1) Trouve les erreurs. 2) Explique clairement leur cause. 3) Propose une version corrigée et commente les changements : [COLLER ICI LE CODE] »
V. Bonnes pratiques et erreurs à éviter
Bonnes pratiques
- Préciser le rôle de l’IA (assistant pédagogique, expert en sécurité, etc.).
- Donner le contexte technique (langage, framework, niveau d’étude).
- Spécifier un objectif clair (expliquer, corriger, générer, comparer…).
- Imposer des contraintes (versions, normes, frameworks autorisés/interdits).
- Exiger un format de réponse (liste, tableau, code seul, JSON, etc.).
- Itérer : améliorer le prompt après une première réponse imparfaite.
Erreurs fréquentes
- Prompts trop vagues : « fais-moi du code », « explique ça ».
- Demander trop de choses en une seule fois (mélanger théorie, code, tests, etc.).
- Oublier de préciser le contexte (version de PHP, de Laravel, base de données utilisée…).
- Ne pas imposer de format de réponse (on se retrouve avec un texte difficilement exploitable).
- Ne pas relire sa propre question avant de l’envoyer.
Conclusion
Rédiger un bon prompt est une compétence professionnelle pour un développeur.
Retenir la formule :
Contexte + Objectif + Contraintes + Format = Prompt efficace.
Plus le prompt est clair, plus les réponses de l’IA sont utiles, précises et actionnables dans vos projets de développement.
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.