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 »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 analogies simples. 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 »| Style | Exemple de directive |
|---|---|
| Académique | ”Rédigez une analyse formelle avec références” |
| Décontracté | ”Explique-moi comme si on discutait autour d’un café” |
| Technique | ”Fournissez des métriques quantitatives et du code” |
| Concis | ”Réponds en 3 bullet points maximum” |
Modifiateurs de ton utiles
Section intitulée « Modifiateurs de ton utiles »- 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 »- 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 »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 »| 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 »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éexistantesÀ 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