Tree of Thoughts, ReAct, Self-Consistency : Techniques Avancées 2025

tl;dr: Découvrez les techniques de pointe du prompt engineering : Self-Consistency (+10-20% précision), Tree of Thoughts (exploration d'arbres de décision), ReAct (raisonnement + action), Prompt Chaining (décomposition modulaire) et Constitutional AI pour un contrôle éthique. Guide complet avec exemples pratiques et debugging.

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.


Exemples visuels de les techniques avancées de prompt engineering pour optimiser les interactions avec les modèles de langage

Pourquoi des Techniques Avancées ?

Limites des Techniques Classiques

ProblèmeTechnique classiqueLimite
Précision insuffisanteCoT simple1 seul chemin de raisonnement = risque d’erreur
Problèmes multi-étapesPrompt uniqueTrop complexe, manque de modularité
Besoin d’outils externesPrompt statiquePas d’interaction avec APIs, bases de données
Contrôle éthiquePas de garde-fousRisque de réponses inappropriées
Débogage difficilePrompt monolithiqueImpossible 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.

💡 Quand utiliser : Self-Consistency coûte 5-10x plus cher mais améliore la précision de 10-20%. Réservez-le aux décisions critiques : diagnostics médicaux, calculs financiers, analyses juridiques où une erreur coûte plus que quelques centimes de tokens.

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 pommesConfiance : 100%

Impact Mesuré

Benchmark (Wang et al., 2023 - “Self-Consistency Improves Chain of Thought Reasoning”)

DatasetCoT classiqueCoT + Self-ConsistencyGain
GSM8K (maths)74.4%84.5%+10.1%
MATH (advanced)42.2%54.3%+12.1%
StrategyQA69.4%77.8%+8.4%
ARC Challenge85.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).

🔎 Tip
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 CaseOutils NécessairesExemple
Research Assistantsearch, wikipedia, arxiv“Résume les dernières avancées en fusion nucléaire”
Data Analystsql_query, pandas, visualization“Analyse les ventes Q4 et identifie tendances”
Code Debuggerrun_code, search_docs, lint“Corrige les erreurs dans ce script Python”
Travel Plannerflights_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.

⚠️ Warning
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èrePrompt UniquePrompt Chaining
Qualité6/109/10
ContrôleFaibleÉlevé
DebuggabilitéDifficileFacile
Latence1x2-5x
Coût tokens1x1.5-2x
Use casePrototypes rapidesProduction, 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 :

  1. Mieux comprendre le besoin
  2. Clarifier les ambiguïtés
  3. 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étriqueSans MaieuticAvec Maieutic
Pertinence6/109/10
Satisfaction utilisateur65%88%
Taux d’implémentation30%72%
Nombre d’échanges1.23.5

Trade-off : Plus d’interactions (latence) mais résultats bien meilleurs.


Debugging de Prompts : Diagnostiquer et Corriger

Problèmes Courants

SymptômeCause ProbableSolution
Réponses vagues/génériquesPrompt trop généralAjouter contexte, exemples, contraintes spécifiques
Hallucinations (inventions)Pas de contrainte de véracitéAjouter “Base-toi uniquement sur…”, demander sources
Format incorrectInstructions flouesFournir template exact (JSON schema, markdown)
IncohérencePrompt contradictoireSimplifier, supprimer ambiguïtés
Réponses trop courtesPas de contrainte de longueurSpécifier “min 300 mots” ou “3-5 paragraphes”
Réponses trop longuesPas de limite“Max 150 mots”, “résumé en 3 bullet points”
BiaisExemples biaisésDiversifier exemples, neutraliser ton
Refus injustifiésFiltre de sécurité trop strictReformuler, 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

TechniqueComplexitéCoût (vs baseline)Gain PrécisionUse Case Principal
Self-ConsistencyMoyenne5-10x+10-20%Tâches critiques (math, logique)
Tree of ThoughtsÉlevée3-8x+15-30%Problèmes complexes multi-solutions
ReActÉlevée2-5x+20-40%Agents autonomes avec outils
Prompt ChainingMoyenne1.5-2x+15-25%Workflows complexes
Constitutional AIFaible1.1xSécuritéApplications sensibles
MaieuticFaible1.2-1.5xPersonnalisationConseil, 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

  1. Self-Consistency Wang et al. (2023) - “Self-Consistency Improves Chain of Thought”

  2. Tree of Thoughts Yao et al. (2023) - “Tree of Thoughts: Deliberate Problem Solving”

  3. ReAct Yao et al. (2022) - “ReAct: Synergizing Reasoning and Acting”

  4. 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

  1. Self-Consistency : 5-10 réponses → majorité = +10-20% précision (coût 5-10x)

  2. Tree of Thoughts : Explorer plusieurs branches → évaluer → approfondir les meilleures

  3. ReAct : Boucle Thought → Action → Observation → base des agents autonomes

  4. Prompt Chaining : Découper tâches complexes → meilleure qualité + debuggable

  5. Constitutional AI : Principes éthiques → vérification avant chaque réponse

  6. Maieutic : Poser des questions → personnaliser → meilleures solutions

  7. 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)