Aller au contenu principal

Réflexion étendue (Extended Thinking)

Mis à jour le 30 juillet 2026

La réflexion étendue est une fonctionnalité avancée de Claude qui lui accorde du temps pour raisonner sur des problèmes complexes avant de produire sa réponse finale. C’est en quelque sorte un “brouillon” : on peut observer le processus de raisonnement qui mène à la réponse, ce qui apporte de la transparence et améliore souvent la qualité des résultats.

Note importante : La réflexion étendue n’est pas compatible avec certaines autres fonctionnalités, notamment le pré-remplissage des messages et le paramètre de température. Consultez la documentation officielle pour la liste complète des restrictions.

Comment ça fonctionne

Quand la réflexion étendue est activée, la réponse de Claude passe d’un simple bloc de texte à une réponse structurée en deux parties :

  1. Le bloc de réflexion (thinking) : le raisonnement détaillé de Claude
  2. La réponse finale : la réponse proprement dite

Les avantages principaux :

  • Meilleur raisonnement sur les tâches complexes
  • Précision accrue sur les problèmes difficiles
  • Transparence sur le processus de pensée de Claude

Les contreparties :

  • Coût plus élevé (on paie pour les tokens de réflexion)
  • Latence accrue (la réflexion prend du temps)
  • Code plus complexe pour gérer la structure de la réponse

Quand l’utiliser

La décision est simple : utilisez vos évaluations de prompts. Commencez sans réflexion étendue, et si la précision n’atteint pas vos exigences après avoir déjà optimisé votre prompt, alors activez-la. C’est un outil à déployer quand le prompting standard ne suffit pas.

Structure de la réponse et sécurité

Les réponses avec réflexion étendue incluent un système de signature cryptographique. Cette signature garantit que le texte de réflexion n’a pas été modifie. Cela empêche les développeurs de manipuler le raisonnement de Claude, ce qui pourrait potentiellement orienter le modèle dans des directions non sécurisées.

Réflexion masquée (Redacted Thinking)

Il arrive parfois de recevoir un bloc de réflexion masque au lieu d’un texte lisible. Cela se produit quand le processus de réflexion de Claude déclenche les systèmes de sécurité internes. Le contenu masque contient la réflexion réelle sous forme chiffrée, ce qui permet de retransmettre le message complet à Claude dans des conversations futures sans perdre le contexte.

Implémentation

Pour activer la réflexion étendue, il faut ajouter deux paramètres à la fonction d’appel :

def chat(
    messages,
    system=None,
    temperature=1.0,
    stop_sequences=[],
    tools=None,
    thinking=False,        # Active/desactive la reflexion
    thinking_budget=1024   # Budget max de tokens pour la réflexion
):

Le budget de réflexion définit le nombre maximum de tokens que Claude peut utiliser pour raisonner. La valeur minimale est 1024 tokens, et le paramètre max_tokens doit être supérieur au budget de réflexion.

On ajoute la configuration dans les paramètres de l’API :

if thinking:
    params["thinking"] = {
        "type": "enabled",
        "budget": thinking_budget
    }

Puis on appelle avec la réflexion activée :

chat(messages, thinking=True)

Tester les réponses masquees

Pour les tests, on peut forcer Claude à renvoyer un bloc de réflexion masque en envoyant une chaîne de caractères spécifique. Cela permet de s’assurer que l’application gère correctement les réponses masquees sans planter.

Résumé

La réflexion étendue est un outil puissant pour les tâches de raisonnement complexe, mais à utiliser avec discernement vu les implications en coût et en latence. L’approche recommandée :

  1. Commencer avec le prompting standard
  2. Optimiser le prompt à fond
  3. Ajouter la réflexion étendue seulement si nécessaire
Exercice pratique
  1. Implémentez la fonction chat avec le support de la réflexion étendue
  2. Testez avec un problème mathématique complexe (avec et sans réflexion)
  3. Comparez la qualité des réponses et la latence
  4. Implémentez la gestion des blocs de réflexion masques dans votre code
  5. Expérimentez avec différentes valeurs de thinking_budget (1024, 4096, 8192)