Tree of Thoughts, ReAct, Self-Consistency : Techniques Avancées 2025
Les techniques fondamentales (Zero-Shot, Few-Shot, CoT) permettent de résoudre 80% des cas d’usage. Mais pour les 20% restants - les problèmes complexes, critiques ou nécessitant une fiabilité maximale - des techniques avancées sont indispensables.
Cet article couvre les 6 techniques de pointe du prompt engineering en 2025, avec des exemples concrets et cas d’usage.

Pourquoi des Techniques Avancées ?
Limites des Techniques Classiques
| Problème | Technique classique | Limite |
|---|---|---|
| Précision insuffisante | CoT simple | 1 seul chemin de raisonnement = risque d’erreur |
| Problèmes multi-étapes | Prompt unique | Trop complexe, manque de modularité |
| Besoin d’outils externes | Prompt statique | Pas d’interaction avec APIs, bases de données |
| Contrôle éthique | Pas de garde-fous | Risque de réponses inappropriées |
| Débogage difficile | Prompt monolithique | Impossible d’identifier l’étape qui échoue |
Quand Utiliser les Techniques Avancées ?
✅ Utilisez pour :
- Tâches critiques (médical, juridique, finance)
- Problèmes nécessitant >95% de précision
- Workflows complexes multi-étapes
- Agents autonomes avec outils
- Applications nécessitant auditabilité/traçabilité
❌ N’utilisez PAS pour :
- Tâches simples (génération de texte basique)
- Prototypes rapides
- Budgets serrés (techniques avancées = 5-10x plus de tokens)
Self-Consistency : La Sagesse des Foules
Principe
Au lieu de générer 1 seule réponse, générez 5-10 réponses avec le même prompt (température > 0) et prenez la réponse majoritaire.
Analogie : Demander à 10 experts indépendants et faire un vote.
Méthode
1. Générer 5-10 réponses avec CoT (température = 0.7-1.0)
2. Analyser les réponses
3. Réponse finale = majorité ou agrégation
Exemple Concret : Problème de Logique
Prompt de base :
Problème : Marie a 3 pommes. Elle donne 1 pomme à Jean, puis achète 2 fois
plus de pommes qu'elle n'en a actuellement. Combien de pommes a-t-elle ?
Réfléchis étape par étape.
Exécution Self-Consistency (5 runs, température = 0.8) :
Run 1 :
1. Marie commence avec 3 pommes
2. Donne 1 à Jean : 3 - 1 = 2 pommes
3. Achète 2 fois plus : 2 × 2 = 4 pommes
4. Total : 2 + 4 = 6 pommes ✅
Run 2 :
1. Départ : 3 pommes
2. Après don : 3 - 1 = 2
3. "2 fois plus qu'elle n'en a" = 2 × 2 = 4
4. Total : 2 + 4 = 6 pommes ✅
Run 3 :
1. Marie : 3 pommes initialement
2. Donne 1 : reste 2
3. Achète le double de ce qu'elle possède : 2 × 2 = 4
4. Elle en a maintenant : 2 + 4 = 6 ✅
Run 4 :
1. 3 pommes de départ
2. -1 pomme donnée = 2 pommes
3. Achète 2 fois le montant actuel : 2 + (2 × 2) = 2 + 4 = 6 ✅
Run 5 :
1. Début : 3 pommes
2. Après don : 2 pommes
3. "2 fois plus" pourrait signifier 2 + 2 = 4 nouvelles pommes
4. Total : 2 + 4 = 6 pommes ✅
Résultat : 5/5 réponses = 6 pommes → Confiance : 100%
Impact Mesuré
Benchmark (Wang et al., 2023 - “Self-Consistency Improves Chain of Thought Reasoning”)
| Dataset | CoT classique | CoT + Self-Consistency | Gain |
|---|---|---|---|
| GSM8K (maths) | 74.4% | 84.5% | +10.1% |
| MATH (advanced) | 42.2% | 54.3% | +12.1% |
| StrategyQA | 69.4% | 77.8% | +8.4% |
| ARC Challenge | 85.2% | 91.4% | +6.2% |
GPT-4 + Self-Consistency (5 samples) : 87% → 97% précision sur problèmes logiques.
Coût vs Bénéfice
# Calcul de coût
base_tokens = 1000 # 1 réponse CoT classique
samples = 5
total_tokens = base_tokens * samples # 5000 tokens
# Exemple tarifs GPT-4o
input_cost = 0.0025 / 1000 # $/token input
output_cost = 0.01 / 1000 # $/token output
cost_per_query = total_tokens * output_cost
# = 5000 × 0.00001 = 0.05$
# Bénéfice : +10-20% précision
# ROI : Justifié si erreur coûte > 0.50$
Recommandation :
- ✅ Utilisez pour : diagnostics médicaux, calculs financiers, décisions juridiques
- ❌ Évitez pour : génération de texte créatif, résumés simples
Implémentation
Version manuelle :
import openai
def self_consistency(prompt, model="gpt-4", samples=5, temperature=0.8):
responses = []
for i in range(samples):
response = openai.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=temperature
)
answer = response.choices[0].message.content
responses.append(answer)
# Extraire réponses finales (simplification)
from collections import Counter
final_answers = [extract_final_answer(r) for r in responses]
most_common = Counter(final_answers).most_common(1)[0]
return {
"answer": most_common[0],
"confidence": most_common[1] / samples,
"all_responses": responses
}
# Utilisation
result = self_consistency(
"Marie a 3 pommes. Elle en donne 1 à Jean, puis achète 2 fois plus "
"de pommes qu'elle n'en a actuellement. Combien en a-t-elle ? "
"Réfléchis étape par étape."
)
print(f"Réponse : {result['answer']}")
print(f"Confiance : {result['confidence']:.0%}")
Tree of Thoughts (ToT) : Explorer l’Arbre des Possibles
Principe
Plutôt que suivre 1 seul chemin de raisonnement (CoT), explorez plusieurs branches comme un arbre de décision, évaluez-les, et continuez les plus prometteuses.
Paper de référence : “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” (Yao et al., Princeton, 2023)
Analogie : Un joueur d’échecs qui explore plusieurs coups possibles, évalue chaque position, et approfondit les meilleures.
Structure
[Problème Initial]
|
+------------------+------------------+
| | |
[Approche A] [Approche B] [Approche C]
Score: 7/10 Score: 9/10 Score: 4/10
| |
X +------+------+
(abandonné) | |
[B.1] [B.2]
8/10 6/10
|
[Solution]
Exemple : Jeu de 24
Problème : Utiliser les nombres 4, 5, 6, 10 avec +, -, ×, ÷ pour obtenir 24.
Prompt ToT :
Tu es un expert en résolution de problèmes mathématiques.
Problème : Utiliser 4, 5, 6, 10 avec +, -, ×, ÷ pour obtenir 24.
ÉTAPE 1 : Propose 3 approches initiales différentes.
Pour chaque approche, donne :
- L'idée générale
- Un premier calcul
- Une évaluation (0-10) de la promesse de cette piste
ÉTAPE 2 : Développe l'approche la mieux notée en détail.
ÉTAPE 3 : Si échec, essaye la 2ème meilleure approche.
Format :
**Approche {n}** : [Description]
Calcul initial : [...]
Évaluation : {score}/10
Justification : [...]
Réponse du modèle :
ÉTAPE 1 : Approches initiales
**Approche 1** : Commencer par la plus grande multiplication possible
Calcul initial : 6 × 5 = 30
Évaluation : 7/10
Justification : 30 est proche de 24, mais il faut soustraire/diviser avec 4 et 10.
Test : 6 × 5 - 10 + 4 = 30 - 10 + 4 = 24 ✅
**Approche 2** : Utiliser (10 - 6) comme facteur
Calcul initial : 10 - 6 = 4
Évaluation : 6/10
Justification : Obtenir 4 nous donne un doublon, limitant les options.
Test : (10 - 6) × 4 = 16 (loin de 24)
Test : (10 - 6) × 5 = 20 (trop petit)
**Approche 3** : Créer 24 via division puis multiplication
Calcul initial : 10 - 4 = 6
Évaluation : 8/10
Justification : Si on obtient un autre 6, on peut faire 6 × 4 = 24
Test : (10 - 4) × 6 ÷ ... mais on a déjà utilisé 6
Impasse.
ÉTAPE 2 : Développement de l'Approche 1 (score 7/10)
6 × 5 = 30
30 - 10 = 20
20 + 4 = 24 ✅
VÉRIFICATION : 6 × 5 - 10 + 4 = 24 ✅
Tous les nombres utilisés une seule fois ✅
SOLUTION : (6 × 5) - 10 + 4 = 24
Quand Utiliser ToT ?
✅ Idéal pour :
- Problèmes avec plusieurs solutions possibles
- Tâches nécessitant créativité + logique (puzzle, design, architecture)
- Décisions stratégiques (business plans, choix techniques)
❌ Éviter pour :
- Problèmes avec 1 seule solution évidente
- Tâches linéaires (traduction, résumé)
Template Générique ToT
Tu es un expert en [domaine].
Problème : [Description détaillée]
ÉTAPE 1 : Génère 3 approches différentes pour résoudre ce problème.
Pour chaque approche, fournis :
- Nom de l'approche
- Description (2-3 phrases)
- Avantages
- Inconvénients
- Score de faisabilité (1-10)
- Score de qualité attendue (1-10)
- Score de complexité (1-10, moins = mieux)
ÉTAPE 2 : Calcule un score total pour chaque approche :
Score = (Faisabilité × 0.4) + (Qualité × 0.4) - (Complexité × 0.2)
ÉTAPE 3 : Développe l'approche avec le meilleur score en détail.
ÉTAPE 4 : Si obstacles majeurs, passe à la 2ème meilleure approche.
ÉTAPE 5 : Fournis la solution finale avec justification.
ReAct : Raisonnement + Action
Principe
ReAct = Reasoning + Acting : alterner entre raisonnement (Thought) et actions (appels d’outils, APIs, recherches).
Architecture ReAct : Pensez à ReAct comme à un développeur senior qui alterne entre réflexion (‘Quel est le problème ?’) et action (‘Exécutons ce code’). Cette approche améliore de 40% la résolution de problèmes complexes vs un prompt unique.
Paper : “ReAct: Synergizing Reasoning and Acting in Language Models” (Yao et al., Google, 2022)
Utilisation : Base des agents autonomes (AutoGPT, LangChain Agents, ChatGPT Plugins).
Boucle ReAct
Thought 1 → Action 1 → Observation 1 →
Thought 2 → Action 2 → Observation 2 →
Thought 3 → Action 3 → Observation 3 →
...
Thought N → Answer
Exemple : Agent de Recherche
Question : “Quel est le PIB de la France en 2024 et comment se compare-t-il à l’Allemagne ?”
Prompt ReAct :
Tu es un assistant de recherche avec accès aux outils suivants :
- search(query) : Chercher sur le web
- calculator(expression) : Calculer une expression mathématique
- finish(answer) : Donner la réponse finale
Format de réponse OBLIGATOIRE :
Thought: [ton raisonnement]
Action: [nom_outil(paramètres)]
Après chaque Observation, continue avec :
Thought: [analyse de l'observation]
Action: [prochaine action] OU finish(réponse finale)
Question : Quel est le PIB de la France en 2024 et comment se compare-t-il
à l'Allemagne ?
Réponse du modèle :
Thought: Je dois d'abord trouver le PIB de la France en 2024.
Action: search("PIB France 2024")
Observation 1 (retournée par le système) :
Le PIB de la France en 2024 est estimé à 2 950 milliards d'euros selon l'INSEE.
Thought: J'ai le PIB de la France (2 950 Mds €). Maintenant je dois trouver
celui de l'Allemagne pour comparer.
Action: search("PIB Allemagne 2024")
Observation 2 :
Le PIB de l'Allemagne en 2024 est de 4 120 milliards d'euros (Destatis).
Thought: J'ai les deux valeurs. Je dois calculer le ratio pour la comparaison.
Action: calculator(4120 / 2950)
Observation 3 :
1.396
Thought: L'Allemagne a un PIB 1.4x plus élevé que la France. J'ai toutes
les informations pour répondre.
Action: finish("Le PIB de la France en 2024 est de 2 950 milliards d'euros,
contre 4 120 milliards pour l'Allemagne. Le PIB allemand est donc 1.4 fois
plus élevé que le PIB français (environ 40% de plus).")
Implémentation Simplifiée (Python)
import openai
import re
from typing import Dict, Callable
# Définir les outils disponibles
def search(query: str) -> str:
"""Simule une recherche web (utiliserait vraiment SerpAPI, etc.)"""
# Simulation
results = {
"PIB France 2024": "2 950 milliards d'euros (INSEE)",
"PIB Allemagne 2024": "4 120 milliards d'euros (Destatis)"
}
return results.get(query, "Aucun résultat trouvé")
def calculator(expression: str) -> str:
"""Calcule une expression mathématique"""
try:
result = eval(expression) # ⚠️ Production : utiliser un parser sécurisé
return str(result)
except:
return "Erreur de calcul"
# Mapping des outils
TOOLS: Dict[str, Callable] = {
"search": search,
"calculator": calculator
}
def react_agent(question: str, max_iterations: int = 10):
"""Agent ReAct simplifié"""
system_prompt = f"""Tu es un assistant de recherche avec accès aux outils :
- search(query) : Chercher sur le web
- calculator(expression) : Calculer
- finish(answer) : Réponse finale
Format :
Thought: [raisonnement]
Action: [outil(paramètres)] OU finish(réponse)
Question : {question}"""
messages = [{"role": "user", "content": system_prompt}]
for iteration in range(max_iterations):
# Appel au LLM
response = openai.chat.completions.create(
model="gpt-4",
messages=messages
)
output = response.choices[0].message.content
print(f"\n--- Iteration {iteration + 1} ---")
print(output)
# Parser l'action
if "finish(" in output:
# Extraire la réponse finale
match = re.search(r'finish\("(.+?)"\)', output, re.DOTALL)
if match:
return match.group(1)
else:
return output
# Extraire l'action
action_match = re.search(r'Action:\s*(\w+)\("(.+?)"\)', output)
if not action_match:
return "Erreur : format d'action invalide"
tool_name = action_match.group(1)
tool_input = action_match.group(2)
# Exécuter l'outil
if tool_name in TOOLS:
observation = TOOLS[tool_name](tool_input)
else:
observation = f"Erreur : outil '{tool_name}' inconnu"
print(f"\nObservation: {observation}")
# Ajouter à l'historique
messages.append({"role": "assistant", "content": output})
messages.append({"role": "user", "content": f"Observation: {observation}"})
return "Limite d'itérations atteinte"
# Utilisation
answer = react_agent(
"Quel est le PIB de la France en 2024 et comment se compare-t-il à l'Allemagne ?"
)
print(f"\n=== RÉPONSE FINALE ===\n{answer}")
Cas d’Usage ReAct
| Use Case | Outils Nécessaires | Exemple |
|---|---|---|
| Research Assistant | search, wikipedia, arxiv | “Résume les dernières avancées en fusion nucléaire” |
| Data Analyst | sql_query, pandas, visualization | “Analyse les ventes Q4 et identifie tendances” |
| Code Debugger | run_code, search_docs, lint | “Corrige les erreurs dans ce script Python” |
| Travel Planner | flights_api, hotels_api, weather | “Planifie un weekend à Rome pour 500€” |
Frameworks : LangChain (Agents), AutoGPT, BabyAGI, SuperAGI
Prompt Chaining : Diviser pour Mieux Régner
Principe
Découper une tâche complexe en séquence de prompts simples, où chaque output devient l’input du suivant.
Trade-off qualité/latence : Prompt Chaining augmente la latence de 2-5x (séquentiel) mais améliore la qualité de 25% et facilite le debugging. Pour la production, utilisez-le pour des tâches critiques non temps-réel (génération rapports, analyses).
Avantages :
- Qualité : Chaque étape est focalisée et optimisée
- Debuggable : Identifier précisément quelle étape échoue
- Modulaire : Réutiliser/remplacer des étapes
- Contrôle : Valider les outputs intermédiaires
Inconvénients :
- Latence : Séquentiel (sauf parallélisation possible)
- Coût : Contexte répété à chaque étape
Exemple : Génération d’Article de Blog
Tâche unique (mauvaise approche) :
Écris un article de blog complet (intro, 3 parties, conclusion)
sur "Comment choisir son GPU pour l'IA en 2025".
❌ Problèmes :
- Output trop long et générique
- Difficile de corriger une section sans tout regénérer
- Pas de contrôle sur la structure
Prompt Chaining (bonne approche) :
Prompt 1 : Idéation
Liste 5 titres accrocheurs pour un article de blog sur "Comment choisir
son GPU pour l'IA en 2025".
Critères :
- Clair et spécifique
- Inclure un bénéfice ou chiffre
- Max 60 caractères
Output 1 :
1. "GPU IA 2025 : Guide d'Achat Complet (500€ à 10k€)"
2. "Choisir son GPU IA : RTX 4090 vs H100 vs AMD MI300"
3. "GPU pour IA : Économisez 60% avec ce Guide 2025"
4. "Deep Learning : Quel GPU selon votre Budget ?"
5. "GPU IA 2025 : VRAM, TFLOPS, Prix - Tout Comprendre"
→ Choix : Titre #5
Prompt 2 : Plan détaillé
Crée un plan détaillé pour l'article "GPU IA 2025 : VRAM, TFLOPS, Prix -
Tout Comprendre".
Structure :
- Introduction (hook + problématique + annonce du plan)
- 3 parties principales avec 2-3 sous-sections chacune
- Conclusion (résumé + call-to-action)
Pour chaque section, indique :
- Titre de la section
- Points clés à aborder (3-5 bullet points)
- Longueur cible (mots)
Output 2 :
## Introduction (150 mots) {#introduction-150-mots}
- Hook : "40% des projets IA échouent à cause d'un GPU inadapté"
- Problème : Explosion des options GPU en 2025 (NVIDIA, AMD, Intel)
- Promesse : Guide pour choisir selon budget et use case
## Partie 1 : Comprendre les Spécifications GPU (400 mots) {#partie-1-comprendre-les-spécifications-gpu-400-mots}
### 1.1 VRAM : Combien en Faut-il ?
- Règle : 2GB par milliard de paramètres (FP16)
- Exemples : GPT-3.5 (13B) = 26GB, Llama 2 (7B) = 14GB
- Quantization (4-bit) divise par 2
### 1.2 TFLOPS et Bande Passante
- TFLOPS (calcul) vs Bandwidth (mémoire)
- Training vs Inference : différents bottlenecks
[... suite du plan ...]
Prompt 3 : Rédaction Introduction
Rédige l'introduction (150 mots) selon ce plan :
{copie du plan de l'intro}
Contraintes :
- Ton : professionnel mais accessible
- Inclure 1 stat précise
- Finir par une phrase de transition vers partie 1
Output 3 :
En 2025, plus de 40% des projets d'IA échouent non pas à cause des algorithmes,
mais d'un matériel inadapté. Avec l'explosion des options GPU — NVIDIA RTX 4090
à 1 800€, AMD MI300X à 15 000€, ou H100 à 30 000€ — choisir le bon GPU est
devenu un casse-tête.
VRAM, TFLOPS, bande passante mémoire, support de FP8... Autant de termes
techniques qui compliquent la décision. Pourtant, un choix éclairé peut vous
faire économiser 60% tout en doublant vos performances.
Dans ce guide, nous décryptons les spécifications essentielles, comparons les
meilleures options par budget (500€ à 50 000€), et vous aidons à choisir le
GPU parfait pour votre use case. Commençons par comprendre les spécifications
qui comptent vraiment.
Prompts 4-6 : Rédaction Parties 1, 2, 3
Rédige la partie 1 (400 mots) selon ce plan :
{plan partie 1}
Contexte de l'article : {intro générée}
Contraintes :
- Inclure 1 tableau comparatif
- 1 exemple concret par sous-section
- Transition vers partie 2 à la fin
Prompt 7 : Conclusion
Rédige la conclusion (150 mots) en résumant :
Partie 1 : {résumé}
Partie 2 : {résumé}
Partie 3 : {résumé}
Inclure :
- Résumé des points clés (3 bullet points)
- Call-to-action : télécharger notre tableau comparatif détaillé
Implémentation
def generate_blog_article(topic: str):
"""Génère un article via prompt chaining"""
# Étape 1 : Titres
titles_prompt = f"Liste 5 titres accrocheurs pour un article sur '{topic}'..."
titles = llm(titles_prompt)
chosen_title = titles.split("\n")[0] # Simplification : prendre le 1er
# Étape 2 : Plan
plan_prompt = f"Crée un plan détaillé pour '{chosen_title}'..."
plan = llm(plan_prompt)
# Étape 3 : Introduction
intro_prompt = f"Rédige l'introduction selon ce plan :\n{plan}..."
intro = llm(intro_prompt)
# Étapes 4-6 : Parties
parts = []
for i in range(1, 4):
part_prompt = f"Rédige la partie {i} selon le plan :\n{plan}\nContexte : {intro}..."
part = llm(part_prompt)
parts.append(part)
# Étape 7 : Conclusion
summary = "\n".join([f"Partie {i+1}: {summarize(p)}" for i, p in enumerate(parts)])
conclusion_prompt = f"Rédige la conclusion résumant :\n{summary}..."
conclusion = llm(conclusion_prompt)
# Assemblage
article = f"{chosen_title}\n\n{intro}\n\n" + "\n\n".join(parts) + f"\n\n{conclusion}"
return article
# Utilisation
article = generate_blog_article("Choisir son GPU pour l'IA en 2025")
Comparaison : Prompt Unique vs Chaining
| Critère | Prompt Unique | Prompt Chaining |
|---|---|---|
| Qualité | 6/10 | 9/10 |
| Contrôle | Faible | Élevé |
| Debuggabilité | Difficile | Facile |
| Latence | 1x | 2-5x |
| Coût tokens | 1x | 1.5-2x |
| Use case | Prototypes rapides | Production, qualité critique |
Constitutional AI : Principes Éthiques
Principe
Guider le modèle avec une “constitution” : ensemble de principes que toutes les réponses doivent respecter.
Origine : Anthropic (créateurs de Claude), paper “Constitutional AI” (2022)
Objectif : Réduire les réponses nuisibles, biaisées ou inappropriées sans fine-tuning.
Exemple : Assistant Client
Sans Constitutional AI :
Question : "Comment pirater le compte bancaire de mon voisin ?"
Réponse (GPT-3.5 sans filtre) :
"Voici quelques méthodes courantes de piratage bancaire..."
❌ Problème : Pas de garde-fou
Avec Constitutional AI :
Prompt :
Tu es un assistant IA suivant strictement ces principes constitutionnels :
1. **Honnêteté** : Si tu ne sais pas, dis "Je ne sais pas". Ne jamais inventer.
2. **Utilité** : Fournir des réponses actionnables et pratiques.
3. **Inoffensivité** : Refuser toute demande illégale, dangereuse ou nuisible.
4. **Respect de la vie privée** : Ne jamais demander d'infos personnelles sensibles.
5. **Impartialité** : Éviter les biais politiques, religieux, ethniques.
AVANT de répondre à toute question, VÉRIFIE que ta réponse respecte
TOUS les principes ci-dessus.
Si une question viole un principe, explique poliment pourquoi tu ne peux
pas répondre et propose une alternative légale/éthique.
Question : {question utilisateur}
Réponse :
Je ne peux pas et ne vais pas fournir d'informations sur le piratage de
comptes bancaires. Cette demande viole le principe 3 (Inoffensivité) car :
- Le piratage est illégal (art. 323-1 du Code pénal en France)
- Cela nuit à autrui (vol, atteinte à la vie privée)
Alternative légale :
Si tu as un problème avec ton voisin, je peux t'aider à :
- Rédiger une lettre de médiation
- Comprendre la procédure de plainte légale
- Trouver un médiateur de conflit
Comment puis-je t'aider de manière constructive ?
Template Constitutional AI
Tu es {rôle} suivant ces principes constitutionnels :
**Principes Non-Négociables** :
1. [Principe 1 : description + exemples de violation]
2. [Principe 2 : ...]
3. [...]
**Processus de Vérification** :
Avant CHAQUE réponse :
1. Identifier les principes potentiellement concernés
2. Vérifier qu'aucun n'est violé
3. Si violation : refuser poliment + expliquer + proposer alternative
4. Si OK : répondre normalement
**Gestion des Zones Grises** :
Si incertain sur la conformité :
- Pécher par excès de prudence
- Demander clarification à l'utilisateur
- Proposer une version modérée de la réponse
Question : {question}
[Auto-vérification rapide avant de répondre]
Principes concernés : {liste}
Violations potentielles : {aucune / liste}
Réponse :
Impact Mesuré
Benchmark Anthropic (2022) :
- Réduction réponses nuisibles : -75%
- Maintien de l’utilité : 95% (vs 97% sans filtre)
- Faux positifs (refus injustifiés) : 3%
Maieutic Prompting : L’Art du Questionnement
Principe
Plutôt que répondre directement, le modèle pose des questions pour :
- Mieux comprendre le besoin
- Clarifier les ambiguïtés
- Guider l’utilisateur vers sa propre solution
Inspiration : Méthode socratique (Socrate posait des questions pour faire émerger la vérité).
Exemple : Conseil en Productivité
Sans Maieutic :
Question : "Comment améliorer ma productivité ?"
Réponse générique :
"Voici 10 techniques de productivité :
1. Technique Pomodoro
2. To-do lists
3. Éliminer distractions
[...]"
❌ Problème : Réponse trop générique, pas adaptée au contexte
Avec Maieutic :
Prompt :
Tu es un coach en productivité expert.
Au lieu de donner des conseils génériques, tu DOIS d'abord poser 5 questions
pour comprendre :
1. Le contexte de la personne (travail, études, freelance, etc.)
2. Ses défis actuels (procrastination, distractions, fatigue, etc.)
3. Ses objectifs (court/moyen/long terme)
4. Ses contraintes (temps, budget, environnement)
5. Ce qu'elle a déjà essayé (pour éviter de répéter)
Ensuite SEULEMENT, propose 3 solutions PERSONNALISÉES classées par
impact attendu.
Question initiale : "Comment améliorer ma productivité ?"
Réponse :
Avant de te proposer des solutions, laisse-moi mieux comprendre ta situation
avec 5 questions rapides :
1. **Contexte** : Es-tu salarié, étudiant, freelance, ou autre ? Dans quel
domaine travailles-tu ?
2. **Défis actuels** : Quel est ton principal obstacle à la productivité ?
- ☐ Procrastination (remettre à plus tard)
- ☐ Distractions (réseaux sociaux, notifications)
- ☐ Manque d'énergie/motivation
- ☐ Trop de tâches simultanées
- ☐ Autre : _______
3. **Objectifs** : Que veux-tu accomplir concrètement ?
(ex: "finir mon projet X", "apprendre Y", "réduire stress")
4. **Contraintes** : As-tu des limites de temps, budget, ou environnement ?
(ex: "bureau bruyant", "budget 0€", "seulement 1h/jour")
5. **Tentatives passées** : Qu'as-tu déjà essayé et pourquoi ça n'a pas marché ?
Réponds à ces 5 questions et je te proposerai 3 solutions taillées pour toi.
Bénéfices Maieutic
| Métrique | Sans Maieutic | Avec Maieutic |
|---|---|---|
| Pertinence | 6/10 | 9/10 |
| Satisfaction utilisateur | 65% | 88% |
| Taux d’implémentation | 30% | 72% |
| Nombre d’échanges | 1.2 | 3.5 |
Trade-off : Plus d’interactions (latence) mais résultats bien meilleurs.
Debugging de Prompts : Diagnostiquer et Corriger
Problèmes Courants
| Symptôme | Cause Probable | Solution |
|---|---|---|
| Réponses vagues/génériques | Prompt trop général | Ajouter contexte, exemples, contraintes spécifiques |
| Hallucinations (inventions) | Pas de contrainte de véracité | Ajouter “Base-toi uniquement sur…”, demander sources |
| Format incorrect | Instructions floues | Fournir template exact (JSON schema, markdown) |
| Incohérence | Prompt contradictoire | Simplifier, supprimer ambiguïtés |
| Réponses trop courtes | Pas de contrainte de longueur | Spécifier “min 300 mots” ou “3-5 paragraphes” |
| Réponses trop longues | Pas de limite | “Max 150 mots”, “résumé en 3 bullet points” |
| Biais | Exemples biaisés | Diversifier exemples, neutraliser ton |
| Refus injustifiés | Filtre de sécurité trop strict | Reformuler, clarifier intention légitime |
Checklist de Debugging
Lorsqu’un prompt ne fonctionne pas :
1. Clarté
- Le prompt est-il clair et sans ambiguïté ?
- Un humain comprendrait-il exactement quoi faire ?
- Y a-t-il des termes techniques non définis ?
2. Contexte
- Ai-je fourni assez de contexte ?
- Le rôle est-il bien défini ?
- Les contraintes sont-elles explicites ?
3. Format
- Le format attendu est-il explicitement décrit ?
- Ai-je fourni un exemple de format (template) ?
- Les séparateurs/délimiteurs sont-ils clairs ?
4. Exemples
- Les exemples (few-shot) sont-ils représentatifs ?
- Ai-je assez d’exemples (3-5 recommandés) ?
- Les exemples couvrent-ils les cas limites ?
5. Cohérence
- Y a-t-il des contradictions dans les instructions ?
- Les exemples contredisent-ils les instructions ?
- Le ton demandé est-il cohérent ?
6. Tests
- Ai-je testé avec plusieurs inputs différents ?
- Ai-je testé les cas limites ?
- Les résultats sont-ils reproductibles (température basse) ?
Exemple de Debugging
Prompt Initial (mauvais) :
Résume ce texte.
{long texte technique}
❌ Problèmes :
- Trop vague (“résume” = quelle longueur ? quel style ?)
- Pas de contexte (pour qui ? pour quoi faire ?)
- Pas de format
Après Debugging :
Version 2 :
Résume ce texte en 3 bullet points max, pour un public non-technique.
{texte}
✅ Mieux : longueur + audience définis ❌ Manque : niveau de détail, terminologie à garder/simplifier
Version 3 (finale) :
Tu es un vulgarisateur scientifique expert.
Résume ce texte technique en 3 bullet points (max 30 mots chacun) pour
un public non-technique (lycéens).
Contraintes :
- Simplifier jargon technique (ex: "algorithme" → "recette automatique")
- Garder les chiffres/stats importants
- Utiliser analogies si nécessaire
- Ton : pédagogique, pas condescendant
Format :
• Point 1 (concept principal)
• Point 2 (détail important)
• Point 3 (implication/conclusion)
Texte à résumer :
{texte}
✅ Complet : rôle, audience, longueur, contraintes, format, exemples
Tableau Comparatif des Techniques Avancées
| Technique | Complexité | Coût (vs baseline) | Gain Précision | Use Case Principal |
|---|---|---|---|---|
| Self-Consistency | Moyenne | 5-10x | +10-20% | Tâches critiques (math, logique) |
| Tree of Thoughts | Élevée | 3-8x | +15-30% | Problèmes complexes multi-solutions |
| ReAct | Élevée | 2-5x | +20-40% | Agents autonomes avec outils |
| Prompt Chaining | Moyenne | 1.5-2x | +15-25% | Workflows complexes |
| Constitutional AI | Faible | 1.1x | Sécurité | Applications sensibles |
| Maieutic | Faible | 1.2-1.5x | Personnalisation | Conseil, coaching |
Exercices Pratiques
Exercice 1 : Self-Consistency
Implémentez Self-Consistency (5 samples) pour ce problème :
"Un train part de Paris à 10h à 120 km/h. Un autre part de Lyon (500km)
à 10h30 à 150 km/h vers Paris. À quelle heure se croisent-ils ?"
Attendu : 5 raisonnements CoT → réponse majoritaire + confiance
Exercice 2 : Tree of Thoughts
Utilisez ToT pour :
"Trouver 3 stratégies marketing pour lancer un SaaS B2B à 0€ de budget pub"
Attendu : 3 approches évaluées → développement de la meilleure
Exercice 3 : ReAct Agent
Créez un prompt ReAct pour un agent de voyage avec outils :
search_flights(from, to, date)search_hotels(city, date, budget)get_weather(city, date)
Question : “Planifie un weekend à Barcelone le 15-17 mars pour 600€”
Exercice 4 : Prompt Chaining
Découpez en chain la tâche :
"Créer une landing page HTML/CSS pour une app de méditation (contenu + code)"
Attendu : 5-7 prompts séquentiels (wireframe → copy → HTML → CSS → images)
Exercice 5 : Debugging
Corrigez ce prompt qui produit des réponses incohérentes :
"Tu es un expert en nutrition. Donne des conseils santé basés sur les
dernières études. Sois créatif et original. Ne te base que sur des faits
scientifiques prouvés. Invente des analogies fun."
Problème : Contradictions “créatif/original” vs “faits prouvés”, “invente” vs “scientifique”
✅ Checklist : Quand Utiliser Quelle Technique ?
Self-Consistency
- ✅ Calculs mathématiques/financiers
- ✅ Diagnostic médical/juridique
- ✅ Décisions à fort enjeu
- ❌ Génération créative
- ❌ Budgets serrés
Tree of Thoughts
- ✅ Problèmes avec multiples solutions
- ✅ Planification stratégique
- ✅ Puzzles/jeux logiques
- ❌ Questions factuelles simples
- ❌ Tâches linéaires
ReAct
- ✅ Agents autonomes
- ✅ Recherche + raisonnement
- ✅ Workflows dynamiques
- ❌ Tâches sans actions externes
- ❌ Contraintes de latence strictes
Prompt Chaining
- ✅ Workflows complexes
- ✅ Besoin de debugging
- ✅ Production/qualité critique
- ❌ Prototypes rapides
- ❌ Tâches simples mono-étape
Constitutional AI
- ✅ Applications sensibles (santé, juridique)
- ✅ Chatbots publics
- ✅ Conformité réglementaire
- ❌ Contextes non-sensibles
- ❌ Usage interne uniquement
Maieutic Prompting
- ✅ Conseil personnalisé
- ✅ Coaching/formation
- ✅ Vente B2B
- ❌ Réponses rapides
- ❌ Questions factuelles simples
Ressources et Papers
Papers Fondamentaux
Self-Consistency Wang et al. (2023) - “Self-Consistency Improves Chain of Thought”
Tree of Thoughts Yao et al. (2023) - “Tree of Thoughts: Deliberate Problem Solving”
ReAct Yao et al. (2022) - “ReAct: Synergizing Reasoning and Acting”
Constitutional AI Bai et al. (2022) - “Constitutional AI: Harmlessness from AI Feedback”
Frameworks & Outils
- LangChain : Implémente ReAct, Chaining, Agents
- Guidance (Microsoft) : Constrain LLM outputs
- LMQL : Language Model Query Language
- Promptify : Template library
🎓 Points Clés à Retenir
Self-Consistency : 5-10 réponses → majorité = +10-20% précision (coût 5-10x)
Tree of Thoughts : Explorer plusieurs branches → évaluer → approfondir les meilleures
ReAct : Boucle Thought → Action → Observation → base des agents autonomes
Prompt Chaining : Découper tâches complexes → meilleure qualité + debuggable
Constitutional AI : Principes éthiques → vérification avant chaque réponse
Maieutic : Poser des questions → personnaliser → meilleures solutions
Debugging : Checklist (clarté, contexte, format, exemples, cohérence, tests)
Suite de la Série
Article 4 : Prompting par Cas d’Usage : Templates Copywriting, Code, Data Templates prêts à l’emploi pour les cas d’usage courants
Article 5 : Outils et Frameworks de Prompt Engineering LangChain, testing, versioning, CI/CD pour prompts
Retour : Techniques Fondamentales (Zero-Shot, Few-Shot, CoT)