Aller au contenu
Développement high

Prompt Engineering : les fondamentaux pour des résultats fiables

16 min de lecture

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.

  • 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

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ée
des pays limitrophes de la France avec une brève description de chacun."

Pourquoi l’engineering est nécessaire ?

ProblèmeConséquence
Trop courtRéponse imprécise
Trop flouL’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.

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.

Tu es un architecte logiciel senior avec 10 ans d'expérience
en microservices. Analyse cette architecture et propose des
améliorations.
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)

Le style et le ton influencent la présentation de l’information. Selon votre audience, demandez des réponses formelles, techniques ou vulgarisées.

StyleExemple 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”
  • 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 technique
response = 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
)

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.

  1. Verbe d’action : analyser, résumer, transformer, comparer
  2. Périmètre : quelles données, quelles contraintes
  3. Livrables : format de sortie, éléments obligatoires
  4. Critères : précision, exhaustivité, longueur
TÂCHE : Analysez ce code Python et identifiez :
1) Les potentiels bugs
2) Les optimisations possibles
3) Les bonnes pratiques manquantes
FORMAT : Liste numérotée avec sévérité (critique/majeur/mineur)
CONTRAINTE : Maximum 10 points

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'action
en 5 étapes concrètes avec budget estimatif [TÂCHE]
Stratégie : Migration vers Kubernetes d'une application monolithique
hébergée sur des VMs on-premise.
"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)

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.

Le modèle répond directement sans guidance spécifique :

# Zero-shot - tâches simples
response = 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.

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"

On fournit 2 à 5 exemples pour solidifier le pattern :

prompt = """
Convertis ces descriptions en commandes kubectl :
Description : Lister tous les pods
Commande : kubectl get pods -A
Description : Voir les logs du pod nginx
Commande : kubectl logs nginx
Description : Supprimer le deployment app-web
Commande :"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
# Réponse : "kubectl delete deployment app-web"
TechniqueIdéal pourRisques
Zero-shotTâches simples, réponses génériquesAmbiguïté
One-shotFormat ou ton particulierExemple insuffisant
Few-shotStructure spécifique, logique complexeCoût en tokens

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.

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 CoT
prompt_simple = f"Réponds : {problem}"
# Avec CoT
prompt_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 Go
2. RAM par instance : 2 Go
3. Nombre d'instances : 6
4. RAM utilisée : 6 × 2 = 12 Go
5. RAM restante : 16 - 12 = 4 Go
Réponse : Il reste 4 Go de RAM.

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 = 6
Réponse : 6
Q : J'ai 8 pods, 3 crashent, j'en redémarre 5. Combien sont actifs ?
Raisonnement :"""

Les prompt patterns sont des structures réutilisables, analogues aux design patterns en programmation. Ils permettent d’industrialiser vos prompts.

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.

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-moi
si je souhaite utiliser cette version améliorée.

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.
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éponse
1. Diagnostic en 2 lignes
2. Solution avec commandes
3. Validation
""")
prompt = DEVOPS_TEMPLATE.substitute(
domain="Kubernetes",
environment="Production GKE",
stack="Helm, ArgoCD, Prometheus",
task="Diagnostiquer les pods en CrashLoopBackOff"
)

Pour les systèmes RAG (Retrieval-Augmented Generation), le prompt engineering définit comment le modèle doit utiliser le contexte récupéré.

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
  • 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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.