Un prompt mal formulé produit des résultats vagues ou incorrects. Ce guide vous donne les fondamentaux du prompt engineering pour obtenir des réponses précises, cohérentes et adaptées à vos besoins. Vous apprendrez à structurer vos requêtes avec des rôles, styles et exemples stratégiques.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Qu'est-ce qu'un prompt et pourquoi sa formulation est critique
- Rôles (Persona) : donner une expertise au modèle
- Styles et tons : adapter la réponse à l'audience
- Tâches structurées : cadrer précisément le livrable attendu
- Zero-shot, one-shot, few-shot : quand fournir des exemples
- Chain-of-Thought basique : déclencher le raisonnement explicite
- Patterns réutilisables : industrialiser vos prompts
Qu'est-ce qu'un prompt ?
Section intitulée « Qu'est-ce qu'un prompt ? »Un prompt est le texte que vous envoyez à un LLM pour obtenir une réponse. Cela peut aller d'une question simple à une instruction complexe combinant contexte, format, style et rôle.
Exemple simple :"Quels sont les pays limitrophes de la France ?"
Exemple structuré :"Agis comme un professeur de géographie. Fais une liste numérotéedes pays limitrophes de la France avec une brève description de chacun."Pourquoi l'engineering est nécessaire ?
| Problème | Conséquence |
|---|---|
| Trop court | Réponse imprécise |
| Trop flou | L'IA doit deviner vos intentions |
| Trop chargé | Confusion ou dépassement de contexte |
Un prompt bien construit réduit ces risques et améliore la qualité des réponses.
Rôles (Persona Prompting)
Section intitulée « Rôles (Persona Prompting) »Attribuer un rôle au modèle améliore la cohérence et la pertinence. Cette technique, appelée persona prompting, consiste à demander à l'IA d'adopter l'expertise d'un professionnel.
Exemples de rôles
Section intitulée « Exemples de rôles »Les trois onglets ci-dessous montrent le même mécanisme décliné pour des métiers différents. Observez leur structure commune : une identité (le métier), un niveau d'expérience chiffré, et une tâche immédiate. C'est le niveau d'expérience qui oriente le plus la réponse, car il pousse le modèle vers un vocabulaire et une profondeur d'analyse cohérents avec ce profil.
Tu es un architecte logiciel senior avec 10 ans d'expérienceen microservices. Analyse cette architecture et propose desaméliorations.Tu es un professeur de mathématiques qui explique les conceptscomplexes avec des exemples concrets. Explique les dérivéesà un élève de terminale.Tu es un SRE senior expert en Kubernetes. Diagnostique ceproblème de pods CrashLoopBackOff et propose 3 solutionsordonnées par probabilité.En Python avec OpenAI
Section intitulée « En Python avec OpenAI »from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "system", "content": "Tu es un expert DevOps senior avec 10 ans d'expérience." }, { "role": "user", "content": "Comment configurer un HPA Kubernetes pour scaler sur la mémoire ?" } ], temperature=0.3)
print(response.choices[0].message.content)Styles et tons
Section intitulée « Styles et tons »Le style et le ton influencent la présentation de l'information. Selon votre audience, demandez des réponses formelles, techniques ou vulgarisées.
Variations de style
Section intitulée « Variations de style »Le style ne change pas le fond de la réponse, seulement sa présentation et son niveau de langue. Repérez dans chaque directive le mot qui porte la contrainte : « formelle », « références », « métriques », « 3 bullet points ». Ce sont ces termes précis, et non l'ambiance générale, qui pilotent réellement la sortie du modèle. Une directive vague comme « sois clair » produit des résultats bien moins prévisibles qu'une contrainte mesurable comme « en 3 points maximum ».
| Style | Exemple de directive |
|---|---|
| Académique | "Rédigez une analyse formelle avec références" |
| Décontracté | "Explique-moi simplement, sans jargon, comme dans un échange informel" |
| Technique | "Fournissez des métriques quantitatives et du code" |
| Concis | "Réponds en 3 bullet points maximum" |
Modificateurs de ton utiles
Section intitulée « Modificateurs de ton utiles »Là où le style commande la forme, le ton ajuste la posture du modèle vis-à-vis du lecteur. Ces modificateurs se combinent avec un style : on peut demander une réponse à la fois « technique » et « pédagogique ». Le plus utile en documentation reste le registre pédagogique, qui pousse le modèle à définir les termes au lieu de les présupposer connus.
- Pédagogique : "Explique simplement", "comme à un débutant"
- Professionnel : "En respectant les codes de l'entreprise"
- Pragmatique : "Avec des exemples pratiques et le code"
# Style concis et techniqueresponse = client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "system", "content": "Tu es un expert Kubernetes. Réponds de manière concise avec le code nécessaire." }, { "role": "user", "content": "Comment lister les pods en erreur dans tous les namespaces ?" } ], temperature=0.0)Tâches structurées
Section intitulée « Tâches structurées »Définir explicitement la tâche cadre la réponse et améliore la qualité. Utilisez des verbes d'action clairs et spécifiez le livrable attendu.
Structure recommandée
Section intitulée « Structure recommandée »Cadrer une tâche revient à répondre à quatre questions dans l'ordre, du plus général au plus précis. Ne sautez pas la dernière : les critères (longueur, exhaustivité) sont ce que les auteurs de prompts oublient le plus souvent, alors que leur absence explique la plupart des réponses « à côté ». Une tâche sans livrable ni critère laisse le modèle choisir à votre place le format et le niveau de détail.
- Verbe d'action : analyser, résumer, transformer, comparer
- Périmètre : quelles données, quelles contraintes
- Livrables : format de sortie, éléments obligatoires
- Critères : précision, exhaustivité, longueur
Exemple de tâche structurée
Section intitulée « Exemple de tâche structurée »Voici les quatre dimensions réunies dans un prompt réel. Remarquez la séparation visuelle en blocs étiquetés (TÂCHE, FORMAT, CONTRAINTE) : cette mise en forme aide le modèle à ne pas confondre l'instruction principale avec ses paramètres. La contrainte de sévérité (critique/majeur/mineur) impose au passage une grille de classement, ce qui rend les réponses comparables d'une exécution à l'autre.
TÂCHE : Analysez ce code Python et identifiez :1) Les potentiels bugs2) Les optimisations possibles3) Les bonnes pratiques manquantes
FORMAT : Liste numérotée avec sévérité (critique/majeur/mineur)CONTRAINTE : Maximum 10 pointsCombinaison rôle + style + tâche
Section intitulée « Combinaison rôle + style + tâche »La vraie puissance vient de la combinaison des trois dimensions :
prompt = """Tu es un consultant en transformation digitale [RÔLE]Adopte un ton professionnel mais accessible [STYLE]Analyse cette stratégie IT et propose un plan d'actionen 5 étapes concrètes avec budget estimatif [TÂCHE]
Stratégie : Migration vers Kubernetes d'une application monolithiquehébergée sur des VMs on-premise."""
response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}], temperature=0.3)Zero-shot, one-shot, few-shot
Section intitulée « Zero-shot, one-shot, few-shot »Le shot prompting consiste à fournir des exemples pour guider la réponse. Le choix de la technique dépend de la complexité de la tâche.
Zero-shot : sans exemple
Section intitulée « Zero-shot : sans exemple »Le modèle répond directement sans guidance spécifique :
# Zero-shot - tâches simplesresponse = client.chat.completions.create( model="gpt-4o-mini", messages=[{ "role": "user", "content": "Traduis 'Hello, how are you?' en français." }])# Réponse : "Bonjour, comment allez-vous ?"Avantage : Rapide, direct, efficace pour les tâches simples. Limite : Peut mal interpréter des consignes complexes.
One-shot : un exemple
Section intitulée « One-shot : un exemple »On fournit un seul exemple pour orienter le format :
prompt = """Exemple :Q : Quelle est la capitale de l'Italie ?R : Rome
Maintenant à toi :Q : Quelle est la capitale de l'Espagne ?R :"""
response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}])# Réponse : "Madrid"Few-shot : plusieurs exemples
Section intitulée « Few-shot : plusieurs exemples »On fournit 2 à 5 exemples pour solidifier le pattern :
prompt = """Convertis ces descriptions en commandes kubectl :
Description : Lister tous les podsCommande : kubectl get pods -A
Description : Voir les logs du pod nginxCommande : kubectl logs nginx
Description : Supprimer le deployment app-webCommande :"""
response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}])# Réponse : "kubectl delete deployment app-web"Tableau de choix
Section intitulée « Tableau de choix »Ce tableau résume quand basculer d'une technique à l'autre. La logique est graduelle : commencez toujours en zero-shot, le moins coûteux en tokens, et n'ajoutez des exemples que si le résultat dérive. La colonne Risques est celle qui doit guider votre choix, car chaque technique a un défaut propre, l'ambiguïté du zero-shot ou le coût en tokens du few-shot, qu'il faut accepter en connaissance de cause.
| Technique | Idéal pour | Risques |
|---|---|---|
| Zero-shot | Tâches simples, réponses génériques | Ambiguïté |
| One-shot | Format ou ton particulier | Exemple insuffisant |
| Few-shot | Structure spécifique, logique complexe | Coût en tokens |
Chain-of-Thought (CoT) basique
Section intitulée « Chain-of-Thought (CoT) basique »La chaîne de pensée encourage le modèle à expliciter son raisonnement avant de donner la réponse finale. Cette technique améliore la précision sur les tâches de raisonnement.
Zero-shot CoT
Section intitulée « Zero-shot CoT »La version la plus simple : ajouter une instruction de raisonnement.
problem = """Un serveur a 16 Go de RAM. L'application utilise 2 Go.Si je déploie 6 instances, quelle RAM reste-t-il ?"""
# Sans CoTprompt_simple = f"Réponds : {problem}"
# Avec CoTprompt_cot = f"""Résous ce problème étape par étape.Montre ton raisonnement avant la réponse finale.
{problem}"""
response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt_cot}], temperature=0.0)Sortie typique :
1. RAM totale : 16 Go2. RAM par instance : 2 Go3. Nombre d'instances : 64. RAM utilisée : 6 × 2 = 12 Go5. RAM restante : 16 - 12 = 4 Go
Réponse : Il reste 4 Go de RAM.Few-shot CoT
Section intitulée « Few-shot CoT »Fournir des exemples avec raisonnement pour guider le format :
prompt = """Q : J'ai 5 conteneurs, j'en arrête 2, puis j'en démarre 3. Combien en ai-je ?Raisonnement :- Je commence avec 5 conteneurs- J'en arrête 2 → il en reste 3- J'en démarre 3 → total = 3 + 3 = 6Réponse : 6
Q : J'ai 8 pods, 3 crashent, j'en redémarre 5. Combien sont actifs ?Raisonnement :"""Patterns de prompts réutilisables
Section intitulée « Patterns de prompts réutilisables »Les prompt patterns sont des structures réutilisables, analogues aux design patterns en programmation. Ils permettent d'industrialiser vos prompts.
Persona Pattern
Section intitulée « Persona Pattern »Définir l'IA comme un expert pour assurer cohérence et expertise :
Tu es un nutritionniste vétéran avec 15 ans d'expérience.Analyse mes rapports de santé et donne des recommandations personnalisées.Question Refinement Pattern
Section intitulée « Question Refinement Pattern »L'IA propose une version améliorée de votre question :
À partir de maintenant, chaque fois que je pose une question,propose une version plus précise et complète, puis demande-moisi je souhaite utiliser cette version améliorée.Output Automater Pattern
Section intitulée « Output Automater Pattern »Générer automatiquement du code pour appliquer les suggestions :
Tu es un expert DevOps. Chaque fois que tu suggères une modification,génère aussi un script Python ou Bash pour l'automatiser.Template combiné DevOps
Section intitulée « Template combiné DevOps »Le module Template de la bibliothèque standard Python remplace des variables $domain, $environment dans une chaîne, sans dépendance externe. L'intérêt ici n'est pas le code mais la séparation entre la structure fixe du prompt, écrite une fois, et les valeurs variables injectées à chaque appel. Ce découpage évite de réécrire un prompt complet pour chaque incident et garantit que tous vos diagnostics suivent le même format de sortie.
from string import Template
DEVOPS_TEMPLATE = Template("""Tu es un expert $domain avec 10 ans d'expérience.
## Contexte- Environnement : $environment- Stack : $stack
## Tâche$task
## Format de réponse1. Diagnostic en 2 lignes2. Solution avec commandes3. Validation""")
prompt = DEVOPS_TEMPLATE.substitute( domain="Kubernetes", environment="Production GKE", stack="Helm, ArgoCD, Prometheus", task="Diagnostiquer les pods en CrashLoopBackOff")Application au RAG
Section intitulée « Application au RAG »Pour les systèmes RAG (Retrieval-Augmented Generation), le prompt engineering définit comment le modèle doit utiliser le contexte récupéré.
Structure d'un prompt RAG
Section intitulée « Structure d'un prompt RAG »Tu es un assistant expert en $domaine.Utilise UNIQUEMENT les informations du contexte ci-dessous.Si la réponse ne s'y trouve pas, dis-le clairement.
CONTEXTE :{documents récupérés}
QUESTION :{question utilisateur}
INSTRUCTIONS :- Réponds de manière concise- Cite les parties du contexte qui soutiennent ta réponse- N'utilise pas tes connaissances préexistantesContrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Rôle (Persona) : Donnez une expertise au modèle avec le system prompt
- Style : Adaptez le ton à l'audience (technique, pédagogique, concis)
- Tâche : Cadrez précisément avec verbe d'action + livrables + contraintes
- Zero-shot : Tâches simples, sans exemple
- Few-shot : Fournissez 2-5 exemples pour les formats complexes
- CoT : Ajoutez "étape par étape" pour le raisonnement
- Patterns : Créez des templates réutilisables pour industrialiser
- RAG : Définissez clairement comment utiliser le contexte
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Introduction à LiteLLM : Rejouer ces techniques sur plusieurs fournisseurs avec une seule API Python.
- Ollama : SDK Python et Structured Output : Appliquer les mêmes prompts à un modèle local, avec des sorties typées.
- Introduction au RAG : Nourrir le prompt avec vos documents plutôt que de tout attendre du modèle.